2013-11-27 192 views
0

我正在尝试使用Matlab将命令发送到FWTools以便投影一堆.shp文件。通过Matlab发送命令给FWTools?

我能够从Matlab启动FWTools,但我无法弄清楚如何在没有我的交互的情况下发送命令。

到目前为止,FWTools启动,我的matlab命令窗口和FWTools外壳一样。我键入命令,它会运行,但我想能够在我的.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。

谢谢。 Norris

回答

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\