我试图运行一个Docker容器,其中包含几个按顺序执行的Python脚本,包括一个将UTM坐标转换为其纬度/经度等效值的脚本。当作为独立脚本运行时(例如在Spyder环境中),该脚本可以工作,但当在docker容器中执行相同的脚本时,我会出错。以下是检索EPSG 3857和EPSG 4326投影的脚本片段:
import glob
from osgeo import gdal, osr, ogr
from pyproj import Proj, transform
for file in glob.glob("*.tif"):
dem = gdal.Open(file)
epsg_zone='EPSG:'+ osr.SpatialReference(dem.GetProjection()).GetAttrValue("PROJCS|AUTHORITY", 1))
P3857 = Proj(init=epsg_zone)
P4326 = Proj(init='epsg:4326')
我的docker容器是通过安装GDAL v3构建的。0.2和pyproj v.3.0.0。post1和其他图书馆。然而,当启动这个特定脚本时,当处理到达“P3857=Proj(init=epsg_zone)”的线段时,我遇到了一个错误:
File "pyproj/_crs.pyx", line 2302, in pyproj._crs._CRS.__init__
pyproj.exceptions.CRSError: Invalid projection: +init=epsg:None +type=crs: (Internal Proj
Error: proj_create: crs not found)
我进一步指出了另一个关于如何阅读GeoTIFF的问题。当我为“dem.GetProjection()”运行打印语句以在docker容器中运行脚本时,它会返回一个空字符串,而作为独立工具运行时,它会返回完整的投影和坐标参考系信息。它具体读取dem对象(打印(dem)),如下所示:
osgeo.gdal.Dataset; proxy of <Swig Object of type 'GDALDatasetShadow *' at 0x7f5e48651120>
我不明白为什么脚本在Spyder环境中作为独立脚本运行良好,但我从Docker容器中得到了这些错误。非常感谢您的帮助!