运行gdal_polygonize.py未生成输出文件问题求助
解决方案
修正路径转义问题:Windows下字符串中的反斜杠
\会被Python解析为转义字符,导致实际路径错误。把路径中的\改成\\,或者用原始字符串(在引号前加r)。显式调用OSGeo4W的Python解释器:gdal_polygonize.py是依赖GDAL库的Python脚本,必须用OSGeo4W自带的Python执行,否则会因缺少依赖静默失败。OSGeo4W的Python一般在
C:\OSGeo4W\bin\python.exe路径下。调整命令参数顺序:按照gdal_polygonize.py的正确语法,
-f选项需放在输入文件之前,参数顺序错误会导致命令不生效。捕获命令输出排查问题:用
subprocess.run()代替subprocess.call(),捕获标准输出和错误输出,能看到命令执行的具体报错信息。
修改后的代码示例:
import subprocess # 4- CONVERT RASTER DATA TO VECTOR input_layer = "raster.tif" output = "shapefile.shp" # 用原始字符串处理路径,避免转义问题 gdal_py_path = r"C:\OSGeo4W\apps\gdal\share\bash-completion\completions\gdal_polygonize.py" python_path = r"C:\OSGeo4W\bin\python.exe" # 构造正确的命令 cmd = [python_path, gdal_py_path, "-f", "ESRI Shapefile", input_layer, output] try: # 捕获输出,查看执行情况 result = subprocess.run(cmd, check=True, capture_output=True, text=True) print("命令执行成功:", result.stdout) except subprocess.CalledProcessError as e: print("命令执行失败,错误信息:") print("Stderr:", e.stderr) print("Stdout:", e.stdout)
另外,可直接在OSGeo4W Shell中手动执行命令,验证是否能生成shapefile:
python "C:\OSGeo4W\apps\gdal\share\bash-completion\completions\gdal_polygonize.py" -f "ESRI Shapefile" raster.tif shapefile.shp
如果手动执行也失败,说明可能是GDAL配置问题,或者栅格文件本身有异常(比如全是NoData值,无可用矢量化的像素)。
内容的提问来源于stack exchange,提问作者eagu_999
相关产品推荐
相关产品推荐

