我正在尝试使用Geopandas和Matplotlib绘制西班牙的地图。我正在使用下面看到的GeoJSON文件,其中的几何形状在地理坐标中(EPSG 4326)
我想在Mercator投影中绘制地图,但是当我尝试使用
转换单位时df.to_crs({'init': 'epsg:3395'})
我收到一条错误消息:
RuntimeError: b'no arguments in initialization list'
我已按照http://geopandas.org/projections.html中的说明进行操作。那里说如果geopandas数据框不包括CRS的信息,则必须定义它。但这不是这里的问题。
这是我到目前为止的代码
import geopandas as gpd
%matplotlib inline
import matplotlib.pyplot as plt
geojson_url = 'https://raw.githubusercontent.com/codeforamerica/click_that_hood/master/public/data/spain-provinces.geojson'
df = gpd.read_file(geojson_url)
如果我运行以下命令:
df.crs
我收到以下响应(这意味着geopandas DataFrame具有有关CRS的信息)
{'init': 'epsg:4326'}
然后
df = df.to_crs({'init': 'epsg:3395'})
返回错误
我想念什么?预先感谢。
答案 0 :(得分:0)
您似乎正在使用Geopandas和pyproj的旧版本。我建议升级到可以正常工作的较新版本:
>>> import geopandas
>>> geopandas.__version__
'0.5.0'
>>> import pyproj
>>> pyproj.__version__
'2.2.0'
>>> geojson_url = 'https://raw.githubusercontent.com/codeforamerica/click_that_hood/master/public/data/spain-provinces.geojson'
>>> df = geopandas.read_file(geojson_url)
>>> df.crs
{'init': 'epsg:4326'}
>>> df2 = df.to_crs({'init': 'epsg:3395'})
>>> df2.crs
{'init': 'epsg:3395'}