Невозможно перевести в проекцию Меркатора с помощью геопанд.

Я пытаюсь построить карту Испании с помощью Geopandas и Matplotlib. Я использую файл GeoJSON, который вы видите ниже, в котором геометрия указана в географических координатах (EPSG 4326).

Я хотел бы построить карту в проекции Меркатора, но когда я пытаюсь преобразовать единицы, используя

df.to_crs({'init': 'epsg:3395'})

Я получаю сообщение об ошибке:

RuntimeError: b'no arguments in initialization list'

Я выполнил инструкции в http://geopandas.org/projection.html. Там говорится, что если фрейм данных геопанд не учитывается с информацией 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

Я получаю следующий ответ (это означает, что в DataFrame геопанд есть информация о CRS)

{'init': 'epsg:4326'}

потом

df = df.to_crs({'init': 'epsg:3395'})

Возвращает ошибку

Что мне не хватает? Заранее спасибо.


person juancar    schedule 16.05.2019    source источник
comment
Ничего общего с matplotlib. Пожалуйста, не спамите. Убрал тег   -  person Sheldore    schedule 16.05.2019
comment
Как вы установили GeoPandas? Кажется, это проблема с зависимостями. Чтобы все работало правильно, рекомендуется установить GeoPandas и его зависимости из канала conda-forge через Conda, как описано в geopandas.org/install.html.   -  person martinfleis    schedule 16.05.2019


Ответы (1)


Похоже, вы используете старую версию 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'}
person snowman2    schedule 10.06.2019