Python-библиотека для работы с НСПД - Национальной системой пространственных данных (ex-ПКК)
⚠️ Важно
Это неофициальная библиотека
НСПД часто меняет схемы объектов. Если у вас происходит ошибка валидации - попробуйте обновить библиотеку
- Синхронное и асинхронное API: полностью идентичные API позволяют одинаково удобно работать в разных проектах.
- Полная типизации на Pydantic: валидация данных и автозаполнения в IDE.
- Встроенная поддержка Shapely: удобная аналитика полученной геометрии.
- Кэширование из коробки: сохранение данных в Redis, SQLite и других форматах.
- Автогенерация типов: данные о перечне слоев, их полях и их типах подтягиваются напрямую с НСПД.
Установите pynspd
:
pip install pynspd
Найдите нужный вам объект:
from pynspd import Nspd
with Nspd() as nspd:
feat = nspd.search_in_theme("77:05:0001005:19")
Доступен полный список аттрибутов (в том числе скрытых), а также сокращенный в человекочитаемом формате:
print(feat.properties.options.model_dump())
#> {'readable_address': 'г Москва, ул Серпуховская Б., вл 58',
#> 'land_record_subtype': 'Землепользование', ...}
print(feat.properties.cast().options.model_dump_human_readable())
#> {'Адрес': 'г Москва, ул Серпуховская Б., вл 58',
#> 'Вид земельного участка': 'Землепользование', ...}
Для доступа к дополнительным аттрибутам делаем запрос по вкладке:
print(await nspd.tab_objects_list(feat))
#> {'Объект недвижимости: ': ['77:05:0001005:1012']}
Геометрию можно сразу конвертировать в shapely
-формат (например, для работы с geopandas
):
print(feat.geometry.to_shape().bounds)
#> (37.62575417009177, 55.719792499833524, 37.626451149629915, 55.72046606889391)
С более детальным описанием библиотеки можно ознакомиться в руководстве пользователя.
Самый простой способ - это оставить ⭐ проекту на GitHub и отправить его своим коллегам. Если же вы хотите принять участие в его развитии, ознакомьтесь со статьей "Как поддержать проект?".