簡體   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