2017-11-03 12 views
0

私はosmosisで大OSMファイルからデータを抽出する処理を自動化したいが、私はOSMデータからタイルの作成を自動化するため、このコードスニペットを実行している問題を抱えていますが転送されませんshell=Trueと一緒に試してみましたが、すべての引数を1つの文字列に結合しようとしました。しかし、私はいつもこのエラーを実行します:Pythonのサブプロセスは、引数

Nov 03, 2017 2:26:28 PM org.openstreetmap.osmosis.core.Osmosis main 
SEVERE: Execution aborted. 
org.openstreetmap.osmosis.core.OsmosisRuntimeException: Expected argument 1 to be an option or task name. 
     at org.openstreetmap.osmosis.core.cli.CommandLineParser.parse(CommandLineParser.java:79) 
     at org.openstreetmap.osmosis.core.Osmosis.run(Osmosis.java:74) 
     at org.openstreetmap.osmosis.core.Osmosis.main(Osmosis.java:37) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
     at java.lang.reflect.Method.invoke(Unknown Source) 
     at org.codehaus.plexus.classworlds.launcher.Launcher.launchStandard(Launcher.java:330) 
     at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:238) 
     at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415) 
     at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356) 
     at org.codehaus.classworlds.Launcher.main(Launcher.java:47) 

しかし、Powershellまたはコマンドプロンプトでコマンドを実行すると、それは魔法のように動作します。

.\osmosis.bat --read-pbf .\somefile.osm.pbf --bounding-box top=47 left=7 bottom=46 right=8 --write-pbf someotherfile.osm.pbf 

私はAnaconda 4.3.30でWindows 10 1703 64ビットを実行しています。

+0

echo%1%2 ...を使用して独自の浸透率を作成し、呼び出す方法を確認します。 –

答えて

2

スクリプトとコマンドプロンプトのやりとりの相違点は、osmosis/bin/osmosis.bat.\osmosis.batです。 Popen()への呼び出しにはすでにcwdオプションが含まれているため、ディレクトリを再度指定する必要はありません。つまり、あなたの呼び出しは次のようになります。

proc = subprocess.Popen([ 
    app,         # <== No app_path here 
    "--read-pbf", pbf_file, 
    "--bounding-box", 
    "top=%d" % (tile_lat+1), 
    "left=%d" % (tile_lng), 
    "bottom=%d" % (tile_lat), 
    "right=%d" % (tile_lng+1), 
    "--write-pbf", "someotherfile.osm.pbf" 
    ], cwd=app_path, shell=True)   # <== because of this cwd 
+0

はい、これは修正されました。私はこれを試してみましたが、アプリを 'osmosis.bat'の代わりに'。\ osmosis.bat'に変更しなければなりませんでした。 – omacha

関連する問題