Python-библиотека для работы с https://nspd.gov.ru (ex-ПКК)
Project description
PyNSPD - работа с Национальной системой пространственных данных (ex-ПКК)
pynspd — Python-библиотека для работы с сайтом НСПД. Особенности:
- Синхронное и асинхронное API: полностью идентичные API позволяют одинаково удобно работать как в старых синхронных, так и высокопроизводительных асинхронных проектах.
- Полная типизации на Pydantic: удобная работа с ответами благодаря автозаполнениям от IDE.
- Автогенерация типов: данные о перечне слоев, их полях и их типов подтягиваются напрямую с НСПД.
- Встроенная поддержка shapely: удобная аналитика полученной геометрии.
⚠️ Важно
- Это неофициальная библиотека
- НСПД часто меняет схемы объектов. Если у вас происходит ошибка валидации - попробуйте обновить библиотеку
Пример использования
Поиск ЗУ
from pynspd import AsyncNspd
async with AsyncNspd() as api:
feat = await api.search_zu("77:05:0001005:19")
# исходная геометрия - geojson в EPSG:3857
print(feat.geometry.wkt)
> 'POLYGON ((4188557.382334785 7502956.580842949...'
# но можем легко конвертировать в shapely EPSG:4326
print(feat.geometry.to_shape(epsg4326=True).wkt)
> 'POLYGON ((37.626451149629915 55.72040614723934...'
# Доступ ко всему переченю свойств объекта
print(feat.properties.options.model_dump())
> {'land_record_type': 'Земельный участок', ...}
# А также форматирование свойств по примеру карточки с сайта
print(feat.properties.options.model_dump_human_readable())
> {'Вид объекта недвижимости': 'Земельный участок', ...}
Поиск типизированного объекта из любого слоя
from pynspd import AsyncNspd, NspdFeature
async with AsyncNspd() as api:
# либо импортируем определение слоя, зная его id (с сайта)
from pynspd.schemas import Layer37578Feature as lf_def
# либо найти определение слоя по названию,
# но тогда объект будет типизирован частично
lf_def = NspdFeature.by_title(
"ЗОУИТ объектов энергетики, связи, транспорта"
) # IDE знает весь перечень слоев и подсказывает ввод
feat = await api.search_by_model("Останкинская телебашня", lf_def)
Поиск объекта с неизвестным слоем
async with AsyncNspd() as api:
feat = await api.search_by_theme("77:02:0021001:5304")
print(feat.properties.options.type)
> 'Машино-место'
Поиск объекта в точке
from shapely import Point
async with AsyncNspd() as api:
features = await api.search_zu_at_point(Point(37.546440653, 55.787139958))
print features[0].properties.options.cad_num
> "77:09:0005008:11446"
Поиск объектов в контуре
from shapely import wkt
async with AsyncNspd() as api:
contour = wkt.loads(
"Polygon ((37.62381 55.75345, 37.62577 55.75390, 37.62448 55.75278, 37.62381 55.75345))"
)
features = await api.search_zu_in_contour(contour)
cns = [i.properties.options.cad_num for i in features]
print(cns)
> ["77:01:0001011:8", "77:01:0001011:14", "77:01:0001011:16"]
Установка
pip install pynspd
Зависимости
httpx- запросы к API НСПДpydantic,geojson-pydantic- типизации проектаpyproj,shapely- для конвертации geojson-геометрии в удобный для аналитики форматmercantile- решение задач обратного геокодирования
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
pynspd-0.3.0.tar.gz
(110.4 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
pynspd-0.3.0-py3-none-any.whl
(28.9 kB
view details)
File details
Details for the file pynspd-0.3.0.tar.gz.
File metadata
- Download URL: pynspd-0.3.0.tar.gz
- Upload date:
- Size: 110.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.5.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4b42f7a63065c6e1643a5f23608d2a60738b43e61d876bf5df70c3fedee05fda
|
|
| MD5 |
f760850e805fdc96ae00a7b0cc4eda20
|
|
| BLAKE2b-256 |
4e1fb3b3a26950ec3939e8a64ee49aa0773b3f3e3c0242400bd8a19b88f9e956
|
File details
Details for the file pynspd-0.3.0-py3-none-any.whl.
File metadata
- Download URL: pynspd-0.3.0-py3-none-any.whl
- Upload date:
- Size: 28.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.5.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ac75e6b4bd5438be8ccee678b3aa99a9c757ce3a2ab197bdf161d94b1c092630
|
|
| MD5 |
137b6260405e31f4053fbe75f6e0fec3
|
|
| BLAKE2b-256 |
c9e3ad69574e4d24bc1c0ef4f74900e0d97b35c7416abcc6560fb9aedfb2c1c8
|