15

我正在尝试自己解决我的问题,但我不能,我正在尝试以您可以想象的每种格式运行此代码,并且在 ArcGIS pro 软件中它是相同的我在任何其他中都找不到此错误消息问题。从类似的问题来看,似乎某些数据文件可能丢失了?

import geopandas as gpd
import json
import numpy as np
from shapely.geometry import LineString, Point, box
import ast
from pyproj import Proj
paths = road_features.SHAPE.map(lambda x: np.array(ast.literal_eval(x)["paths"][0]))
pathLineStrings = paths.map(LineString)
gdf = gpd.GeoDataFrame(road_features,geometry=pathLineStrings)
#gdf.crs = {'init': 'epsg:3857'}
gdf.crs = {'init': 'epsg:4326'}
gdf = gdf.to_crs({'init': 'epsg:4326'})

我得到这个错误

RuntimeError: b'no arguments in initialization list'

我也在 arcgis pro 中尝试过,我得到了同样的结果

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\Lib\site-packages\geopandas\geodataframe.py", line 443, in to_crs
    geom = df.geometry.to_crs(crs=crs, epsg=epsg)
  File "C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\Lib\site-packages\geopandas\geoseries.py", line 304, in to_crs
    proj_in = pyproj.Proj(self.crs, preserve_units=True)
  File "C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\Lib\site-packages\pyproj\__init__.py", line 362, in __new__
    return _proj.Proj.__new__(self, projstring)
  File "_proj.pyx", line 129, in _proj.Proj.__cinit__
RuntimeError: b'no arguments in initialization list'
4

8 回答 8

24

确保这是 pyproj 错误而不是 geopandas。

import pyproj
pyproj.Proj("+init=epsg:4326")

如果上述运行时错误相同,我们可以确定这个错误是由于 pyproj 造成的。

只需conda remove pyproj使用 pip 安装即可。

pip install pyproj

至少这对我有用。

今天(7 月 30 日),我从 miniconda 重新安装,conda remove pyproj并没有为我工作,而是我pip uninstall pyprojpip install pyproj一切都很好。

于 2019-05-19T12:53:29.407 回答
15

问题可能出在 Windows 平台上 Anaconda 的 pyproj 安装中。正如斯蒂芬所说,解决方案是编辑“datadir.py”中的路径(位于...Anaconda3\Lib\site-packages\pyproj)。

正确的路径是“.../Anaconda3/Library/share”。确保完整路径完整(可能包含用户名等)。我还需要将\更改为/。这个改变对我有用。是的,在此更改之后,必须重新启动 Spyder(或您使用的任何东西)。

于 2019-09-19T11:06:08.967 回答
6

有初始crs定义吗?只有当我只通过 epsg 命令时,我才遇到同样的问题: gdf.to_crs('epsg:4326').

正如你所展示的

my_geoseries.crs = {'init' :'epsg:3857'}

应该是第一步,然后转换为

gdf = gdf.to_crs({'init': 'epsg:4326'})

如果您在 ArcGIS 中工作,您还可以检查属性是否定义了初始 epsg?

于 2019-03-28T09:20:36.870 回答
4

我正在使用 Pycharm。我不得不结合使用 Stone Shi 和 Dorregaray 的评论。

import pyproj
pyproj.Proj("+init=epsg:4326")
> RuntimeError: b'no arguments in initialization list'

根据 Stone Shi 的说法,以上证明这是一个 pyproj 错误。所以我使用了 Pycharm->Settings 并重新安装了 pyproj。然后

import pyproj
pyproj.Proj("+init=epsg:4326")
> RuntimeError: b'no arguments in initialization list'

所以,这是一个 pyproj 错误,但Pycharm->Settings 重新安装 pyproj 对我没有帮助。

然后我从以下位置编辑了我的 C:\Anaconda3\Lib\site-packages\pyproj\datadir.py:

pyproj_datadir="C:/Anaconda3\share\proj"

多雷加雷:

pyproj_datadir="C:\Anaconda3\Library\share"

然后再次测试:

import pyproj
pyproj.Proj("+init=epsg:4326")
>Process finished with exit code 0

没有运行时错误!

然后测试我的

wgs84  = data.to_crs({'init': 'epsg:4269'})
>Process finished with exit code 0
于 2019-10-22T21:07:32.903 回答
3

对我来说升级pyprojand geopandas,解决了这个问题:

pip install pyproj --upgrade 
pip install geopandas --upgrade 
于 2020-12-08T14:40:47.807 回答
1

使用 Geopandas,尝试一下(它应该可以工作):

gdf = gpd.GeoDataFrame(gdf, geometry=gdf['geometry'])
gdf.crs = {'init' :'epsg:2154'}
gdf = gdf.to_crs({'init' :'epsg:4326'}) 

您应该重新定义好您的地理数据框,然后定义初始地理参考,最后将其转换为良好的。如果有,请不要忘记删除 NaN。

于 2020-04-04T15:52:31.847 回答
0

我遇到了同样的错误。我正在使用 Python 3.6.3 版和 Geopandas 0.4.0 版。它是通过使用以下而不是解决的df = df.to_crs({'init': 'epsg:4326'})

df = df.to_crs(epsg=4326)
于 2020-09-28T09:20:12.433 回答
0

您可以直接使用从 pip 强制重新安装 pyproj

pip install --upgrade --force-reinstall pyproj

而不是再次卸载并重新安装,这也将卸载所有依赖库

于 2021-03-15T04:07:40.277 回答