我正在尝试编写一个脚本来创建对 WFS 服务的多个 ogr2ogr 调用(在循环中)。出于某种原因,我不能使用 osgeo 库(它是一台工作计算机,访问权限有限..),所以我想我会试试 Subprocess 库。
到目前为止,我的过程是:
- 打开 OSGeo4W 外壳
- 将字符串从脚本传输到 shell 命令行
- 循环多个 ogr2ogr 调用
代码:
import subprocess
p = subprocess.Popen(r'C:\Program Files\QGIS 2.18\OSGeo4W.bat',
stdout=subprocess.PIPE, stdin=subprocess.PIPE)
call = 'ogr2ogr -f "CSV" "folder_on_pc" WFS:"dbname" -sql "SELECT * from
specific_layer where attribute>=20180311 ORDER BY attribute"'
subprocess.check_call(call, shell=True)
output = p.communicate(call)[0]
我知道 ogr2ogr 调用有效,但似乎无法让命令行“输入”。如果这是一个完全错误的方法,请告诉我。我感谢所有的帮助。