eugenden.github.io

Создание сервиса геообработки ArcGIS Server с конфигурационным файлом в формате json

Способ реализации сервисов с конфигурационными файлами выгоден:

Из минусов - в теории “прикручивание” обязательной io-операции по считыванию json с диска замедляет сервис - но на практике эти миллисекунды не замечаются.

Ход работы (кратко):

  1. Создать скрипт геообработки.
  2. Вынести переменные в JSON-файл.
  3. Создать service-definition сервиса геообработки с копированием конфигурационного файла.
  4. Опубликовать сервис геообработки на сервере.
  5. Изменить параметры сервиса внутри файла JSON.
  6. Использовать.

В скрипте примере будем складывать 3 целых числа - 2 из конфигурационного файла и одно из входных параметров:

from json import load
from arcpy import GetParametr, SetParameter

config = r"D:\project\test\config.json"


def config_vars(json_file):
	with open (json_file) as json_data:
		config_dict = load (json_data)
		for i in config_dict:
			globals()[i] = config_dict[i]


def main():
	long3 = GetParamter(0)
	config_vars(config)
	AddMessage(int(long1)+long2+long3)
	SetParameter(1, int(long1)+long2+long3)

if __name__ == "__main__":
	main()

Краткое описание: в начале импортируются необходимые модули (для парсинга json, для приёма и установки параметров arcpy). Затем указывается абсолютный путь к конфигурационному файлу в формате json. Далее объявляется функция, которая позволяет в теле скрипта обращаться к переменным как они прописаны в json (в json “long1” - в скрипте long1). В главной исполнительной функции main: осуществляем приём третьего числа из параметра (GetParamter), запускаем считывание конфигурационного файла (config_vars) и возвращаем результат (SetParameter). В конце скрипта - условие запуска.

Создаём toolbox-инструмент, указываем параметры (входной long и выходной long).

alt-текст

alt-текст

Создаём json-файл с переменными.

alt-текст

Запускаем инструмент в ArcMap.

alt-текст

Видим результат.

alt-текст

Создаём sd-файл созданной тестовой геообработки.

alt-текст

alt-текст

alt-текст

alt-текст

alt-текст

Опубликуем sd на ArcGIS Server и зайдём в папку сервиса, чтобы увидеть конфигурационный файл. В моём случае путь - C:\arcgisserver\directories\arcgissystem\arcgisinput\TestTool.GPServer\extracted\cd\test. Причём папка test была унаследована при публикации (в ней находился toolbox и config.json).

alt-текст

alt-текст

Откроем его и поменяем значения.

alt-текст

Протестируем сервис в браузере.

alt-текст

alt-текст