set_mapset.py 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. # -*- coding: utf-8 -*-
  2. """
  3. Created on Thu Aug 23 11:07:38 2012
  4. @author: pietro
  5. """
  6. from __future__ import (nested_scopes, generators, division, absolute_import,
  7. with_statement, print_function, unicode_literals)
  8. import os
  9. import subprocess
  10. import optparse
  11. from grass.script import core as grasscore
  12. def read_gisrc(gisrcpath):
  13. gisrc = open(gisrcpath, 'r')
  14. diz = {}
  15. for row in gisrc:
  16. key, val = row.split(':')
  17. diz[key.strip()] = val.strip()
  18. return diz
  19. def main():
  20. # default option
  21. gisrc = read_gisrc(os.environ['GISRC'])
  22. user = os.environ['USER']
  23. # start optparse
  24. usage = "usage: %prog [options]"
  25. parser = optparse.OptionParser(usage=usage)
  26. parser.add_option("-U", "--user", dest="user", default=user,
  27. help="PostgreSQL user [default=%default]")
  28. parser.add_option("-P", "--password", dest="passwd", default=None,
  29. help="PostgreSQL password for user [default=%default]")
  30. parser.add_option("-D", "--database", dest="db", default='pygrassdb_doctest',
  31. help="PostgreSQL database name [default=%default]")
  32. (opts, args) = parser.parse_args()
  33. #
  34. # Create DB
  35. #
  36. print("\n\nCreate a new DB: %s...\n" % opts.db)
  37. createdb = ['createdb', '--encoding=UTF-8', '--owner=%s' % opts.user,
  38. '--host=localhost', '--username=%s' % opts.user, opts.db]
  39. if opts.passwd:
  40. print(opts.passwd)
  41. createdb.append("--password=%s" % opts.passwd)
  42. else:
  43. createdb.append("--no-password")
  44. subprocess.Popen(createdb)
  45. #
  46. # set postgreSQL
  47. #
  48. print("\n\nSet Postgres connection...\n")
  49. grasscore.run_command('db.connect', driver='pg',
  50. database='host=localhost,dbname=%s' % opts.db)
  51. grasscore.run_command('db.login', user=opts.user)
  52. print("\n\nCopy the map from PERMANENT to user1...\n")
  53. grasscore.run_command('g.copy',
  54. vector="boundary_municp@PERMANENT,boundary_municp_pg",
  55. overwrite=True)
  56. print("\n\nBuild topology...\n")
  57. grasscore.run_command('v.build', map='boundary_municp_pg', overwrite=True)
  58. #
  59. # set sqlite
  60. #
  61. db = [gisrc['GISDBASE'], gisrc['LOCATION_NAME'], gisrc['MAPSET'], 'sqlite.db']
  62. print("\n\nSet Sqlite connection...\n")
  63. grasscore.run_command('db.connect', driver='sqlite',
  64. database=os.path.join(db))
  65. print("\n\nCopy the map from PERMANENT to user1...\n")
  66. grasscore.run_command('g.copy',
  67. vector="boundary_municp@PERMANENT,boundary_municp_sqlite",
  68. overwrite=True)
  69. print("\n\nBuild topology...\n")
  70. grasscore.run_command('v.build', map='boundary_municp_sqlite', overwrite=True)
  71. if __name__ == "__main__":
  72. main()