Python module for urban network analysis
Project description
Инструмент для анализа различных городских транспортных сетей
Возможности:
- Кластеризация дорожных сетей городов
- Вычиление метрик центральности(beweenessens, page rank) для сетей
- Кластеризация остановок общественного транспорта Российских городов
- Формирование различных графиков: Histogram, Heatmap на основании анализа сетей
- Формирование интерактивной карты с информацией о анализе
Необходимо:
- Установить зависимости
pip install urban-transit-network-analysis. - Установить Neo4j Desktop.
- Создать БД и вести имя, пароль, порт в файл .env . Параметры можно посмотреть в
neo4j_connection.py. - Установить плагин graph-data-science для работы с neo4j. Плагин можно установить или через интерфейс
Neo4j Desktop, или вручную, скачав совместимый с версией базы данных
плагин и поместив его в папку с плагинами
созданного проекта. Также в файле конфигурации
neo4j.confпроекта необходимо установить параметр со следующими значениямиdbms.security.procedures.unrestricted=jwt.security.*, apoc.*, gds.* - Запустить базу данных
- Создать контекст - AnalisisContext.py в соответствии с вашими требованиями
- Запустить процесс анализа в AnalisisManager.py
Создание графов дорог и сети автобусных остановок:
Для создания графов дорог данные берутся из OpenStreetMap с помощью библиотеки osmnx. Для сетей общественного транспорта берет данные из https://kudikina.ru. С этого сайта есть возможность получать данные о дорожных сетях более чем 200 городов.
Подробнее о данных сети общественного транспорта:
- Вершины - остановки. Включает географическое положение остановки (могут быть не
точными - если информацию получить не удалось, то в таком случае данные будут приближенными и узел будет
иметь
isCoordinateApproximate = True), название остановки, список автобусных маршрутов в которых включена остановка; - Связи - маршруты между соседними остановками внутри одного автобусного маршрута (название маршрута, длительность перемещения между соединяемыми остановками).
Используемые инструменты
- В качестве языка программирования используется Python
- Для получения информации о дорожных сетях использовалась библиотека osnmx c базой данных OpenStreetMap, для получения Для получения данных о сетях маршрутов общественного транспорта был написан парсер, использующий библиотеку beautifulsoup4 , который собирает информацию с сайта https://kudikina.ru
- Для исполнения алгоритмов и хранения информации использовались возможности базы данных neo4j и Python библиотеки neo4j
- Для визуализации использовались Python библиотеки plotly(для построение гистограмм и тепловых карт), folium(для построение интерактивной карты с информацией анализа)
Процесс анализа
- Формирование контекста AnalysContext, который содержит основные параметры анализа(город, тип сети, необходимые метрики, неыобходимые алгоритмы, необходимые графики)
- Если есть необходимость в соответствии с AnalysContext, формируется граф и записывается в бд: 2.1. В случае с графом дорожных сетей информация получается с помощью библиотеки osnmx с использованием функций graph_from_place graph_to_gdfs. На основании этих данных формируется сеть и записывается в neo4j 2.2. В случае с графом дорожных сетей с информацией о зданиях данные получается с помощью библиотеки osnmx с использованием функций graph_from_place, graph_to_gdfs, geometries_from_place, и на основании этих данных формируется сеть с использованием библиотеки quad для быстрого формировнии сети и записывается в neo4j 2.3. В случае с графом маршрутов общественного транспорта данные получается с помощью парсера сайта https://kudikina.ru использованием beautifulsoup4. На основании этих данных формируется сеть и записывается в neo4j
- Далее для исполнения различных алгоритмов neo4j формируется единый проект с помощью gds.graph.project
- Далее для вычисления метрик используются различные процедуры neo4j(gds.leiden.stream, gds.louvain.stream, gds.leiden.write, gds.louvain.write, gds.betweenessens.write, gds.pagerank.write)
- Далее вычисленные и записанные данные собираются из базы данные(С использованием различных запросов) и приводятся к единому виду в Python для удобства в визуализации
- Далее начинается процесс визуализации, используются: 6.1. plotly - используется для построения графиков гистограмм и тепловых карт, используются ранее собранные данные , агрегируются и с использованием plotly.express.histogram и plotly.express.heatmap формируются графики 6.2. folium - используется для построения интерактивных географических карт в формате html, используются ранее собранные данные , агрегируются и с использованием plotly.express.histogram и plotly.express.heatmap формируются графики
Источники информации используемые при разработке:
- https://neo4j.com/docs/python-manual/current/
- https://neo4j.com/docs
- https://neo4j.com/docs/graph-data-science/current/algorithms/louvain/
- https://neo4j.com/docs/graph-data-science/current/algorithms/leiden/
- https://en.wikipedia.org/wiki/Louvain_method
- https://proproprogs.ru/ml/ml-aglomerativnaya-ierarhicheskaya-klasterizaciya-dendogramma
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file urban_transit_network_analysis-1.0.6.tar.gz.
File metadata
- Download URL: urban_transit_network_analysis-1.0.6.tar.gz
- Upload date:
- Size: 21.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2adee77011a9aa9854f59bcb694cd024162c0a8936a2173fd350c2fe99f47993
|
|
| MD5 |
c1107ad7e01e484fb9fe1ae96e89a0a6
|
|
| BLAKE2b-256 |
93061b2d792b7e756aaacd257048c79fb071ab897a6f47236239bbe83e91233f
|