Python-библиотека для работы с НСПД - Национальной системой пространственных данных (ex-ПКК)
⚠️ ВажноДанная библиотека является неофициальным проектом и создана исключительно в образовательных целях
- Синхронное и асинхронное API: полностью идентичные API позволяют одинаково удобно работать в разных проектах.
- Полная типизации проекта: автозаполнения в IDE, статический анализ и прочие удобства современного Python.
- Автогенерация типов: данные о перечне слоев, их полях и их типах подтягиваются напрямую с НСПД.
- Валидации данных от Pydantic: гарантия, что библиотека соответствует сайту.
- Поддержка работы с геометрией от Shapely: удобная аналитика полученной геометрии.
- Кэширование из коробки от Hishel: сохранение данных в Redis, SQLite и других форматах.
Установите pynspd
:
pip install pynspd
Найдите нужный вам объект:
from pynspd import Nspd
with Nspd() as nspd:
feat = nspd.find("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 и отправить его своим коллегам. Если же вы хотите принять участие в его развитии, ознакомьтесь со статьей "Как поддержать проект?".