![](/img/trans.png)
[英]python - ModuleNotFoundError : No module named 'pyproj.crs'
[英]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.