В Руководстве системного программиста на ГИС-сервер (gisserveradminlin.pdf), в разделе описания контрольного примера, рассказывается, как можно предоставить доступ к ПБД ко всем слоям пакетом - через файл проекта *.MPT. Для контрольного примера такой файл идёт в установочном пакете. А как мне такой файл сгенерить для своей БД, т.е. для своего набора файлов *.dbm? В Руководстве на этот счёт ничего не сказано. Программы подходящей я в /usr/gisserver или /usr/SpDBsvc не нахожу. Структура *.MPT в Руководстве также не раскрыта, чтобы можно было его хоть в текстовом редакторе вручную набить.
В Руководстве системного программиста на ГИС-сервер (gisserveradminlin.pdf), в разделе описания контрольного примера, рассказывается, как можно предоставить доступ к ПБД ко всем слоям пакетом - через файл проекта *.MPT. Для контрольного примера такой файл идёт в установочном пакете. А как мне такой файл сгенерить для своей БД, т.е. для своего набора файлов *.dbm? В Руководстве на этот счёт ничего не сказано. Программы подходящей я в /usr/gisserver или /usr/SpDBsvc не нахожу. Структура *.MPT в Руководстве также не раскрыта, чтобы можно было его хоть в текстовом редакторе вручную набить.
Как быть?
Добрый день!
Сформировать mpt файл можно из любого настольного продукта. Вы открываете все сформированные DBM файлы в рамках активного окна. Затем вызываете задачу "Файл - Сохранить как" и выбираете тип "Проект карты - MPT". По факту, mpt это текстовый документ. Вы можете контрольный пример открыть и заменить пути тестовых DBM на свои
Роман Демиденко написал: Сформировать mpt файл можно из любого настольного продукта.
Гм... А не перебор это - ради MPT аж целый настольный продукт использовать? Есть же веб-конфигуратор, dbm в нём создаются, ну сделайте по-человечески, чтобы тесно связанные функции в одной программе были сосредоточены. Ну или хоть формат распишите. Вы понимаете, ваши программы далеко не всегда сами по себе используются. Их, например, встраивают в собственные продукты, как инфраструктурные компоненты используют. Вот у нас, допустим, веб-приложение. Как это я пользователю предложу всё делать в веб-приложении, а вот проект создавать в десктопном?
Понимаю, что сейчас в веб-конфигураторе у меня редактор/генератор MPT не появится. Но хоть формат опубликуйте, дальше уж я сам.
Ну и, кстати говоря, MPT, сгенерированный с помощью ГИС "Оператор" визуально не совпадает с MPT из состава контрольного примера. В контрольном примере записаны имена файлов *.dbm, а в сгенерированном десктопным приложением - ссылки на ГИС-сервер вида HOST#IP-address#IP-port#ALIAS#<имя файла dbm>. Совсем не то же самое.
А кроме того, в контрольном примере в секции [SITELIST] dbm-ки перечислены в формате PATHn=<имя файла>, где n - порядковый номер, а в сгенерированном на каждый dbm две строки, одна вида PATHn%=%HOST#IP-address#IP-port#ALIAS#<имя файла dbm>, а вторая вида PATHn= HOST#IP-address#IP-port#ALIAS#<какая-то белиберда>.dbm, что тоже совсем не одно и то же.
Белиберда, возможно, появилась оттого, что я в редакторе dbm задал названия слоёв кириллицей, а редактор, соответственно, сформировал по названиям слоёв названия файлов dbm. Но, во-первых, редактор позволил это сделать. Во-вторых, в документации ничего про запрет использовать кириллицу не сказано. В-третьих, ГИС "Оператор" эти слои с ГИС-сервера нормально прочитал и потом у себя отобразил. Из чего я делаю вывод, что со слоями и с dbm всё нормально.
имя%=%значение - применяется для записи строки "значение" в кодировке UTF-8
Вариант записи может быть любой. Если есть оба варианта, то приоритет у формата UTF-8.
Такой вид mpt подразумевает, что проект и данные расположены внутри виртуальной папки. Права доступа к слоям определяются по правам пользователя к виртуальной папке (чтение/запись/копирование/печать и т.п.).
Запись вида HOST#IP-address#IP-port#ALIAS#<имя файла dbm> может применяться, если отдельные слои (dbm или другие данные) определены для пользователей со своими правами доступа. Они могут иметь произвольное размещение.
Добрый вечер. Как-то это всё непонятно работает. Не так, как ожидается. Прошу пояснений.
Исходные данные: имеем пользовательский классификатор rsc с несколькими слоями. На гис-сервере имеется карта, хранящаяся в файле sitx. Эта карта опубликована как слой через веб-сервис. Этот слой включен в проект на гис-вебсервере. Всё с этим слоем хорошо - отображается, масштабируется, редактируется - короче говоря, никаких с ним проблем.
Теперь я меняю бэкенд, вместо файла sitx карту теперь будем хранить в пространственной базе данных на PostgreSQL. Делаю всё по документации, а также в соответствии с полученными рекомендациями здесь, на форуме. Из классификатора rsc с помощью rsc2xsdimg.exe генерю xsd-схему. Далее из неё с помощью runxsd2sql.bat генерю скрипт sql. Этот скрипт выполняю в предварительно подготовленной БД (замечу, что все таблицы, соответствующие классификатору, помещаю не в схему public, а в другую). Выполняю скрипт, настраивающий лог для этой базы. С помощью runmap2spdb.bat перегоняю данные из sitx в базу. Всё отрабатывает ожидаемо, данные оказываются разложенными по своим таблицам. Готовлю файлы dbm, по одному на каждый слой, в них указываю таблицу слоя, классификатор (тот самый, пользоватльский, для всех один и тот же), выбираю вариант кодирования типов объектов с указанием кода и характера локализации из метрики, указываю требуемые объекты классификатора из соответствующих слоёв. Формирую проект MPT, включающий все эти dbm, при этом в качестве первого слоя (в секции [MAP]) выбираю слой SYSTEM, все остальные слои перечислены в конце файла проекта (в секции [SITELIST]). И, наконец, регистрирую всё это дело на ГИС-сервере, как в документации расписано. Затем получившуюся из mpt карту публикую на веб-сервисе, и включаю её в проект на ГИС-вебсервере.
И что я вижу? Карта, как и в случае прежнего бэкенда (sitx), имеет в своём составе один слой, соответствующий пользовательскому классификатору, и отображается правильно - как и прежде. Перехожу в режим редактирования, создаю объект по пользовательскому классификатору, задаю ему мышью метрику, ввожу значения семантик. Сохраняю, успешно. Объект на карте отображается верно, семантики сохранены. НО! В базе данных я обнаруживаю запись об этом объекте не в таблице, соответствующей слою классификатора, к которому относится наносимый условный знак, а в таблице SYSTEM! При этом, естественно, никакие семантики в базе не сохранены - слой-то не тот. И после перезапуска ГИС-сервера введённые значения семантик теряются.
А теперь собственно вопросы. Я что-то неправильно делаю, чтобы получить нужный мне результат? Или этот результат нельзя получить в принципе, потому что всё работает не так и устроено иначе? Или с моей стороны всё верно, а ошибочка вкралась в используемые инфраструктурные компоненты?
Как и ранее, готов предоставить дополнительную информацию и заранее благодарен поддержке за оперативность и отзывчивость.
Добрый день. В настоящий момент технология редактирования mpt проекта еще не доработана и находится в процессе разработки. Все изменения для mpt через web попадают на первую карту в списке. Как временное решение можете опубликовать каждый dbm слой для редактирования отдельно в сервисе и в GIS WebServer SE.
Владимир Железняков написал: Как временное решение можете опубликовать каждый dbm слой для редактирования отдельно в сервисе и в GIS WebServer SE.
Технически это, безусловно, возможно. Но неприемлемо, потому что при этом поменяются алгоритмы действий конечного пользователя и представление у него структуры карты. И слишком велика вероятность ошибочного ввода данных, а контроля нет.
Существуют ли конкретные планы по окончательному доведению предоставления доступа к БД через mpt?