通过Matlab向FWTools发送命令?

时间:2013-11-27 14:04:00

标签: matlab map-projections

我正在尝试使用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。

感谢。 诺里斯

1 个答案:

答案 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\