2013-11-27 130 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\