0

多数の .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 には移行したくありません。

ありがとう。ノリス

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コマンドウィンドウを押してから、次のコマンドを入力する必要があるようなものです。

たとえばcd d:\FWTools2.4.7\、デフォルトは通常「c:」であるため、直接動作することはありません。最初に入力するd:必要があり、次のステップでフォルダーに変更しますcd d:\FWTools2.4.7\

于 2013-11-27T14:11:45.100 に答える