GDAL 3.1.2 / PROJ 6.2.1 / GCC 10.2 无法处理形状文件

Posted

技术标签:

【中文标题】GDAL 3.1.2 / PROJ 6.2.1 / GCC 10.2 无法处理形状文件【英文标题】:GDAL 3.1.2 / PROJ 6.2.1 / GCC 10.2 Unable to handle Shape File 【发布时间】:2021-04-05 20:15:47 【问题描述】:

总体错误:gdal_polygonize.py 失败并显示“无法猜测驱动程序”我在这里不知所措,我一直在玩依赖项和库之类的东西,但我无处可去。我相信错误是编译没有在形状文件支持中构建,但默认情况下我不明白。

详情

我正在使用 GCC 10.2 编译器编译 GCC 10.2(从源代码)和 GDAL 的所有依赖项。在运行时,当使用 gdal_polygonize.py 读取 TIFF 文件以转换为 SHP 文件时,我无法确定类型。正常的 GDAL 命令似乎可以正常完成,例如 gdalinfo。

我弄乱了 python gdal_polygonize 并看到它正在寻找驱动程序。不过,我没有看到用于形状文件的文件。

我也在从源代码编译 Python3.8.8,它工作正常。我也试过用 yum 安装亚马逊 3.8.5 版,没有区别。

运行时报告的错误

Traceback(最近一次调用最后一次):文件 “/usr/bin/gdal_polygonize.py”,第 163 行,在 frmt = GetOutputDriverFor(dst_filename) 文件“/usr/bin/gdal_polygonize.py”,第 85 行,在 GetOutputDriverFor 引发异常(“无法猜测 %s 的驱动程序”% 文件名)异常:无法猜测 ./test.shp 的驱动程序

输入是:test.TIF,它存在并从 gdalinfo 报告正常

GDAL 编译(完成无错误)

./configure \ --prefix=/usr \ --with-proj=/usr \ LDFLAGS="-L/usr/lib -lz -lopenjp2 -ltiff" \ CXXFLAGS="-Wall -std=c++14" \ --with-threads \ --with-hide-internal-symbols \ --with-libtiff \ --with-geotiff=internal --with-rename-internal-libgeotiff-symbols \ --with-rename-internal-shapelib-symbols=yes \ --with-geos \ --with-curl \ --with-zstd \ --with-openjpeg \ --with-xerces-c \ --with- libdeflate=是\--with-liblzma=是\--with-cpp14 --with-python=/usr/bin/python3.8 \ OPENJPEG_CFLAGS="-lopenjp2" && make -j 32 && make install

构建时的 GDAL 报告:

您可以看到它没有在支持的文件中显示形状文件。

杂项。 gdal 格式: aaigrid adrg aigrid airsar arg blx bmp bsb cals ceos ceos2 coasp cosar ctg dimap dted e00grid elas 设想 ers fit gff gsg gxf hf2 idrisi ignfheightasciigrid ilwis ingr iris iso8211 jaxapalsar jdem kmlsuperoverlay l1b nitrmfwood pd mrf msgn ngsgeroid raw rs2 safe saga sdts sentinel2 sgi sigdem srtmhgt terragen til tsx usgsdem xpm xyz zmap rik ozi grib eeda plmosaic rda wcs wms wmts daas rasterlite mbtiles pdf 禁用 gdal 格式: 杂项ogr 格式: aeronavfaa arcgen avc bna cad csv dgn dxf edigeo flatgeobuf geoconcept geoss gml gmt gpsbabel gpx gtm htf jml mapml mvt ntf openair openfilegdb pgdump rec s57 segukooa segy selafin shape sua svg sxf tiger vdv wasp xplane xplane grisi pds sdts amnas s carto cloudant couchdb csw elastic ngw plscenes wfs gpkg vfk osm

【问题讨论】:

【参考方案1】:

好吧,我终于偶然发现了这个。

当我编译 gdal 时,我使用了以下命令。

make -j 32 CXXFLAGS="-O3"

不管什么原因,它都不喜欢这样。

make -j 32

没有问题。我猜 C++ opt 会导致问题。

【讨论】:

以上是关于GDAL 3.1.2 / PROJ 6.2.1 / GCC 10.2 无法处理形状文件的主要内容,如果未能解决你的问题,请参考以下文章

text 在个人帐户中编译群集上的proj和gdal

VS2022编译GDAL库报错: fatal error U1050: PROJ_INCLUDE should be defined. PROJ >= 6 is a required depende

VS2022编译GDAL库报错: fatal error U1050: PROJ_INCLUDE should be defined. PROJ >= 6 is a required depende

gdal3.1.0+VS2017+geos+kml编译总结

linux下编译GDAL3.x(集成Proj和Geos等)

使用nmake编译Gdal源代码(Win10+VS2022)