繁体   English   中英

pyproj“找不到crs”(GDAL/Docker)-Python

[英]pyproj "crs not found" (GDAL/Docker) - Python

我正在尝试运行一个 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 object (print(dem)) 如下:

osgeo.gdal.Dataset; proxy of <Swig Object of type 'GDALDatasetShadow *' at 0x7f5e48651120>

我很困惑为什么脚本在 Spyder 环境中作为独立的运行良好,但我从 Docker 容器中得到这些错误。 非常感谢任何帮助!

GDAL 依赖于一个充满数据文件的目录来完成它的工作。 可能是这个数据目录没有复制到容器中,或者容器内的 GDAL 搜索路径与安装位置不匹配。

GDAL 库将使用环境变量 GDAL_DATA 来查找数据目录。 首先,在容器中找到数据(要搜索的一个可能文件是epsg.wkt )。 如果它不存在,请复制它。 然后在启动软件之前在环境中的某处设置 GDAL_DATA

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM