Skip to main content

Python module for urban network analysis

Project description

Инструмент для анализа различных городских транспортных сетей

Возможности:

  1. Кластеризация дорожных сетей городов
  2. Вычиление метрик центральности(beweenessens, page rank) для сетей
  3. Кластеризация остановок общественного транспорта Российских городов
  4. Формирование различных графиков: Histogram, Heatmap на основании анализа сетей
  5. Формирование интерактивной карты с информацией о анализе

Необходимо:

  1. Установить зависимости pip install urban-transit-network-analysis.
  2. Установить Neo4j Desktop.
  3. Создать БД и вести имя, пароль, порт в файл .env . Параметры можно посмотреть в neo4j_connection.py.
  4. Установить плагин graph-data-science для работы с neo4j. Плагин можно установить или через интерфейс Neo4j Desktop, или вручную, скачав совместимый с версией базы данных плагин и поместив его в папку с плагинами созданного проекта. Также в файле конфигурации neo4j.conf проекта необходимо установить параметр со следующими значениями dbms.security.procedures.unrestricted=jwt.security.*, apoc.*, gds.*
  5. Запустить базу данных
  6. Создать контекст - AnalisisContext.py в соответствии с вашими требованиями
  7. Запустить процесс анализа в AnalisisManager.py

Создание графов дорог и сети автобусных остановок:

Для создания графов дорог данные берутся из OpenStreetMap с помощью библиотеки osmnx. Для сетей общественного транспорта берет данные из https://kudikina.ru. С этого сайта есть возможность получать данные о дорожных сетях более чем 200 городов.

Подробнее о данных сети общественного транспорта:

  • Вершины - остановки. Включает географическое положение остановки (могут быть не точными - если информацию получить не удалось, то в таком случае данные будут приближенными и узел будет иметь isCoordinateApproximate = True), название остановки, список автобусных маршрутов в которых включена остановка;
  • Связи - маршруты между соседними остановками внутри одного автобусного маршрута (название маршрута, длительность перемещения между соединяемыми остановками).

Используемые инструменты

  1. В качестве языка программирования используется Python
  2. Для получения информации о дорожных сетях использовалась библиотека osnmx c базой данных OpenStreetMap, для получения Для получения данных о сетях маршрутов общественного транспорта был написан парсер, использующий библиотеку beautifulsoup4 , который собирает информацию с сайта https://kudikina.ru
  3. Для исполнения алгоритмов и хранения информации использовались возможности базы данных neo4j и Python библиотеки neo4j
  4. Для визуализации использовались Python библиотеки plotly(для построение гистограмм и тепловых карт), folium(для построение интерактивной карты с информацией анализа)

Процесс анализа

  1. Формирование контекста AnalysContext, который содержит основные параметры анализа(город, тип сети, необходимые метрики, неыобходимые алгоритмы, необходимые графики)
  2. Если есть необходимость в соответствии с 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
  3. Далее для исполнения различных алгоритмов neo4j формируется единый проект с помощью gds.graph.project
  4. Далее для вычисления метрик используются различные процедуры neo4j(gds.leiden.stream, gds.louvain.stream, gds.leiden.write, gds.louvain.write, gds.betweenessens.write, gds.pagerank.write)
  5. Далее вычисленные и записанные данные собираются из базы данные(С использованием различных запросов) и приводятся к единому виду в Python для удобства в визуализации
  6. Далее начинается процесс визуализации, используются: 6.1. plotly - используется для построения графиков гистограмм и тепловых карт, используются ранее собранные данные , агрегируются и с использованием plotly.express.histogram и plotly.express.heatmap формируются графики 6.2. folium - используется для построения интерактивных географических карт в формате html, используются ранее собранные данные , агрегируются и с использованием plotly.express.histogram и plotly.express.heatmap формируются графики

Источники информации используемые при разработке:

  1. https://neo4j.com/docs/python-manual/current/
  2. https://neo4j.com/docs
  3. https://neo4j.com/docs/graph-data-science/current/algorithms/louvain/
  4. https://neo4j.com/docs/graph-data-science/current/algorithms/leiden/
  5. https://en.wikipedia.org/wiki/Louvain_method
  6. 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

urban_transit_network_analysis-1.0.6.tar.gz (21.6 kB view details)

Uploaded Source

File details

Details for the file urban_transit_network_analysis-1.0.6.tar.gz.

File metadata

File hashes

Hashes for urban_transit_network_analysis-1.0.6.tar.gz
Algorithm Hash digest
SHA256 2adee77011a9aa9854f59bcb694cd024162c0a8936a2173fd350c2fe99f47993
MD5 c1107ad7e01e484fb9fe1ae96e89a0a6
BLAKE2b-256 93061b2d792b7e756aaacd257048c79fb071ab897a6f47236239bbe83e91233f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page