#!/usr/bin/env python3 ############################################################################ # # MODULE: Correcting distortions of a scanned photo (modified from GCP Manager) # AUTHOR(S): Yann modified the code (was Markus Metz for the GCP Manager) # PURPOSE: Takes a scanned photo and fits fiducial points to known geometry # COPYRIGHT: (C) 2012-2017 by Markus Metz, and the GRASS Development Team # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # ############################################################################ #%module #% description: Corrects scanning distortions of a paper photo. #% keyword: imagery #% keyword: GUI #% keyword: aerial #% keyword: photo #% keyword: georectification #% keyword: geometry #% keyword: GCP #%end #%option G_OPT_I_GROUP #% key: group #% required: yes #%end #%option G_OPT_R_INPUT #% key: raster #% required: yes #%end #%option #% key: camera #% type: string #% label: The name of the camera (generated in i.ortho.camera) #% description: The name of the camera (generated in i.ortho.camera) #% required: yes #%end #%option #% key: order #% type: string #% label: The rectification order (no of Fiducial=4 -> order=1, no of Fiducial=8 -> order=2) #% description: The rectification order (no of Fiducial=4 -> order=1, no of Fiducial=8 -> order=2) #% required: yes #% answer: 1 #%end #%option #% key: extension #% type: string #% label: The name of the output files extension (used in i.rectify) #% description: The name of the output files extension (used in i.rectify) #% required: yes #% answer: _ip2i_out #%end """ Module to run GCP management tool as stadalone application. @author Vaclav Petras (standalone module) """ import os import grass.script as gscript def main(): """Sets the GRASS display driver """ options, flags = gscript.parser() import wx from grass.script.setup import set_gui_path set_gui_path() from core.settings import UserSettings from core.giface import StandaloneGrassInterface from photo2image.ip2i_manager import GCPWizard driver = UserSettings.Get(group='display', key='driver', subkey='type') if driver == 'png': os.environ['GRASS_RENDER_IMMEDIATE'] = 'png' else: os.environ['GRASS_RENDER_IMMEDIATE'] = 'cairo' if options['group']: group = options['group'] else: gscript.fatal(_("Please provide a group name to process")) if options['raster']: raster = options['raster'] else: gscript.fatal(_("Please provide a raster map name to process")) if options['camera']: camera = options['camera'] else: gscript.fatal(_("Please provide a camera name (generated by i.ortho.camera)")) if options['order']: order = options['order'] else: gscript.fatal(_("Please provive an order value (1 if 4 Fiducials, 2 if 8 Fiducials)")) if options['extension']: extension = options['extension'] else: gscript.fatal(_("Please provive an output files extension (used by i.rectify)")) app = wx.App() wizard = GCPWizard(parent=None, giface=StandaloneGrassInterface(), group=group, raster=raster, raster1=raster, camera=camera, order=order, extension=extension) app.MainLoop() if __name__ == '__main__': main()