set_mapset.py 2.8 KB

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