【问题标题】:RuntimeError: b'no arguments in initialization list'RuntimeError:b'初始化列表中没有参数'
【发布时间】:2019-08-18 19:18:37
【问题描述】:

我正在尝试自己解决我的问题,但我不能,我正在尝试以您可以想象的各种格式运行此代码,并且在 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'

【问题讨论】:

  • 我在 Anaconda、Windows 10 安装中遇到错误,其中 pyproj 包的文件 datadir.py 指向 proj 文件 epsg 的错误位置。 (.../Anaconda3\share\proj 而不是...\Anaconda3\Library\share)。编辑 datadir.py 为我解决了这个问题。
  • 有趣的是,如果我从 Anaconda Navigator 或 Anaconda Prompt 而不是从 Anaconda Powershell Prompt 启动 JupyterLab 或 Jupyter Notebook,我不会收到任何错误!这些不应该都一样吗?为什么 Anaconda Powershell 提示搞砸了?
  • 我也有同样的问题。从 Miniconda 提示符启动 jupyter 时工作正常,但从 Miniconda Powershell 提示符启动时不行。感谢您的提示,知道发生了什么吗?

标签: python machine-learning arcpy geopandas pyproj


【解决方案1】:

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

pip install --upgrade --force-reinstall pyproj

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

【讨论】:

    【解决方案2】:

    我升级pyprojgeopandas,修复了这个问题:

    pip install pyproj --upgrade 
    pip install geopandas --upgrade 
    

    【讨论】:

      【解决方案3】:

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

      df = df.to_crs(epsg=4326)
      

      【讨论】:

        【解决方案4】:

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

        如你所见

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

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

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

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

        【讨论】:

          【解决方案5】:

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

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

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

          【讨论】:

            【解决方案6】:

            确保这是 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 让一切正常。

            【讨论】:

            • 谢谢!通过 conda 删除,然后 pip install pyproj。它对我有用。
            • 在卸载 pyproj 时,运行 pip remove pyproj --force 可能更容易避免卸载 geopandas 或其他依赖项
            • 遇到了同样的问题,我使用pip install --force-reinstall pyproj 来避免conda remove pyproj 删除依赖于pyproj 的软件包,例如geopandas
            【解决方案7】:

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

            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->设置重新安装 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
            

            【讨论】:

              【解决方案8】:

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

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

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2011-08-09
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2014-03-30
                • 1970-01-01
                • 2011-05-25
                • 1970-01-01
                相关资源
                最近更新 更多