set_mapset.py 2.7 KB

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