RuntimeError:b'初始化列表中没有参数'

Mar*_*rak 4 python machine-learning arcpy geopandas pyproj

我试图自己解决问题,但我无法解决,我试图以您可以想象的每种格式运行此代码,并且在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
Run Code Online (Sandbox Code Playgroud)
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'}
Run Code Online (Sandbox Code Playgroud)
gdf = gdf.to_crs({'init': 'epsg:4326'})
Run Code Online (Sandbox Code Playgroud)

我得到这个错误

RuntimeError: b'no arguments in initialization list'
Run Code Online (Sandbox Code Playgroud)

我也在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__
Run Code Online (Sandbox Code Playgroud)
RuntimeError: b'no arguments in initialization list'
Run Code Online (Sandbox Code Playgroud)

小智 14

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

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


小智 10

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

import pyproj
pyproj.Proj("+init=epsg:4326")
Run Code Online (Sandbox Code Playgroud)

如果上述运行时错误相同,则可以确定此错误是由于pyproj引起的。

只是conda remove pyproj并用pip安装它。

pip install pyproj
Run Code Online (Sandbox Code Playgroud)

至少这对我有用。

今天(7月30日),笔者从miniconda resintalled,conda remove pyproj我没有工作,而不是我pip uninstall pyprojpip install pyproj使一切正常。

  • 谢谢你!通过 conda 删除,然后 pip install pyproj。这个对我有用。 (2认同)
  • 在卸载pyproj时,运行`pip remove pyproj --force`可能会更容易,以避免卸载geopandas或其他依赖项 (2认同)
  • 遇到了同样的问题,我使用 `pip install --force-reinstall pyproj` 来避免 `conda remove pyproj` ,它会删除依赖于 `pyproj` 的包,例如 `geopandas` (2认同)

JDO*_*own 7

我正在使用Pycharm。我不得不结合石石的言论和多雷加雷的言论来使用。

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

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

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

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

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

pyproj_datadir="C:/Anaconda3\share\proj"
Run Code Online (Sandbox Code Playgroud)

多雷加雷的:

pyproj_datadir="C:\Anaconda3\Library\share"
Run Code Online (Sandbox Code Playgroud)

然后再次测试:

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

没有运行时错误!

然后测试我的

wgs84  = data.to_crs({'init': 'epsg:4269'})
>Process finished with exit code 0
Run Code Online (Sandbox Code Playgroud)


小智 5

有初始crs定义吗?我跑进只有当我通过只有EPSG命令同样的问题: gdf.to_crs('epsg:4326')

正如你所展示的

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

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

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

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