CRSError。无效的投影:epsg:4326:用于geopandas

3 人关注

我正在使用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)

我怎样才能解决这个问题呢?

I tried:

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

我怎样才能解决这个问题呢?

3 个评论
你展示的代码只使用pyproj。我无法在Python 3.8上重新安装pyproj来重现。你的版本是什么?
@SergeBallesta 我在使用Anaconda,它说;ipython 7.19.0
@Lyliie 我在读取geojson文件时也遇到了同样的错误。如果你找到了解决方法,请与我分享。
python
geopandas
epsg
Lyliie
Lyliie
发布于 2021-03-02
5 个回答
swatchai
swatchai
发布于 2022-04-21
0 人赞同

正确的语法如下。

proj_4326 = Proj("epsg:4326")
proj_3857 = Proj("epsg:3857")
    
Franck Theeten
Franck Theeten
发布于 2022-04-21
0 人赞同

在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)
    
ReinholdN
ReinholdN
发布于 2022-04-21
0 人赞同

我也有同样的问题。经过一番研究,我发现Anaconda会有一个特定的geopandas目录,一旦它在那里寻找pyproj,就找不到了,因为在我的例子中,它是用pip安装的,因为在Windows中安装geopandas是一种折磨(我通常使用Linux)。解决办法是用conda删除geopandas,然后用pip删除pyproj。在一切都干净后(尝试用conda列表来仔细检查),我只需用conda install -c conda-forge geopandas就可以了。 我决定分享一下,以防有人遇到这种烦恼。没有必要为你的地理数据寻找正确的格式。

这应该被标记为最佳解决方案。谢谢
tonysdev
tonysdev
发布于 2022-04-21
0 人赞同

这个代码给你基本的投影,被称为WGS84。

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

if you need proj4, do this:

from pyproj import CRS
crs=CRS('EPSG:4326').to_proj4()
    
请不要只贴出代码作为答案,还要提供一个解释,说明你的代码是做什么的,以及它是如何解决这个问题的。有解释的答案通常更有帮助,质量更好,也更有可能吸引人们的赞许。
MTBoada
MTBoada
发布于 2022-04-21
0 人赞同