PyNSPD
Python-библиотека для работы с НСПД - Национальной системой пространственных данных (ex-ПКК)
⚠️ Важно
Данная библиотека является неофициальным проектом и создана исключительно в образовательных целях
Особенности
- Синхронное и асинхронное API: полностью идентичные API позволяют одинаково удобно работать в разных проектах.
- Полная типизации проекта: автозаполнения в IDE, статический анализ и прочие удобства современного Python.
- Автогенерация типов: данные о перечне слоев, их полях и их типах подтягиваются напрямую с НСПД.
- Валидации данных от Pydantic: гарантия, что библиотека соответствует сайту.
- Поддержка работы с геометрией от Shapely: удобная аналитика полученной геометрии.
- Кэширование из коробки от Hishel: сохранение данных в Redis, SQLite и других форматах.
Быстрый старт
Установите pynspd
:
Найдите нужный вам объект:
Доступен полный список аттрибутов (в том числе скрытых):
print(feat.properties.options.model_dump())
#> {'readable_address': 'г Москва, ул Серпуховская Б., вл 58',
#> 'land_record_subtype': 'Землепользование', ...}
Который можно конвертировать в человекочитаемый формат:
print(feat.properties.cast().options.model_dump_human_readable())
#> {'Адрес': 'г Москва, ул Серпуховская Б., вл 58',
#> 'Вид земельного участка': 'Землепользование', ...}
Для доступа к дополнительным аттрибутам делаем запрос по вкладке:
Геометрию можно сразу конвертировать в shapely
-формат (например, для работы с geopandas
):
print(feat.geometry.to_shape().bounds)
#> (37.62575417009177, 55.719792499833524, 37.626451149629915, 55.72046606889391)
С более детальным описанием библиотеки можно ознакомиться в руководстве пользователя.
Поддержка проекта
Самый простой способ - это оставить ⭐ проекту на GitHub и отправить его своим коллегам. Если же вы хотите принять участие в его развитии, ознакомьтесь со статьей "Как поддержать проект?".