Ежесекундно в мире появляется огромное количество информации, которую обрабатывать и понимать человеку в большинстве случаев невозможно. Благодаря визуализации данных (построении графиков, диаграмм и нанесении данных на карты), люди могут анализировать информацию, делать выводы и строить прогнозы.
Автором данной статьи является доктор Саумен Атта - постдокторант Лаборатории математических наук в Нантском университете, Франция. Ознакомиться с его блогом можно по ссылке. Оригинал статьи вы можете найти тут.
GeoJSON — открытый формат, предназначенный для хранения географических структур данных, основан на JSON. (Википедия)
В этом уроке мы узнаем, как визуализировать данные GeoJSON с помощью библиотеки Python GeoPandas, используя данные, доступные по этой ссылке. Предоставленный файл GeoJSON соответствует картографическим данным муниципальной корпорации Калькутты с информацией о каждом районе.
Импортирование пакета GeoPandas
Мы можем импортировать пакет GeoPandas, используя следующую команду:
import geopandas as gpd
Если в вашей системе не установлен пакет GeoPandas, вы можете использовать следующую команду pip:
pip install geopandas
Чтение и обработка файла GeoJSON
Теперь мы готовы прочитать данные из файла GeoJSON. Это можно сделать с помощью следующей команды:
df = gpd.read_file(‘kolkata.geojson’)
Предоставленные данные содержат информацию о районах муниципальной корпорации Калькутты в Западной Бенгалии, Индия.
В текущем руководстве данные используется только в образовательных целях. Автор туториала не проверяет подлинность и правильность информации в файле GeoJSON.
Построение карты с помощью GeoJSON-данных
С помощью библиотеки GeoPandas очень просто построить файл GeoJSON. Команда показана ниже:
df.plot()
Приведенная выше команда покажет следующий рисунок:
Мы также можем передать несколько параметров в функцию plot(), чтобы изменить вид карты следующим образом:
df.plot(figsize=(10,10), edgecolor=‘purple’, facecolor=‘green’)
Таким образом, карта обретет следующий вид:
Анализ файла GeoJSON
Мы также можем проанализировать файл GeoJSON, определив форму входных данных следующим образом:
df.shape
На выходе будет кортеж, показанный ниже:
(141, 2)
Следовательно, файл kolkata.geojson имеет 141 строку и 2 столбца (т. е. атрибуты). Это также означает, что муниципалитет Калькутты имеет 141 район согласно файлу входных данных.
Мы также можем просмотреть первые пять строк входных данных следующим образом:
df.head()
Результат показан ниже:
Мы видим, что имена атрибутов — «WARD» и «geometry».
Больше опций для построения визуализаций
Возможно, что мы хотим нанести только границы районов. Это легко сделать с помощью следующей команды:
df.boundary.plot(figsize=(10,10))
Результат показан ниже:
Если мы хотим начертить границу определенного района, скажем, округа номер 23 в муниципалитете Калькутты, мы можем использовать следующие команды:
df_23 = df.loc[df[‘WARD’] == ‘23’]
df_23.boundary.plot(figsize=(10,10))
Также, мы также можем использовать альтернативные команды следующего вида:
df_23 = df[df.WARD==‘23’]
df_23.boundary.plot(figsize=(10,10))
Полученная карта показана ниже:
Итак, мы научились извлекать данные из файла GeoJSON с помощью библиотеки Python GeoPandas, а также узнали, как отображать данные GeoJSON различными способами.
Примечание
Помимо перевода данной статьи, я была озадачена тем, чтобы предоставить полностью рабочий код. Но возникли следующие сложности:
-
Модуль geopandas не устанавливался. Команда "pip install geopandas" выдавала ошибку. Изучив информацию, я узнала, что для установки данной библиотеки требуется предварительная установка следующих модулей:
pip install wheel
pip install pipwin
pipwin install numpy
pipwin install pandas
pipwin install shapely
pipwin install gdal
pipwin install fiona
pipwin install pyproj
pipwin install rtree
pip install geopandas
и лишь после этого код заработал.
Несмотря на то, что код работал, картинка с изображением карты не выводилась. Для этого требуется в конце кода ввести: "plt.show()". А до этого требуется установить модуль matplotlib с помощью команды "pip install matplotlib", после чего импортировать.
Для вывода данных df.head() я воспользовалась функцией print(): "print(df.head())".
Надеюсь данные комментарии помогут лучше ознакомиться с библиотекой geopandas и ее преимуществами. А также я предоставляю ссылку на github.