На главную... Продукты | Технологии | Классификаторы | Проекты | Скачать | Цены| Форум | Статьи | Обучение | Контакты

Определение и открытие *. rsw

Поиск  Пользователи  Правила  Войти
Форум » Настольные приложения » GIS ToolKit, GIS ToolKit Active, ГИС Конструктор для Windows
Страницы: 1 2 След.
RSS
Определение и открытие *. rsw
 
Добрый день господа разработчики.
Суть вопроса в следующем : я создал карту в формате Rsw с привязкой по координатам в масштабе 1:25 000 и порезал её на куски по областям и городам. Далее я эти все кусочки разместил на ГИС СЕРВЕРАХ. Пользователь открывает необходимую ему область или город создаёт по ней карту в формате Sitx, эта карта автоматически добавляется к открытому Rsw и пользователь начинает рисовать обстановку. И все это работает замечательно👍

Но так как пользователь не всегда знает и помнит по какому из кусочков (область или город) была создана карта я хочу сделать так, чтобы при открытии SITX автоматически открывался тот Rsw по которому она была создана. Как это возможно сделать?  
 
Использую GisToolKit ActiveX 14.0.3.0 (С#)  
 
Думаю, самый простой способ - при "разрезании растра по кускам" сразу создавать для каждого фрагмента пользовательскую карту, генерировать MPT-проект, включающий RSW и SITX и такой комплект публиковать на ГИС Сервере.
Тогда пользователь будет открывать MPT, в котором будет и карта, и растр, который сам пользователь сможет включить или выключить в составе отображения.
Такой вариант будет работать не зависимо от того какими клиентскими программами пользуются Ваши клиенты - самописным приложением на основе GIS ToolKit или коробочными ГИС типа ГИС Оператор или ГИС Панорама.
Никакой дополнительной обработки на клиенте не требуется.

Второй вариант - сохранять где-то в пользовательской карте алиас исходного растра на ГИС Сервере и при необходимости открывать его. Такой вариант может работать только в разработанном Вами приложении, поскольку эту обработку надо запрограммировать. Также можно воспользоваться ГИС Панорама или  ГИС Оператор, где в последних версиях добавлена возможность выполнения пользовательских скриптов на языке Python.
Но обработку в любом случае придется реализовывать на клиенте.
Как именно реализовать связь карты с исходным растром решать Вам.
Можно сохранять алиас исходного растра на ГИС Сервере в семантику рамки листа, можно просто установить условие, что имя файла карты совпадает с именем растра, и т.д.
 
Мне больше всего понравился 1-й вариант, но где можно узнать более подробно про формат MPT и с какой версией он будет работать?  
 
Формат MPT - это INI-файл определенной структуры. Используется довольно давно, поэтому поддерживается и в старых версиях (с 11 и выше).
Подробного описания структуры MPT в документации нет.
Можно выполнить в ГИС Панорама/ГИС Оператор/ГИС Панорама-мини совместное открытие необходимых данных, после чего сохранить проект: гл.меню-Файл-Сохранить как-Проект карт *.mpt
Затем открыть файл в блокноте.

Кстати, в составе примеров данных к GIS ToolKit, ГИС Панорама входят *.mpt проекты.
 
Спасибо за информацию, буду пробовать 👍
 
Добрый день, решил реализовать предложенный Вами 2-ой вариант. И записывать алиас растра в паспорт созданной пользовательской карты, а именно в "Рамка листа" в поле "Идентификатор листа", но как туда записать алиас растра?  
 
Для примера откроем с gisserver.ru в диалоге Открытие данных с ГИС Сервера векторную карту, на закладке Растры выберем растр и нажмем Добавить.
В меню Файл\Сохранить как выберем пункт Проект карты (*.mpt).

Получим файл такого содержания (строки со знаком % в кодировке UTF-8):
Код
[MAP]
PATH=HOST#gisserver.ru#2047#ALIAS#Noginsk
SCALE=200000
[SITELIST]
COUNT=0
[RSTLIST]
PATH1%=%HOST#gisserver.ru#2047#ALIAS#Ногинск - растр
COUNT=1
[MTRLIST]
COUNT=0
[MTQLIST]
COUNT=0
COUNT=0
[TINLIST]
COUNT=0
[MTLLIST]
COUNT=0
[MTDLIST]
COUNT=0
[WMSLIST]
COUNT=0
[INSET]
COUNT=0

Минимально он мог бы быть таким:
Код
[MAP]
PATH=HOST#gisserver.ru#2047#ALIAS#Noginsk
[RSTLIST]
COUNT=1
PATH1%=%HOST#gisserver.ru#2047#ALIAS#Ногинск - растр
 
Значит при создании карты я программно должен записать в файл-данных карты строку с растром, а при открытии считать данный путь и открыть. Вопрос: есть ли API для выполнения данной процедуры или это на моё усмотрение?  
 
Сохранить проект из открытых данных можно так:
Код
  // Сохранить список открытых наборов данных и их свойства в проекте данных MPT
  // hmap - идентификатор открытых данных
  // name - имя файла проекта MPT (структура, как INI-файла)
  // При ошибке возвращает ноль

_MAPIMP long int _MAPAPI mapSaveProjectUn(HMAP hMap, const WCHAR * name);

Открыть проект можно как любой другой набор данных -
Код
  // Открыть данные с автоматическим определением их типа
  // (векторные,растровые,матричные...)
  // name - имя открываемого файла (MAP, SIT, MTW, RSW, MPT) в кодировке UNICODE
  // mode - режим чтения/записи (GENERIC_READ, GENERIC_WRITE или 0)
  // GENERIC_READ - все данные только на чтение, при этом не открываются
  // файлы \Log\name.log и \Log\name.tac - протокол работы и журнал транзакций
  // error - после выполнения функции переменная содержит код ошибки
  //        (когда HMAP равен 0) или 0; коды ошибок приведены в maperr.rh
  // password - пароль доступа к данным из которого формируется 256-битный код
  //            для шифрования данных (при утрате пароля данные не восстанавливаются) или ноль
  // size     - длина пароля в байтах или ноль
  // Передача пароля необходима, если при создании карты он был указан.
  // Если пароль не передан, а он был указан при создании,
  // то автоматически вызывается диалог scnGetMapPassword из mapscena.dll (gisdlgs.dll)
  // Если выдача сообщений запрещена (mapIsMessageEnable()), то диалог
  // не вызывается, а при отсутствии пароля происходит отказ открытия данных
  // После завершения использования карты необходимо освободить ресурсы функцией mapCloseData
  // При ошибке возвращает ноль

_MAPIMP HMAP _MAPAPI mapOpenAnyDataPro(const WCHAR *name, long int mode, long int *error, const WCHAR *password, long int size);
Страницы: 1 2 След.
Читают тему (гостей: 1)



© КБ Панорама, 1991-2024

Регистрируясь или авторизуясь на форуме, Вы соглашаетесь с Политикой конфиденциальности