Skip to content

Create code#1

Open
vetochka12345 wants to merge 1 commit intoikanam-ai:команда8888from
vetochka12345:patch-1
Open

Create code#1
vetochka12345 wants to merge 1 commit intoikanam-ai:команда8888from
vetochka12345:patch-1

Conversation

@vetochka12345
Copy link
Copy Markdown

Мы использовали следующие пространственные слои в формате '.geojson', размещённые в GitHub-репозитории:

  • границы региона и муниципалитетов;
  • населённые пункты с населением;
  • здания, объекты здравоохранения, образования и туризма;
    -проблемные участки дорог и данные по туризму.

*Все данные были приведены к единому формату через GeoPandas.

Этапы работы:

  1. Загрузка и структурирование данных

Мы автоматически загрузили все файлы с созданной ветки в GitHub, поместив их в отдельные 'GeoDataFrame'ы. Для удобства работы использовался словарь 'gdfs', в который вошли все слои.

  1. Проверка и приведение CRS

У каждого слоя мы проверили систему координат. При необходимости CRS был приведён к базовой (совпадающей с системой у gdf с нужными границами региона ) для обеспечения корректности геоопераций.

  1. Очистка геометрий

Мы удалили объекты с пустой геометрией и исправили невалидные геометрии через 'buffer(0)'. Также были устранены дубликаты строк и столбцов в атрибутивной информации.

  1. Фильтрация по региону

Для каждого слоя мы оставили только те объекты, которые пересекаются с границей Архангельской области. Это позволило исключить лишние и внешние данные.

  1. Объединение слоёв

Мы объединили все слои в единый 'GeoDataFrame' с добавлением столбца 'source' — чтобы отслеживать, из какого слоя пришёл объект. Это позволило проводить дублирующий анализ и агрегации по всей территории.

  1. Генерация гексагональной сетки

Была создана регулярная гексагональная сетка (размер стороны — 15 км) поверх всей территории региона. Для этого мы реализовали собственную функцию построения шестиугольников по заданному размеру и координатам.

  1. Пространственное распределение населения

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

Визуализация

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

Результаты

-Построена пространственно нормализованная сетка региона;
-Получена карта плотности населения без привязки к административным границам;
-Подготовлена структура для последующего анализа инфраструктурного покрытия (образование, медицина, дороги, туризм) в рамках гексагональной сетки.

Также в рамках проекта в коде были предусмотрены инструменты для анализа и моделирования на основе пространственных признаков, с использованием методов машинного обучения. Хотя основной акцент проекта был на построении гексагональной сетки и визуализации, закладка ML-модуля открывает возможности для дальнейшей аналитики.

Используемые библиотеки

  • GeoPandas, Shapely, Pandas, NumPy;
  • Folium — визуализация;
  • scikit-learn — для кластерного и прогностического анализа (в дальнейшем).

Интерактивный дэшборд в Streamlit
В рамках финального этапа проекта мы разработали удобный веб-интерфейс на базе библиотеки Streamlit, позволяющий пользователю самостоятельно анализировать пространственные данные и работать с гексагональной сеткой в интерактивном режиме.

Как результат мы получили гибкий и наглядный инструмент, который позволяет:

-Анализировать распределение ресурсов по всей области;
-Быстро находить недостаточно обеспеченные районы;

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant