社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

pyproj“未找到crs”(Docker)-Python

mdl518 • 3 年前 • 1322 次点击  

我试图运行一个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容器中得到了这些错误。非常感谢您的帮助!

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/130029
 
1322 次点击  
文章 [ 1 ]  |  最新文章 3 年前
Peter
Reply   •   1 楼
Peter    3 年前

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

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