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

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

Фотография 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.

Комментарии (0)