В этом блоге я расскажу, как использовать Python и OpenStreetMap для создания визуализации дорожной сети города. С помощью таких библиотек, как osmnx и matplotlib, можно создать детализированную карту, показывающую улицы города, и проанализировать их структуру.
Введение
Недавно я создал карту дорожной сети Алматы 🇰🇿. Эта визуализация помогает лучше понять структуру города, его развитие и особенности градостроительства. Используя osmnx (для данных OpenStreetMap) и matplotlib (для визуализации), я смог создать изображение, показывающее все улицы города.
Подготовка к задаче
Прежде чем начать, необходимо установить необходимые библиотеки:
pip install osmnx matplotlib
Сбор данных
Сначала, с помощью библиотеки osmnx, мы получим данные о дорожной сети Алматы:
import osmnx as ox import matplotlib.pyplot as plt # Получаем граф дорожной сети Алматы G = ox.graph_from_place("Almaty, Kazakhstan", network_type="drive") # Конвертируем граф в формат geodataframe gdf_nodes, gdf_edges = ox.graph_to_gdfs(G)
Визуализация данных
Теперь, когда у нас есть данные, мы можем построить карту:
# Устанавливаем размер фигуры fig, ax = plt.subplots(figsize=(10, 10)) # Отображаем улицы gdf_edges.plot(ax=ax, linewidth=0.5, color='black') # Устанавливаем заголовок карты и удаляем осевые метки ax.set_title("Дорожная сеть Алматы", fontsize=20) ax.set_xticks([]) ax.set_yticks([]) plt.show()
Анализ карты
После создания карты можно наблюдать несколько интересных особенностей:
- Плотность в центре города: Центр города 🏙️ намного плотнее по сравнению с окраинами 🌳, что типично для большинства крупных городов, где центр обычно развивается первым и более интенсивно.
- Прямые улицы в центре: В центре больше прямых улиц ↔️, в то время как на окраинах встречаются извилистые дороги 🌀, что отражает планировку центральных районов и адаптацию к ландшафту в новых районах.
- Пригородные районы: Карта также показывает пригородные районы и сельские дороги 🚜, что указывает на рост города и его интеграцию с окружающими территориями.
- Узнаваемые ориентиры: Вы легко можете определить значимые ориентиры, такие как Алматинский ипподром 🐎, озеро Сайран 🌊, кампус КазНУ 🎓 и стадион Алматы Арена 🏟️.
- Сеточная планировка в центральных районах: Центральные районы спланированы в сеточном формате, в то время как новые районы адаптированы к ландшафту 🌄, что показывает этапы роста города.
Заключение
Эта визуализация позволяет не только увидеть текущую структуру дорожной сети Алматы, но и лучше понять её историческое развитие. Используя osmnx и matplotlib, вы можете создать аналогичные карты для любого города, что открывает широкие возможности для анализа и исследований.
Код
Полный код проекта доступен на GitHub.