【问题标题】:CRSError: Invalid projection: epsg:4326: for geopandasCRSError:无效的投影:epsg:4326:对于geopandas
【发布时间】:2021-05-31 04:19:49
【问题描述】:

我将 anaconda 用于 geopandas。 但是,每次我尝试使用 epsg:4326: 时,都会出错。

CRSError: Invalid projection: epsg:4326: (Internal Proj Error: proj_create: SQLite error on SELECT name, type, coordinate_system_auth_name, coordinate_system_code, datum_auth_name, datum_code, area_of_use_auth_name, area_of_use_code, text_definition, deprecated FROM geodetic_crs WHERE auth_name = ? AND code = ?: no such column: area_of_use_auth_name)

我该如何解决这个问题?

我试过了:

from functools import partial
from pyproj import Proj, transform
proj_4326 = Proj(init="epsg:4326")
proj_3857 = Proj(init="epsg:3857")

我也尝试过重置环境:

conda update anaconda

但他们都给出了相同的 CRSError

我的版本是:

import sys
import pyproj
import geopandas
print(sys.version)
print(pyproj.__version__)
print(geopandas.__version__)
3.8.5 (default, Sep  4 2020, 02:22:02) 
[Clang 10.0.0 ]
2.6.1.post1
0.8.2

我该如何解决这个问题?

【问题讨论】:

  • 你展示的代码只使用了pyproj。我无法在 Python 3.8 上重新安装 pyproj 。你的版本是什么?
  • @SergeBallesta 我正在使用 anaconda 它说;ipython 7.19.0
  • @Lyliie 我在读取 geojson 文件时遇到了同样的错误。如果您找到任何解决方案,请与我分享?

标签: python geopandas epsg


【解决方案1】:

正确的语法如下:

proj_4326 = Proj("epsg:4326")
proj_3857 = Proj("epsg:3857")

【讨论】:

    【解决方案2】:

    在 Windows 10 上,我终于通过安装 geopandas 0.9.0 版而不是默认安装的版本(在 Anaconda 和操作系统中的 pip 上都是 0.6.X)来识别 crs=CRS("epsg:3857)。 我还必须以这种方式在 shapefile 上分配 crs:

    prov_shp=geopandas.read_file(fichier_dist )
    prov_shp.set_crs(epsg=4326, inplace=True)
    

    ...能够从 EPSG:4326 重新投影到 EPSG:3857 :

    crs=CRS("epsg:3857")
    prov_shp = prov_shp.to_crs(crs)
    

    【讨论】:

      【解决方案3】:

      我遇到了同样的问题。经过一番研究,我发现 anaconda 将有一个特定的 geopandas 目录,一旦它在那里寻找 pyproj,它就找不到了,因为在我的情况下,它是用 pip 安装的,因为在 Windows 中安装 geopandas 是一种考验(我通常使用 Linux)。解决方案是使用 conda 删除 geopandas,然后使用 pip 删除 pyproj。在一切都干净之后(尝试 conda list 仔细检查)我只是使用 conda install -c conda-forge geopandas 和瞧! 我决定分享以防有人遇到这种烦恼。没有必要为您的地理数据寻找正确的格式。

      【讨论】:

        【解决方案4】:

        此代码为您提供基本投影,称为 WGS84:

        from pyproj import CRS
        
        crs=CRS('EPSG:4326')
        

        如果您需要 proj4,请执行以下操作:

        from pyproj import CRS
        
        crs=CRS('EPSG:4326').to_proj4()
        

        【讨论】:

        • 请不要只发布代码作为答案,还要解释您的代码的作用以及它如何解决问题的问题。带有解释的答案通常更有帮助、质量更好,并且更有可能吸引投票
        猜你喜欢
        • 2017-07-12
        • 1970-01-01
        • 2020-06-08
        • 1970-01-01
        • 1970-01-01
        • 2019-07-03
        • 1970-01-01
        • 2011-11-26
        • 1970-01-01
        相关资源
        最近更新 更多