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 pyproj和pip install pyproj使一切正常。
我正在使用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 ?