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

Определение классификатора

Поиск  Пользователи  Правила  Войти
Форум » Настольные приложения » GIS ToolKit, GIS ToolKit Active, ГИС Конструктор для Windows
Страницы: 1
RSS
Определение классификатора
 
Добрый вечер, господа разработчики.Мне необходимо открыть основную карту, затем добавить две пользовательские карты и ещё добавить граф дорог. Всё эти карты имеют разные классификаторы. Всё классификаторы от этих карт я переместил в отдельный каталог (так я облегчил объем каталогов самих карт + сделал централизованное обновление классификаторов для них). Вот теперь при открытии и добавлении карт есть ли возможность указать программно, что эта карта должна использовать классификатор, который находится в таком та каталоге с таким то именем, а эта карта вот этот классификатор?  
 
Имя классификатора задается при создании карты. При открытии и добавлении не указывается.
Классификаторы с расширением RSC или RSCZ с одним именем считаются одним классификатором и открываются с любым расширением.


Контроль доступности классификатора можно выполнить функцией:
Код
  // Найти классификатор в текущей папке, папке приложения или общей папке классификаторов
  // name - имя классификатора (только имя или полный путь, автоматически ищутся файлы rsc и rscz) 
  // size - размер буфера для записи полного пути найденного классификатора,
  //        если размер равен нулю, то имя классификатора не перезаписывается найденным путем
  // При ошибке возвращает ноль

_MAPIMP long int _MAPAPI mapFindRsc(WCHAR * name, long int size);

Установить путь к общей папке классификаторов (для автоматического поиска при открытии/добавлении карт) можно функцией:
Код
// Установить путь к общим файлам классификаторам (RSC)
// При ошибке возвращает ноль

_MAPIMP long int _MAPAPI mapSetCommonRscPathUn(const WCHAR* rscpath);

// Запросить путь к общим файлам классификаторам (RSC)
// При ошибке возвращает пустую строку

_MAPIMP const WCHAR* _MAPAPI mapGetCommonRscPathUn();

При необходимости частого открытия/закрытия разных карт можно заблаговременно открыть их
классификаторы для ускорения доступа:
Код
  // Открыть классификатор в общем списке классификаторов для ускорения
  // последующего открытия/закрытия карт с этим классификаторов при потоковой обработке
  // name - имя  файла классификатора
  // При ошибке возвращает ноль, иначе идентификатор классификатора карты

_MAPIMP HRSC _MAPAPI mapOpenCommonRscUn(const WCHAR * name);
 
Добрый день, подскажите я в первую очередь открываю основную карту, далее к ней добавляю пользовательскую карту и еще добавляю граф ЖД дорог и граф АВТО дорог.
Как мне программно сделать:
1. Пользовательскую карту сделать основной, чтобы на нее объекты наносились.
2. На всех картах кроме пользовательской отключить редактирование и поиск.
 
Добрый день!

Сразу просьба на будущее: задавать новые вопросы по новым темам в новых ветках.
А также каждый раз указывать, каким инструментарием в какой среде разработки Вы пользуетесь.

Основной является карта (или растр, или матрица), которая открывается первой. Остальные добавляются к ней.
Изменить основную карту нельзя, только переоткрыть данные в другом порядке.

Но! К Вашему вопросу основная карта никак не относится. Речь о том, чтобы сделать доступным или недоступным выбор объектов на определенных картах и запрерить или разрешить их редактирование.

1. Редактирование
Во-первых, карту сразу можно открыть/добавить в режиме редактирования или только чтения. За это отвечает параметр mode методов TMapView.MapOpenPro и TMapView.AppendDataPro соответственно.
Во-вторых, для пользовательской карты можно включить или выключить флаг возможности редактирования программно: TMapSite.SiteEditFlag
В-третьих, если мы говорим о программной реализации, то это Вы сами управляете тем, разрешать ли редактирование объекта или нет. Вы сами контролируете к какой карте относится редактируемый объект  и можно ли выполнять такую операцию. Это наиболее правильный вариант, так как варианты "во-первых" и "во-вторых" просто выдадут ошибку уже при попытке сохранения объекта на карту, а что происходит до этого и какие режимы запускаются у Вас в программе они не знают.

2. Выбор объектов
Поиск/выбор объектов на карте отвечает контексту заданных условий поиска и выделения. Это не только разрешает/запрещает определенные карты, а также влияет на состав объектов (например, можно сказать - выбирать только площадные объекты слоя "гидрография").
Управление контекстом условий поиска выполняется с помощью класса TMapSelect. Включить для карты условия поиска - TMapSelect.SetSeekSelect, перед этим надо эти условия задать.
Страницы: 1
Читают тему (гостей: 1)



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

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