set_mapset.py 2.8 KB

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