[GRASS-dev] [GRASS-SVN] r57127 - in grass/trunk/scripts: . g.isis3mt

Yann Chemin ychemin at gmail.com
Sun Jul 14 22:07:01 PDT 2013


might be indeed, we can discuss today and move it there

On 15 July 2013 04:07, Martin Landa <landa.martin at gmail.com> wrote:
> Hi Yann,
>
> don't know, but probably addons would be probably better place for
> this module rather then trunk.
>
> Martin
>
>
> 2013/7/14  <svn_grass at osgeo.org>:
>> Author: ychemin
>> Date: 2013-07-14 09:56:43 -0700 (Sun, 14 Jul 2013)
>> New Revision: 57127
>>
>> Added:
>>    grass/trunk/scripts/g.isis3mt/
>>    grass/trunk/scripts/g.isis3mt/Makefile
>>    grass/trunk/scripts/g.isis3mt/g.isis3mt.html
>>    grass/trunk/scripts/g.isis3mt/g.isis3mt.py
>> Modified:
>>    grass/trunk/scripts/Makefile
>> Log:
>> Generate an ISIS3 map template from actual location
>>
>> Modified: grass/trunk/scripts/Makefile
>> ===================================================================
>> --- grass/trunk/scripts/Makefile        2013-07-14 16:45:55 UTC (rev 57126)
>> +++ grass/trunk/scripts/Makefile        2013-07-14 16:56:43 UTC (rev 57127)
>> @@ -15,6 +15,7 @@
>>         db.test \
>>         g.extension \
>>         g.extension.rebuild.all \
>> +       g.isis3mt \
>>         g.manual \
>>         i.image.mosaic \
>>         i.in.spotvgt \
>>
>> Added: grass/trunk/scripts/g.isis3mt/Makefile
>> ===================================================================
>> --- grass/trunk/scripts/g.isis3mt/Makefile                              (rev 0)
>> +++ grass/trunk/scripts/g.isis3mt/Makefile      2013-07-14 16:56:43 UTC (rev 57127)
>> @@ -0,0 +1,7 @@
>> +MODULE_TOPDIR = ../..
>> +
>> +PGM=g.isis3mt
>> +
>> +include $(MODULE_TOPDIR)/include/Make/Script.make
>> +
>> +default: script
>>
>>
>> Property changes on: grass/trunk/scripts/g.isis3mt/Makefile
>> ___________________________________________________________________
>> Added: svn:mime-type
>>    + text/x-makefile
>> Added: svn:eol-style
>>    + native
>>
>> Added: grass/trunk/scripts/g.isis3mt/g.isis3mt.html
>> ===================================================================
>> --- grass/trunk/scripts/g.isis3mt/g.isis3mt.html                                (rev 0)
>> +++ grass/trunk/scripts/g.isis3mt/g.isis3mt.html        2013-07-14 16:56:43 UTC (rev 57127)
>> @@ -0,0 +1,15 @@
>> +<h2>DESCRIPTION</h2>
>> +
>> +<em>g.isis3mt</em> Generates an ISIS3 map template file according to the
>> + current GRASS projection parameters
>> +
>> +<h2>NOTE</h2>
>> +
>> +The ISIS3 user should use  matchmap=yes in cam2map
>> +
>> +<h2>AUTHOR</h2>
>> +
>> +Alessandro Frigeri, INA, Ispra, Italy
>> +Added to GRASS 7 by Yann Chemin
>> +
>> +<p><i>Last changed: $Date$</i>
>>
>>
>> Property changes on: grass/trunk/scripts/g.isis3mt/g.isis3mt.html
>> ___________________________________________________________________
>> Added: svn:mime-type
>>    + text/html
>> Added: svn:keywords
>>    + Author Date Id
>> Added: svn:eol-style
>>    + native
>>
>> Added: grass/trunk/scripts/g.isis3mt/g.isis3mt.py
>> ===================================================================
>> --- grass/trunk/scripts/g.isis3mt/g.isis3mt.py                          (rev 0)
>> +++ grass/trunk/scripts/g.isis3mt/g.isis3mt.py  2013-07-14 16:56:43 UTC (rev 57127)
>> @@ -0,0 +1,158 @@
>> +#!/usr/bin/env python
>> +#
>> +############################################################################
>> +#
>> +# MODULE:      g.isis3mt
>> +# AUTHOR(S):   Alessandro Frigeri;
>> +# PURPOSE:     Generates an ISIS3 map template file according to the current
>> +#              GRASS projection parameters
>> +# COPYRIGHT:   (C) 2009,2010 by Alessandro Frigeri for the GRASS Development Team
>> +#
>> +#              This program is free software under the GNU General Public
>> +#              License (>=v2). Read the file COPYING that comes with GRASS
>> +#              for details.
>> +# HISTORY:     Apr 15th, 2010: Time for the first public release
>> +#              Sep 15th, 2010: added LatLon Range and mpp/ppd resolution
>> +#                              options
>> +#
>> +#############################################################################
>> +
>> +# TODO
>> +#  Add a note to the user to use  matchmap=yes in cam2map
>> +
>> +#%module
>> +#%  description: Generates an ISIS3 map template file according to the current GRASS coordinate reference system
>> +#%  keywords: generic, projection
>> +#%end
>> +
>> +#%option
>> +#% key: body
>> +#% type: string
>> +#% description: Target planetary body
>> +#% options: MOON,MERCURY,VENUS,MARS,Phobos,Deimos,JUPITER,Amalthea,Io,Europa,Ganymede,Callisto,SATURN,Janus,Epimetheus,Mimas,Enceladus,Tethys,Dione,Rhea,Titan,Hyperion,Iapetus,URANUS,Miranda,Ariel,Umbriel,Titania,Oberon,NEPTUNE
>> +#% required : yes
>> +#%end
>> +
>> +#%option
>> +#% key: out
>> +#% type: string
>> +#% gisprompt: new_file,file,output
>> +#% description: Filename for the ISIS3 maptemplate to be generated
>> +#% required : yes
>> +#%end
>> +
>> +#%option
>> +#% key: outres
>> +#% type: double
>> +#% description: Resolution of the ISIS3 projected data (default is: camera resolution)
>> +#% required : no
>> +#%end
>> +
>> +#%Option
>> +#% key: restype
>> +#% type: string
>> +#% required: no
>> +#% multiple: no
>> +#% options: mpp,ppd
>> +#% description: Resolution type: meters per pixel (mpp) or pixels per degree (ppd)
>> +#% answer: mpp
>> +#%End
>> +
>> +#%flag
>> +#% key: a
>> +#% description: Align ISIS3 data to the extents of the current GRASS region
>> +#%end
>> +
>> +import subprocess,sys,os,platform
>> +import grass.script as grass
>> +from grass.lib import gis as grasslib
>> +from grass.lib import proj as grassproj
>> +from UserDict import *
>> +import re,string
>> +
>> +if "GISBASE" not in os.environ:
>> +    print "You must be in GRASS GIS to run this program."
>> +    sys.exit(1)
>> +
>> +# initialize
>> +grasslib.G_gisinit('')
>> +
>> +
>> +projdict = {'sinu':'Sinusoidal',
>> +            'merc':'Mercator',
>> +            'tmerc':'TransverseMercator',
>> +            'ortho':'Orthographic',
>> +            'stere':'PolarStereographic',
>> +            'cc':'SimpleCylindrical',
>> +            'eqc':'Equirectangular',
>> +            'lcc':'LambertConformal'
>> +           }
>> +
>> +paradict = {'proj' :'ProjectionName',         # Name of the projection
>> +            'lon_0':'CenterLongitude',        # Center Longitude
>> +            'lat_0':'CenterLatitude',         # Center Latitude
>> +            'k':'ScaleFactor',                # Scale Factor
>> +            'lat_1':'FirstStandardParallel',  # First standard parallel
>> +            'lat_2':'SecondStandardParallel', # Second standard parallel
>> +            'a':'EquatorialRadius',           # semi major axis
>> +            'b':'PolarRadius',                # semi minor axis
>> +            'to_meter':None,                  # no map on isis3
>> +            'y_0':None,                      # false northing
>> +            'x_0':None,                       # false easting
>> +           }
>> +
>> +class IsisMapTemplate(IterableUserDict):
>> +   def __init__(self,isisdict):
>> +      UserDict.__init__(self)
>> +      if isisdict is not None:
>> +          UserDict.__init__(self,isisdict)
>> +      self['LatitudeType'] = 'Planetographic'
>> +      self['LongitudeDirection'] = 'PositiveEast'
>> +      self['LongitudeDomain'] = '180'
>> +
>> +   def dump(self,out):
>> +       out.write("Group = Mapping\n")
>> +       keys = self.keys()
>> +       for k in self.keys():
>> +           if k != None:
>> +              myk = string.rjust(k, 30)
>> +              myv = string.ljust(self[k], 20)
>> +              out.write("%s = %s\n"%(myk,myv))
>> +       out.write("End_Group\nEnd")
>> +
>> +
>> +def main():
>> +    isis3 = {}
>> +    outfile = options['out']
>> +    body = options['body']
>> +    pj = grasslib.G_get_projinfo()
>> +    if options['outres'] and options['restype']=='mpp' : isis3['PixelResolution'] = "%f <meters>"%float(options['outres'])
>> +    if options['outres'] and options['restype']=='ppd' : isis3['Scale'] = "%f <pixel/degree>"%float(options['outres'])
>> +    isis3['TargetName'] = body
>> +    if flags['a']:
>> +        ret = grass.start_command("g.region", flags="gl", stdout = subprocess.PIPE)
>> +        exec(ret.communicate()[0])
>> +        isis3['MinimumLatitude'] = "%f"%min(se_lat,sw_lat)
>> +        isis3['MaximumLatitude'] = "%f"%max(ne_lat,nw_lat)
>> +        isis3['MinimumLongitude'] = "%f"%min(sw_long,nw_long)
>> +        isis3['MaximumLongitude'] = "%f"%max(se_long,ne_long)
>> +
>> +    for p in paradict.keys():
>> +        if grasslib.G_find_key_value(p, pj):
>> +            k = paradict[p]
>> +            v = grasslib.G_find_key_value(p, pj)
>> +            if p == 'a' or p == 'b': v = v + ' <meters>'
>> +            if p == 'proj' and v == 'll': sys.exit("This GRASS location is in LatLong, no cartographic projection is set.\nExiting...")
>> +            if p == 'proj':  k,v = 'ProjectionName', projdict[v]
>> +            isis3[k] = v
>> +    isis3mt =  IsisMapTemplate(isis3)
>> +    of = open(outfile,'w')
>> +    isis3mt.dump(of)
>> +    sys.stderr.write("Done writing %s ISIS3 MapTemplate file\n"%outfile)
>> +
>> +if __name__ == "__main__":
>> +    options, flags = grass.parser()
>> +    main()
>> +
>> +
>> +
>>
>>
>> Property changes on: grass/trunk/scripts/g.isis3mt/g.isis3mt.py
>> ___________________________________________________________________
>> Added: svn:executable
>>    + *
>> Added: svn:mime-type
>>    + text/x-python
>> Added: svn:eol-style
>>    + native
>>
>> _______________________________________________
>> grass-commit mailing list
>> grass-commit at lists.osgeo.org
>> http://lists.osgeo.org/mailman/listinfo/grass-commit
>
>
>
> --
> Martin Landa <landa.martin gmail.com> * http://geo.fsv.cvut.cz/~landa



-- 
----


More information about the grass-dev mailing list