Skip to main content

Python-библиотека для работы с https://nspd.gov.ru (ex-ПКК)

Project description

PyNSPD - работа с Национальной системой пространственных данных (ex-ПКК)

pynspd — Python-библиотека для работы с сайтом НСПД. Особенности:

  • Синхронное и асинхронное API: обеспечивает высокую производительность и удобство работы в асинхронных приложениях.
  • Полная типизации на Pydantic: удобная работа с ответами благодаря автозаполнениям от IDE.
  • Автогенерация типов: данные о перечне слоев, их полях и их типов подтягиваются напрямую с НСПД.
  • Встроенная поддержка shapely: удобная аналитика полученной геометрии.

⚠️ Важно

  • Это неофициальная библиотека
  • Она в фазе активной разработки
  • НСПД в любой день может обновить API

Пример использования

Поиск ЗУ

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)    

Поиск объекта с неизвестным слоем

from pynspd import AsyncNspd

async with AsyncNspd() as api:
    feat = await api.search_by_theme("77:02:0021001:5304")
    print(feat.properties.options.type)
    > 'Машино-место'

Установка

На период разработки установка возможна из репозитория

pip install git+https://github.com/yazmolod/pynspd.git

Зависимости

  • httpx - для запросов к API НСПД
  • pydantic - для типизации проекта
  • geojson-pydantic - для типизации ответов НСПД
  • shapely - для конвертации geojson-геометрии в удобный для аналитики формат
  • pyproj - для перепроецирования геометрии

Project details


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.1.0.tar.gz (96.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pynspd-0.1.0-py3-none-any.whl (25.4 kB view details)

Uploaded Python 3

File details

Details for the file pynspd-0.1.0.tar.gz.

File metadata

  • Download URL: pynspd-0.1.0.tar.gz
  • Upload date:
  • Size: 96.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.5.5

File hashes

Hashes for pynspd-0.1.0.tar.gz
Algorithm Hash digest
SHA256 cecaa804408cadf8495e5cf804f8255e80d0c69841da939595d83a4302d1bcf9
MD5 468e04f9a3bc75ea2696af8d5b88e270
BLAKE2b-256 ca78a047b947325bcf68e090cf350b6bce51ebdbf3943ff46b8dcfe9cba20a91

See more details on using hashes here.

File details

Details for the file pynspd-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: pynspd-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 25.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.5.5

File hashes

Hashes for pynspd-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e6aea0ee305f1ee051e5ba74c060b79aaf8e0d6e790cb186de8a4033057032bc
MD5 eed3e7ed2c2b7ad359c1196b30c0c506
BLAKE2b-256 4a22b0b83b05b5f4f15b189aa760af2bab76bc68225c049cdcee371f5b44edd4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page