Создание интерактивных геопространственных информационных панелей с помощью Folium: тепловые карты, хороплет-карты, временная анимация, кластеризация маркеров и продвинутые интерактивные плагины

В этом руководстве по Folium мы создадим полный набор интерактивных карт, которые будут работать в Colab или в любой локальной настройке Python. Мы рассмотрим различные стили базовых карт, разработаем насыщенные маркеры с HTML-всплывающими окнами и визуализируем пространственную плотность с помощью тепловых карт.

Создание многослойной базовой карты

Мы создаём многослоевую базовую карту и настраиваем несколько поставщиков плиток, чтобы включить разные визуальные стили. Мы добавляем слои местности, тёмного режима, тонера и акварельного фона, чтобы можно было переключать перспективы в зависимости от аналитических требований.

Создание карты с расширенными маркерами

Мы строим карту с расширенными маркерами и насыщенными HTML-всплывающими окнами для представления реальных достопримечательностей. Мы настраиваем значки маркеров, цвета и символы по типу местоположения, чтобы повысить визуальную чёткость и семантическую значимость.

Создание тепловой карты

Мы генерируем синтетические пространственные данные и используем тепловую карту для визуализации закономерностей плотности по географическим местоположениям. Мы моделируем кластеризованные координаты и применяем визуализацию интенсивности на основе градиента, чтобы выявить тенденции пространственной концентрации.

Создание хороплет-карты

Мы создаём хороплет-карту, комбинируя данные GeoJSON с числовыми атрибутами. Мы сопоставляем уровень безработицы с географическими регионами и используем цветовые градиенты для визуального представления статистических различий.

Создание карты с кластеризацией маркеров

Мы создаём карту с кластеризацией маркеров для больших наборов данных. Мы генерируем случайные координаты и значения, а затем используем кластеризацию маркеров для визуализации большого количества точек.

Создание карты с временной серией

Мы создаём анимированную карту, показывающую изменения данных во времени. Мы моделируем путь урагана и визуализируем его движение с помощью временной анимации.

Создание карты с интерактивными плагинами

Мы создаём карту с несколькими интерактивными плагинами. Мы добавляем мини-карту, инструменты рисования, полноэкранный режим и другие плагины для повышения интерактивности.

Создание карты землетрясений

Мы создаём комплексную визуализацию землетрясений, используя реальные данные USGS. Мы интегрируем данные в реальном времени, классифицируем землетрясения по магнитуде и улучшаем интерпретацию с помощью групп объектов, тепловых карт и пользовательских легенд.

Импорт библиотек

«`python
import folium
from folium import plugins
from folium.plugins import HeatMap, MarkerCluster, TimestampedGeoJson, MiniMap, Draw, Fullscreen
import pandas as pd
import numpy as np
import json
import requests
from datetime import datetime, timedelta
import branca.colormap as cm
«`

Создание многослойной базовой карты

«`python
def createmultitile_map():
«»»Create a map with multiple tile layers»»»
m = folium.Map(
location=[40.7128, -74.0060],
zoom_start=12,
tiles=’OpenStreetMap’
)

folium.TileLayer(‘cartodbpositron’, name=’CartoDB Positron’).add_to(m)
folium.TileLayer(‘cartodbdarkmatter’, name=’CartoDB Dark Matter’).addto(m)

folium.TileLayer(
tiles=’https://tiles.stadiamaps.com/tiles/stamen_terrain/{z}/{x}/{y}.png’,
attr=’Map tiles by Stamen Design, under CC BY 3.0. Data by OpenStreetMap, under ODbL’,
name=’Terrain’
).add_to(m)

folium.TileLayer(
tiles=’https://tiles.stadiamaps.com/tiles/stamen_toner/{z}/{x}/{y}.png’,
attr=’Map tiles by Stamen Design, under CC BY 3.0. Data by OpenStreetMap, under ODbL’,
name=’Toner’
).add_to(m)

folium.TileLayer(
tiles=’https://tiles.stadiamaps.com/tiles/stamen_watercolor/{z}/{x}/{y}.jpg’,
attr=’Map tiles by Stamen Design, under CC BY 3.0. Data by OpenStreetMap, under ODbL’,
name=’Watercolor’
).add_to(m)

folium.LayerControl().add_to(m)

return m
«`

Создание карты с расширенными маркерами

«`python
def createadvancedmarkers_map():
«»»Create map with custom markers and HTML popups»»»
landmarks = [
{‘name’: ‘Statue of Liberty’, ‘lat’: 40.6892, ‘lon’: -74.0445, ‘type’: ‘monument’, ‘visitors’: 4500000},
{‘name’: ‘Empire State Building’, ‘lat’: 40.7484, ‘lon’: -73.9857, ‘type’: ‘building’, ‘visitors’: 4000000},
# …
]

m = folium.Map(location=[40.7128, -74.0060], zoom_start=12)

# …

return m
«`

