0

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

谢谢。诺里斯

4

1 回答 1

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])

也许您可以发布手动操作时的屏幕截图。


要求的解释:

&&操作员暗示以下命令在“下一行”执行。这就像你enter在 cmd 窗口中按下,然后你必须输入下一个命令。

例如cd d:\FWTools2.4.7\,永远不会直接工作,因为默认值通常是“c:”。因此,首先必须输入d:,然后在下一步中更改为您的文件夹cd d:\FWTools2.4.7\

于 2013-11-27T14:11:45.100 回答