Страница 1 из 1

Добавить данные в опубликованную службу. 1 этап

Добавлено: 01 авг 2013, 08:36
novice
Собственно суть задачи: на какой-то машине установлен ArcGis 10.1 В нем можно как-угодно опубликовать сервис с какими угодно настройками.

Т.е. есть уже работающий сервис, данные он может использовать какие угодно.

Я написал ПО для конвертации всех пользовательских данных (формата adf - это тоже Raster Dataset) в один Raster Dataset. Т.е. результирующие данные у меня хранятся в одной файловой базе данных (gdb) в одном Raster Dataset.

Подскажите, пожалуйста, можно ли доопубликовать эти данные в эту службу?

Мое мнение: в произвольный сервис опубликовать данные нельзя, но, быть может, можно заранее зарегистрировать именно эту базу данных на сервере, опубликовать ее. А затем добавить в зарегистрированную базу данных новые таблицы, и они автоматически станут отображаться на сервисе?

Re: Добавить данные в опубликованную службу. 1 этап

Добавлено: 01 авг 2013, 09:05
Andrey Zhukov
"Само" в сервисе ничего не появится. Варианты:
1. Если надо смотреть сервисы напрямую. Переопубликовывать сервисы при добавлении данных, можно все впихнуть в скрипт. ArcPy в помощь.
2. Если надо смотреть через приложение. Включить динамические слои. Web API в помощь.

Re: Добавить данные в опубликованную службу. 1 этап

Добавлено: 01 авг 2013, 09:48
novice
а как это можно объяснить начальству?

Re: Добавить данные в опубликованную службу. 1 этап

Добавлено: 01 авг 2013, 10:09
Andrey Zhukov
Для вашего начальства услуги консалтинга - платные :mrgreen:
А если серьезно - честно сказать, что просто так в сервисе ничего не появляется.

Re: Добавить данные в опубликованную службу. 1 этап

Добавлено: 07 авг 2013, 11:19
first_year
Вот решение для подобной задачи, немного дикое, но удовлетворяющее поставленным требованиям:

1) В ArcMap: создаем пустой raster dataset в многопользовательской базе данных (с любой машины). Перерегистрируем данную базу данных на сервере (если база данных находится на одной машине, сервер на другой, то эту операцию надо проводить с серверной машины). Публикуем (с любой машины) сервис на сервере: просто перетягиваем пустой raster dataset в окно со слоями и публикуем.

2) Далее добавляем данные в этот пустой raster dataset. Можно быстренько написать десктопное приложение, которое будет в потоке выбранные пользователями файлы писать в raster dataset. Чтобы много не думать, интерфейс можно скопипастить из приложения ArcGis Viewer for Flex (просто и удобно).

Самая сложная задача здесь - это корректно скопировать данные в таблицу raster dataset, на это ушло дня три, если не больше, интерфейсы, потоки и все остальное займут у вас суммарно - максимум день.

Re: Добавить данные в опубликованную службу. 1 этап

Добавлено: 07 авг 2013, 11:43
first_year
Для небольшого числа данных подойдет код:

Вызов

Код: Выделить всё

listDir.ForEach(str => LoadRastersToSDE(str));
Для конвертации:

Код: Выделить всё

        private void LoadRastersToSDE(string str)
        {
                Geoprocessor geoProcessor = new Geoprocessor();
                Mosaic mosaic = new Mosaic();

                mosaic.inputs = str;
                mosaic.target = Settings.Instance.RasterDatasetFullName;

                mosaic.mosaic_type = "LAST";
                mosaic.colormap = "FIRST";

                object outRaster = geoProcessor.Execute(mosaic, null);
        }