Создание тепловой карты

«`python
def create_heatmap():
«»»Create a heatmap showing data density»»»
np.random.seed(42)
n_incidents = 1000

crime_data = []
hotspots = [
[40.7580, -73.9855],
[40.7484, -73.9857],
# …
]

# …

return m
«`

Создание хороплет-карты

«`python
def createchoroplethmap():
«»»Create a choropleth map showing data across regions»»»
usstatesurl = ‘https://raw.githubusercontent.com/python-visualization/folium/master/examples/data/us-states.json’

try:
usstates = requests.get(usstates_url).json()
except:
print(«Warning: Could not fetch GeoJSON data. Using offline sample.»)
return None

# …

return m
«`

Создание карты с кластеризацией маркеров

«`python
def createmarkercluster_map():
«»»Create a map with marker clustering for large datasets»»»
np.random.seed(123)
n_locations = 5000

lats = np.random.uniform(25, 49, n_locations)
lons = np.random.uniform(-125, -65, n_locations)
values = np.random.randint(1, 100, n_locations)

# …

return m
«`

Создание карты с временной серией

«`python
def createtimeseries_map():
«»»Create an animated map showing data changes over time»»»
start_date = datetime(2024, 8, 1)
features = []

# …

return m
«`

Создание карты с интерактивными плагинами

«`python
def createinteractiveplugins_map():
«»»Create a map with multiple interactive plugins»»»
m = folium.Map(
location=[40.7128, -74.0060],
zoom_start=12,
tiles=’OpenStreetMap’
)

# …

return m
«`

Создание карты землетрясений

«`python
def createearthquakemap():
«»»Create comprehensive earthquake visualization using real USGS data»»»
url = ‘https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/2.5_month.geojson’

try:
response = requests.get(url)
earthquake_data = response.json()
print(f»Successfully loaded {len(earthquake_data[‘features’])} earthquakes»)
except Exception as e:
print(f»Error fetching data: {e}»)
earthquake_data = {
‘features’: [
{
‘properties’: {‘mag’: 5.2, ‘place’: ‘Sample Location 1’, ‘time’: 1640000000000},
‘geometry’: {‘coordinates’: [-122.0, 37.0, 10]}
},
# …
]
}

# …

return m
«`

1. Какие типы карт можно создать с помощью библиотеки Folium и как они могут быть использованы для визуализации данных?

Ответ:
С помощью Folium можно создать многослойные базовые карты, карты с расширенными маркерами, тепловые карты, хороплет-карты, карты с кластеризацией маркеров, карты с временной серией и карты с интерактивными плагинами. Эти типы карт могут быть использованы для визуализации различных типов данных, таких как местоположение достопримечательностей, пространственная плотность событий, статистические различия между регионами, большие наборы данных и изменения данных во времени.

2. Какие интерактивные плагины можно добавить на карту для повышения её интерактивности?

Ответ:
На карту можно добавить мини-карту, инструменты рисования, полноэкранный режим и другие плагины для повышения интерактивности.

3. Какие данные можно использовать для создания тепловой карты с помощью Folium?

Ответ:
Для создания тепловой карты с помощью Folium можно использовать синтетические пространственные данные или реальные данные, например, данные о землетрясениях из USGS. Тепловая карта позволяет визуализировать закономерности плотности по географическим местоположениям, моделируя кластеризованные координаты и применяя визуализацию интенсивности на основе градиента.

4. Какие преимущества даёт использование Folium для создания интерактивных геопространственных информационных панелей?

Ответ:
Использование Folium для создания интерактивных геопространственных информационных панелей позволяет работать с различными стилями базовых карт, разрабатывать насыщенные маркеры с HTML-всплывающими окнами, визуализировать пространственную плотность с помощью тепловых карт, создавать хороплет-карты, карты с кластеризацией маркеров и карты с временной серией. Это делает Folium мощным инструментом для визуализации и анализа пространственных данных.

5. Какие шаги необходимо выполнить для создания многослойной базовой карты с помощью Folium?

Ответ:
Для создания многослойной базовой карты с помощью Folium необходимо выполнить следующие шаги:
1. Импортировать необходимые библиотеки.
2. Создать экземпляр класса Map с указанием местоположения и уровня масштабирования.
3. Добавить на карту несколько слоёв плиток с разными визуальными стилями.
4. Настроить слои местности, тёмного режима, тонера и акварельного фона.
5. Добавить элемент управления слоями.

Источник