Open
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Мы использовали следующие пространственные слои в формате '.geojson', размещённые в GitHub-репозитории:
-проблемные участки дорог и данные по туризму.
*Все данные были приведены к единому формату через GeoPandas.
Этапы работы:
Мы автоматически загрузили все файлы с созданной ветки в GitHub, поместив их в отдельные 'GeoDataFrame'ы. Для удобства работы использовался словарь 'gdfs', в который вошли все слои.
У каждого слоя мы проверили систему координат. При необходимости CRS был приведён к базовой (совпадающей с системой у gdf с нужными границами региона ) для обеспечения корректности геоопераций.
Мы удалили объекты с пустой геометрией и исправили невалидные геометрии через 'buffer(0)'. Также были устранены дубликаты строк и столбцов в атрибутивной информации.
Для каждого слоя мы оставили только те объекты, которые пересекаются с границей Архангельской области. Это позволило исключить лишние и внешние данные.
Мы объединили все слои в единый 'GeoDataFrame' с добавлением столбца 'source' — чтобы отслеживать, из какого слоя пришёл объект. Это позволило проводить дублирующий анализ и агрегации по всей территории.
Была создана регулярная гексагональная сетка (размер стороны — 15 км) поверх всей территории региона. Для этого мы реализовали собственную функцию построения шестиугольников по заданному размеру и координатам.
Мы распределили население по гексагонам пропорционально пересечению населённых пунктов с ячейками сетки. Это позволило агрегировать численность населения по каждой ячейке и выявить плотность заселения.
Визуализация
Визуализация данных была выполнена с помощью Folium. Мы отобразили гексагоны с численностью населения и добавили интерактивные подсказки. Города и сёла также отображались на карте, при этом отфильтрованные по принадлежности к региону.
Результаты
-Построена пространственно нормализованная сетка региона;
-Получена карта плотности населения без привязки к административным границам;
-Подготовлена структура для последующего анализа инфраструктурного покрытия (образование, медицина, дороги, туризм) в рамках гексагональной сетки.
Также в рамках проекта в коде были предусмотрены инструменты для анализа и моделирования на основе пространственных признаков, с использованием методов машинного обучения. Хотя основной акцент проекта был на построении гексагональной сетки и визуализации, закладка ML-модуля открывает возможности для дальнейшей аналитики.
Используемые библиотеки
Интерактивный дэшборд в Streamlit
В рамках финального этапа проекта мы разработали удобный веб-интерфейс на базе библиотеки Streamlit, позволяющий пользователю самостоятельно анализировать пространственные данные и работать с гексагональной сеткой в интерактивном режиме.
Как результат мы получили гибкий и наглядный инструмент, который позволяет:
-Анализировать распределение ресурсов по всей области;
-Быстро находить недостаточно обеспеченные районы;