Автоматизация работы в NextGIS Web через Python

Документация, библиотеки, примеры

Для автоматизация задач в NextGIS Web (NGW) – от получения списка ресурсов до массовой загрузки данных – нужно использовать программный интерфейс NextGIS Web API. Экосистема инструментов вокруг NextGIS Web включает как официальную документацию API, так и несколько библиотек, которые помогают работать с сервером на разных уровнях. Работать с API можно на разных языках программирования, в том числе на Python. 

Документация NextGIS Web API 

Это интерактивная, автоматически обновляемая спецификация HTTP API (Swagger/OpenAPI). Она описывает:

  • структуру REST‑эндпоинтов NGW;
  • параметры запросов и форматы ответов;
  • операции с ресурсами: веб‑карты, стили, слои, группы, подключения, вложения и т. д.

Все Python‑библиотеки и скрипты, работающие с NextGIS Web, опираются именно на эту документацию. Стандартный способ использования: открыть документацию и в поиске найти нужный запрос: create user, create resource, update feature.

Как устроено API NextGIS Web: сущности и подходы

API NGW построено вокруг нескольких ключевых идей. Понимание этих подходов помогает быстрее ориентироваться в документации и эффективнее автоматизировать работу.

Универсальный ресурсный интерфейс

Практически всё в NGW – это ресурс: слой, стиль, веб‑карта, группа, подключение. У каждого ресурса есть идентификатор – его порядковый номер – и ко всем ресурсам можно обратиться единым способом:

Python

/api/resource/{id}
  

Методы HTTP

Работа с API осуществляется с помощью стандартных методов:

  • GET
  • POST
  • PUT
  • DELETE

Это упрощает интеграцию и делает API совместимым с любыми HTTP‑клиентами.

Группы эндпоинтов

API логично делится на несколько тематических блоков:

  • Ресурсы – универсальный CRUD для всех сущностей.
  • Векторные слои и данные – объекты (features), фильтрация, массовые операции.
  • Растровые слои и данные – загрузка, метаданные, тайлы.
  • Стили – создание и привязка стилей.
  • Веб‑карты – работа с деревом элементов.
  • Вложения – загрузка и скачивание файлов.
  • Подключения – внешние источники данных (WMS, PostGIS).
  • Системные сервисы – авторизация, информация о сервере.
  • И многое другое.

Эта структура отражена в документации и помогает быстро находить нужные операции.

Обзор инструментов

Приводим перечень нескольких вспомогательных инструментов, которые упростят работу с API.

БиблиотекаДля чего подходит
pyngwавтоматизация API
nextgisweb_api_helpersпримеры использования API, обучение, быстрые прототипы

pyngw

Библиотека абстракции API. Выстроена поверх API, даёт ещё более простые методы работы с ним, не погружая в детали запросов. Подходит для реальных задач, поддерживает удобный объектный интерфейс и закрывает большинство типовых сценариев работы с NGW.

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

Python

from pyngw import Pyngw

# Подключаемся к серверу NextGIS Web
# Можно использовать логин/пароль или работать как гость
ngw = Pyngw(
    ngw_url="https://sandbox.nextgis.ru",
    login="administrator",
    password="demodemo"
)

# Создаём новую группу ресурсов
group_id = ngw.create_resource_group(
    parent_id=0,
    display_name="Пример группы"
)
print(f"\nСоздана группа с id = {group_id}")

# Загружаем векторный слой (например, GeoJSON)
# Имя слоя можно не указывать – оно будет сгенерировано автоматически
layer_id = ngw.upload_vector_layer(
    filepath="data.geojson",
    group_id=group_id,
    display_name="Мой слой"
)
print(f"Загружен векторный слой с id = {layer_id}")

# Получаем количество объектов в слое
count = ngw.get_feature_count(layer_id)
print(f"Количество объектов в слое: {count}")
  

Что делает этот код:

  • подключается к серверу NGW;
  • создаёт группу ресурсов;
  • загружает векторный слой;
  • получает количество объектов в слое.

Этот пример даёт представление о том, как устроена работа с NextGIS Web через Python, и помогает сделать первые шаги без лишних сложностей.

nextgisweb_api_helpers

Набор готовых примеров и утилит, которые демонстрируют, как работать с API напрямую.

Эти «хелперы» не заменяют библиотеку pyngw, это скорее справочник по практическим сценариям: добавить слой на веб‑карту, загрузить файл, создать ресурс и т. д.

В nextgisweb_api_helpers используются те же эндпоинты, что описаны в документации NGW, что помогает лучше понять, как формируются запросы.

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

Python

# Работаем в песочнице sandbox.nextgis.com
# Для работы понадобится: 
# - id веб-карты
# - id стиля карты

import requests

ngw_host = 'https://sandbox.nextgis.com'
auth = ('administrator','demodemo')
webmap_id = 5
layer_style_id = 12
api_url = ngw_host + '/api/resource/' + str(webmap_id)

# Get Web Map contents
resp = requests.get(api_url, auth=auth, timeout=30)
webmap_json = resp.json()['webmap']

# Add a new Web Map layer (i.e. style)
new_layer = {
    "item_type": "layer",
    "display_name": "madcity",
    "layer_enabled": True,
    "layer_identifiable": True,
    "layer_adapter": "image",
    "layer_style_id": layer_style_id,
}
webmap_json["root_item"]["children"].append(new_layer)
payload = {"webmap": webmap_json}

# Send new payload
resp = requests.put(api_url, auth=auth, json=payload, timeout=30)

if resp.status_code != 200:
    print(resp.text)
  

Эта библиотека полезна как справочник. Например, можно взять готовый пример добавления слоя (стиля) на веб-карту и адаптировать его под свои нужды.

Автоматизируйте работу с NextGIS Web уже сегодня!

Хотите быстрее выполнять рутинные операции, строить собственные сценарии обработки данных и глубже понять возможности NextGIS Web? Начните с изучения документации API и выберите подходящую библиотеку:

  • pyngw – если не хотите погружаться в детали API NGW;
  • nextgisweb_api_helpers – для обучения и быстрых прототипов.

Разобрались с документацией? Попробуйте выполнить свои первые запросы в песочнице – это безопасная среда для отладки и экспериментов.

Готовы перейти к реальным задачам? Разверните свою Веб ГИС и начните использовать все возможности NextGIS Web на практике.

Остались вопросы? Задайте их в сообществе NextGIS в Telegram.

Комментарии запрещены.