作者MAGICXX (逢甲阿法)
看板Python
标题[问题] subprocess.call with gdalwrap
时间Mon May 6 11:02:25 2013
大家好 我又来麻烦大家了
我现在想要用subprocess.call来用gdal里面的gdalwrap来进行
shapefile 切 raster的方法(在Qgis 1.8.0 的python主控台下)
我先用raster→projections→wrap(reproject)产生下面command_line
-----------------------------------------------------------------------------
gdalwarp -t_srs "+proj=tmerc +lat_0=0 +lon_0=121 +k=0.9999 +x_0=250000 +y_0=0
+ellps=GRS80 +units=m +no_defs" -dstnodata 0 -q -cutline "C:/Program Files
(x86)/Quantum GIS Wroclaw/test/area.shp"
-dstalpha -of GTiff C:/Program Files
(x86)/Quantum GIS Wroclaw/test/wrapM_0.tif "C:/Program Files
(x86)/Quantum GIS Wroclaw/test/wrap"
------------------------------------------------------------------------------
其中 gdalwrap 是他的command名称
下面是我的code
=============================================================================
#先加入gdal,subprocess.call两个函式
import gdal
from subprocess import call
#将变数转换成代号,再输入会比较清楚
crs='"+proj=tmerc +lat_0=0 +lon_0=121 +k=0.9999 +x_0=250000 +y_0=0
+ellps=GRS80 +units=m +no_defs"'
mask='"C:/Program Files(x86)/Quantum GIS Wroclaw/test/area.shp"'
input='C:/Program Files(x86)/Quantum GIS Wroclaw/test/wrapM_0.tif'
output='"C:/Program Files(x86)/Quantum GIS Wroclaw/test/wrap"'
#将上面的command_line用代号代换之後执行call
call(gdalwarp, -t_srs crs -dstnodata 0 -q -cutline msak -dstalpha -of GTiff
input output)
=============================================================================
然後会出现下面的error
=============================================================================
File "<input>", line 1
call(gdalwarp, -t_srs crs -dstnodata 0 -q -cutline msak -dstalpha -of
GTiff input output)
^
SyntaxError: invalid syntax
=============================================================================
然後如果我的code用原本的command_line的话
也是会在同样的地方发生错误
请问有用过的前辈知道大概哪边错了吗?
fixed issue
=============================================================================
#将call函式改成这样 就可以用了
call('gdalwarp -t_srs ' + crs + ' -dstnodata 0 -q -cutline ' + mask + '
-dstalpha -of GTIFF ' + input + ' ' + output, shell=True)
#或者这样也可以
call(['gdalwarp', '-t_srs ' + crs, '-dstnodata 0', '-q', '-cutline ' + mask,
'-dstalpha', '-of GTIFF', input, output])
=============================================================================
--
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.63.202
1F:推 os653:你参数给的方法好诡异,举例来说,ping ptt.cc应该写成 05/06 19:30
2F:→ os653:subprocess.call(["ping", "ptt.cc"]) 05/06 19:32
3F:→ os653:你写成 05/06 19:41
4F:→ os653:subprocess.call('ping', ptt.cc) 的样子 05/06 19:44
5F:→ MAGICXX:喔喔~@@ 原来是我参数给错方法了吗!?囧 05/06 20:50
※ 编辑: MAGICXX 来自: 140.112.63.202 (05/08 11:03)