我正在尝试使用Matlab向FWTools发送命令,以便投射一堆.shp文件。
我可以从Matlab启动FWTools但我无法弄清楚如何在没有我的交互的情况下发送命令。
到目前为止,FWTools启动并且我的matlab命令窗口和FWTools shell一样。我键入命令,它将运行,但我希望能够在我的.m文件中发送它们。一旦FWTools启动,我的脚本将不会继续下一行代码。
到目前为止我的代码:
cmd = 'ogr2ogr -s_srs "EPSG:4326" -t_srs "EPSG:3006" out_sweref99tm.shp in_wgs84.shp';
system('C:\Windows\system32\cmd.exe \K "d:\FWTools2.4.7\setfw.bat" ')
sprintf('%s',cmd) % try to send cmd to matlab command window aka FWTools
我还尝试将cmd放入我的系统调用中但是返回了一个错误,因为看起来我试图用一个超长字符串调用FWTools :(
cmd = 'ogr2ogr -s_srs "EPSG:4326" -t_srs "EPSG:3006" out_sweref99tm.shp in_wgs84.shp';
system(['C:\Windows\system32\cmd.exe \K "d:\FWTools2.4.7\setfw.bat" ',cmd])
我使用FWTools的原因是我从WGS84投射到SWEREF99TM并且(根据我的理解)通过Matlab的映射工具箱不容易得到最终投影。如果我错了,请纠正我,因为我希望将它保存到Matlab。
如果可能的话,我想留在Matlab而不是转向Python。
感谢。 诺里斯
答案 0 :(得分:1)
C:\Windows\system32\cmd.exe
的呼叫不是必需的。
试试这个:
cmd = 'ogr2ogr -s_srs "EPSG:4326" -t_srs "EPSG:3006" out_sweref99tm.shp in_wgs84.shp';
system(['d: && cd d:\FWTools2.4.7\ && setfw.bat ',cmd])
或者如果您确实需要在第一次通话后传递参数而不是:
system(['d: && cd d:\FWTools2.4.7\ && setfw.bat && ',cmd])
也许您可以发布手动截图时的截图。
要求说明:
&&
运算符意味着“在下一行”执行以下命令。就像你在cmd窗口中按enter
然后你必须输入下一个命令。
例如cd d:\FWTools2.4.7\
永远不会直接工作,因为默认值通常是“c:”。首先,必须输入d:
,然后在下一步中更改为您的文件夹cd d:\FWTools2.4.7\