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)

我怎么解决这个问题?

我试过了:

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

我该如何解决这个问题?

4

4 回答 4

1

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

于 2022-02-06T15:17:08.947 回答
1

在 Windows 10 上,我终于crs=CRS("epsg:3857)通过安装 geopandas 版本 0.9.0 而不是默认安装的版本(在 Anaconda 和操作系统中的 pip 上都是 0.6.X)来识别。我还必须以这种方式在 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)
于 2021-12-17T15:44:49.607 回答
1

正确的语法如下:

proj_4326 = Proj("epsg:4326")
proj_3857 = Proj("epsg:3857")
于 2021-03-01T18:23:04.420 回答
0

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

from pyproj import CRS

crs=CRS('EPSG:4326')

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

from pyproj import CRS

crs=CRS('EPSG:4326').to_proj4()
于 2021-04-05T08:30:11.680 回答