[GRASS-dev] [GRASS GIS] #1964: m.proj on wingrass: protect g.proj's path name to the grid file
GRASS GIS
trac at osgeo.org
Sun May 5 01:58:52 PDT 2013
#1964: m.proj on wingrass: protect g.proj's path name to the grid file
---------------------------------------------+------------------------------
Reporter: hamish | Owner: grass-dev@…
Type: defect | Status: new
Priority: major | Milestone: 6.4.4
Component: Shell Scripts | Version: svn-releasebranch64
Keywords: wingrass, m.proj, cs2cs, g.proj | Platform: MSWindows XP
Cpu: x86-32 |
---------------------------------------------+------------------------------
Hi,
this has been a known thing for a while, but I think it deserves its own
ticket. e.g. see #820's comment 28.
The m.proj shell script uses cs2cs to do the coord sys transform on the
list of points. Unfortunately due to the way it parses its command line
args, it's impossible to get cs2cs to work with quoting, so a +nadgrids=
with spaces in the /path/to/grid/file side gets broken.
To add to this, msys helpfully decides to translate the string-which-
looks-like-a-path and breaks it even further.
e.g. on wingrass 6.4.3svn make a new location, epsg 27200, for the datum
transform option choose the grid file. (if the loc'n wizard is broken you
may need to use g.setproj from the text startup with proj=nzmg
datum=nzgd49)
that gets you this PROJ_INFO file:
{{{
name: New Zealand Map Grid
proj: nzmg
lat_0: -41
lon_0: 173
x_0: 2510000
y_0: 6023150
no_defs: defined
datum: nzgd49
ellps: international
nadgrids: nzgd2kgrid0005.gsb
}}}
and g.proj translates to these proj4 terms:
{{{
GRASS 6.4> g.proj -j
+proj=nzmg
+lat_0=-41
+lon_0=173
+x_0=2510000
+y_0=6023150
+no_defs
+a=6378388
+rf=297
+nadgrids=c:/Program Files/GRASS GIS 6.4.3svn/etc/nad/nzgd2kgrid0005.gsb
+to_meter=1
}}}
m.proj does this to that:
{{{
if [ $GIS_FLAG_I -eq 1 ] ; then
OUT_PROJ=`g.proj -j | (
OUT_PROJ=
while read line ; do
OUT_PROJ="$OUT_PROJ '$line'"
done
echo "$OUT_PROJ"
)`
fi
}}}
msys sees a "/" and decides to act, e.g.:
{{{
GRASS 6.4> g.message "/"
C:/PROGRA~1/GRASSG~1.3SV/msys
}}}
and the broken result of all this is:
{{{
GRASS 6.4> echo "167 -45" | m.proj -i
input parameters=[+proj=longlat +datum=WGS84]
output parameters=[+proj=nzmg +lat_0=-41 +lon_0=173 +x_0=2510000
+y_0=6023150 +no_defs +a=6378388 +rf=297
+nadgrids=c;C:\PROGRA~1\GRASSG~1.3SV\msys\Program Files\GRASS GIS
6.4.3svn\etc\nad\nzgd2kgrid0005.gsb +to_meter=1]
Rel. 4.8.0, 6 March 2012
<cs2cs.exe>:
Sys errno: 2: No such file or directory
Files/GRASS
Rel. 4.8.0, 6 March 2012
<cs2cs.exe>:
Sys errno: 2: No such file or directory
GIS
Rel. 4.8.0, 6 March 2012
<cs2cs.exe>:
Sys errno: 2: No such file or directory
6.4.3svn/etc/nad/nzgd2kgrid0005.gsb
}}}
perhaps the cygpath util could help?
http://cygwin-lite.sourceforge.net/html/cygpath.html
or a couple of .bat file one-liners to make short 8.3 space-free path
names on Windows:
{{{
for /d %I in (*) do @echo %~sI
or
for %I in (.) do echo %~sI
}}}
Hamish
--
Ticket URL: <https://trac.osgeo.org/grass/ticket/1964>
GRASS GIS <http://grass.osgeo.org>
More information about the grass-dev
mailing list