无法使用Geopandas转换为Mercator投影

时间:2019-05-16 14:14:44

标签: python geopandas pyproj

我正在尝试使用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'})

返回错误

我想念什么?预先感谢。

1 个答案:

答案 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'}