g.gui.iclass.py 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. #!/usr/bin/env python
  2. ############################################################################
  3. #
  4. # MODULE: g.gui.iclass
  5. # AUTHOR(S): Anna Kratochvilova, Vaclav Petras
  6. # PURPOSE: The Map Swipe is a wxGUI component which allows the user to
  7. # interactively compare two maps
  8. # COPYRIGHT: (C) 2012-2013 by Anna Kratochvilova, and the GRASS Development Team
  9. #
  10. # This program is free software; you can redistribute it and/or modify
  11. # it under the terms of the GNU General Public License as published by
  12. # the Free Software Foundation; either version 2 of the License, or
  13. # (at your option) any later version.
  14. #
  15. # This program is distributed in the hope that it will be useful,
  16. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  17. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  18. # GNU General Public License for more details.
  19. #
  20. ############################################################################
  21. #%module
  22. #% label: Tool for supervised classification of imagery data.
  23. #% description: Generates spectral signatures for an image by allowing the user to outline regions of interest.
  24. #% keyword: general
  25. #% keyword: GUI
  26. #% keyword: classification
  27. #% keyword: supervised classification
  28. #% keyword: signatures
  29. #%end
  30. #%flag
  31. #% key: m
  32. #% description: Maximize window
  33. #%end
  34. #%option G_OPT_I_GROUP
  35. #% required: no
  36. #%end
  37. #%option G_OPT_I_SUBGROUP
  38. #% required: no
  39. #%end
  40. #%option G_OPT_R_MAP
  41. #% description: Name of raster map to load
  42. #% required: no
  43. #%end
  44. #%option G_OPT_V_MAP
  45. #% key: trainingmap
  46. #% label: Ground truth training map to load
  47. #% description:
  48. #% required: no
  49. #%end
  50. import os
  51. import wx
  52. import grass.script as grass
  53. from core.settings import UserSettings
  54. from core.globalvar import CheckWxVersion
  55. from core.giface import StandaloneGrassInterface
  56. from core.utils import _, GuiModuleMain
  57. from iclass.frame import IClassMapFrame
  58. def main():
  59. group_name = subgroup_name = map_name = trainingmap_name = None
  60. if options['group']:
  61. if not options['subgroup']:
  62. grass.fatal(_("Name of subgroup required"))
  63. group_name = grass.find_file(name = options['group'], element = 'group')['name']
  64. if not group_name:
  65. grass.fatal(_("Group <%s> not found") % options['group'])
  66. if options['subgroup'] not in grass.read_command('i.group', group = group_name, flags = 'sg').splitlines():
  67. grass.fatal(_("Subgroup <%s> not found") % options['subgroup'])
  68. subgroup_name = options['subgroup']
  69. if options['map']:
  70. map_name = grass.find_file(name = options['map'], element = 'cell')['fullname']
  71. if not map_name:
  72. grass.fatal(_("Raster map <%s> not found") % options['map'])
  73. if options['trainingmap']:
  74. trainingmap_name = grass.find_file(name = options['trainingmap'], element = 'vector')['fullname']
  75. if not trainingmap_name:
  76. grass.fatal(_("Vector map <%s> not found") % options['trainingmap'])
  77. # define display driver
  78. driver = UserSettings.Get(group = 'display', key = 'driver', subkey = 'type')
  79. if driver == 'png':
  80. os.environ['GRASS_RENDER_IMMEDIATE'] = 'png'
  81. else:
  82. os.environ['GRASS_RENDER_IMMEDIATE'] = 'cairo'
  83. # launch application
  84. app = wx.App()
  85. if not CheckWxVersion([2, 9]):
  86. wx.InitAllImageHandlers()
  87. # show main frame
  88. giface = StandaloneGrassInterface()
  89. frame = IClassMapFrame(parent = None, giface = giface)
  90. if not flags['m']:
  91. frame.CenterOnScreen()
  92. if group_name:
  93. frame.SetGroup(group_name, subgroup_name)
  94. if map_name:
  95. giface.WriteLog(_("Loading raster map <%s>...") % map_name)
  96. frame.trainingMapManager.AddLayer(map_name)
  97. if trainingmap_name:
  98. giface.WriteLog(_("Loading training map <%s>...") % trainingmap_name)
  99. frame.ImportAreas(trainingmap_name)
  100. frame.Show()
  101. if flags['m']:
  102. frame.Maximize()
  103. app.MainLoop()
  104. if __name__ == '__main__':
  105. grass.set_raise_on_error(False)
  106. options, flags = grass.parser()
  107. GuiModuleMain(main)