Визуализация данных GeoJSON с использованием GeoPandas и Python

Ежесекундно в мире появляется огромное количество информации, которую обрабатывать и понимать человеку в большинстве случаев невозможно. Благодаря визуализации данных (построении графиков, диаграмм и нанесении данных на карты), люди могут анализировать информацию, делать выводы и строить прогнозы.

Автором данной статьи является доктор Саумен Атта — постдокторант Лаборатории математических наук в Нантском университете, Франция. Ознакомиться с его блогом можно по ссылке. Оригинал статьи вы можете найти тут.

Фотография Brett Zeck из Unsplash
Фотография Brett Zeck из Unsplash

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() без применения дополнительных параметров
Визуализация с помощью функции plot() без применения дополнительных параметров

Мы также можем передать несколько параметров в функцию plot(), чтобы изменить вид карты следующим образом:

df.plot(figsize=(10,10), edgecolor=‘purple’, facecolor=‘green’)

Таким образом, карта обретет следующий вид:

Визуализация с помощью функции plot(), с применением параметров цвета
Визуализация с помощью функции plot(), с применением параметров цвета

Анализ файла GeoJSON

Мы также можем проанализировать файл GeoJSON, определив форму входных данных следующим образом:

df.shape

На выходе будет кортеж, показанный ниже:

(141, 2)

Следовательно, файл kolkata.geojson имеет 141 строку и 2 столбца (т. е. атрибуты). Это также означает, что муниципалитет Калькутты имеет 141 район согласно файлу входных данных.

Мы также можем просмотреть первые пять строк входных данных следующим образом:

df.head()

Результат показан ниже:

Результат функции print(df.head())
Результат функции print(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))

Полученная карта показана ниже:

 Граница района 23 в Калькутте
Граница района 23 в Калькутте

Итак, мы научились извлекать данные из файла GeoJSON с помощью библиотеки Python GeoPandas, а также узнали, как отображать данные GeoJSON различными способами.

Примечание

Помимо перевода данной статьи, я была озадачена тем, чтобы предоставить полностью рабочий код. Но возникли следующие сложности:

  1. Модуль 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

и лишь после этого код заработал.

  1. Несмотря на то, что код работал, картинка с изображением карты не выводилась. Для этого требуется в конце кода ввести: «plt.show()». А до этого требуется установить модуль matplotlib с помощью команды «pip install matplotlib», после чего импортировать.

  2. Для вывода данных df.head() я воспользовалась функцией print(): «print(df.head())».

Надеюсь данные комментарии помогут лучше ознакомиться с библиотекой geopandas и ее преимуществами. А также я предоставляю ссылку на github.


ссылка на оригинал статьи https://habr.com/ru/post/680100/

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *