Здравствуйте!
[QUOTE]Анастаия написал:
1) Вы не уточните как именно создать карту по открытой карте. Могу я воспользоваться методом mapCopySite, чтобы скопировать пользовательскую карту с нанесенными объектами?[/QUOTE]
Вы можете использовать функцию mapCopySite, чтобы скопировать карту именно физическим переносом файлов на диске.
Вероятно, Вам лучше подойдет следующий алгоритм:
- создать новую карту (описано ранее);
- скопировать объекты со старой карты на новую с помощью функции mapReadCopyObject (mapapi.h).
Пример реализации копирования объектов можно посмотреть в п.3.6.27 "Копирование объектов на другую карту с изменением системы координат" Руководства программиста ([URL=http://gistoolkit.ru/download/doc/gisdesigner_prog.pdf]http://gistoolkit.ru/download/doc/gisdesigner_prog.pdf[/URL])
[QUOTE]Анастаия написал:
2) Попробовала реализовать свою задумку с помощью метода mapCreateAndAppendSite (создание пользовательской карты по открытой).Код QString mapName = QFileDialog::getOpenFileName(this, 0, 0, CodecKOI8R->toUnicode("*.map;; *.sit;; *.sitx"));
std::strncpy(fullname, CodecKOI8R->fromUnicode(mapName).data(), sizeof(fullname));
mapName = QFileDialog::getOpenFileName(this, 0, 0, CodecKOI8R->toUnicode("*.rsc"));
std::strncpy(fullrss, CodecKOI8R->fromUnicode(mapName).data(), sizeof(fullrss));
CREATESITE createsite;
HSITE TmpTest = mapCreateAndAppendSite(hmap, fullname,fullrss, &createsite);
std::cout<<"TmpTest = "<<TmpTest<<" "<<createsite.MapName<<std::endl;Но в результате этот метод возращает ошибку, т.е 0.[/QUOTE]
Корректность работы функции mapCreateAndAppendSite можно проверить на следующем примере, чтобы не отлаживать Qt-код:
[CODE] HMAP mapHandle = mapOpenData("/tmp/Noginsk/Noginsk.sit");
assert(mapHandle);
CREATESITE createSite;
memset(&createSite, 0, sizeof(createSite));
HSITE siteHandle = mapCreateAndAppendSite(mapHandle, "/tmp/appended.sitx", "/tmp/Noginsk/topo200t.print.rsc", &createSite);
assert(siteHandle);
mapCloseData(siteHandle2);
mapCloseData(mapHandle);[/CODE]Карту Ногинска можно использовать из инсталляции ГИС Конструктор.
[QUOTE]Анастаия написал:
3) Также Вы не подскажите, где осуществляется привязка карты и файла с классификаторами и как задать эту привязку. Т.е я открываю карту *.map, а далее я знаю, что все зависимые карты открылись автоматически и я просто могу получить при необходимости указатель на идентификатор классификатора карты.
4) Также интересует вопрос могу ли я к одной карте подключить несколько файлов ресурсов (*.rsc) ?
[/QUOTE]
Каждая карта создается с одним классификатором, т.е. "привязка" осуществляется на этапе создания.
К базовой карте могут быть добавлены карты, каждая созданная со своим классификатором.
[QUOTE]Анастаия написал:
1) Вы не уточните как именно создать карту по открытой карте. Могу я воспользоваться методом mapCopySite, чтобы скопировать пользовательскую карту с нанесенными объектами?[/QUOTE]
Вы можете использовать функцию mapCopySite, чтобы скопировать карту именно физическим переносом файлов на диске.
Вероятно, Вам лучше подойдет следующий алгоритм:
- создать новую карту (описано ранее);
- скопировать объекты со старой карты на новую с помощью функции mapReadCopyObject (mapapi.h).
Пример реализации копирования объектов можно посмотреть в п.3.6.27 "Копирование объектов на другую карту с изменением системы координат" Руководства программиста ([URL=http://gistoolkit.ru/download/doc/gisdesigner_prog.pdf]http://gistoolkit.ru/download/doc/gisdesigner_prog.pdf[/URL])
[QUOTE]Анастаия написал:
2) Попробовала реализовать свою задумку с помощью метода mapCreateAndAppendSite (создание пользовательской карты по открытой).Код QString mapName = QFileDialog::getOpenFileName(this, 0, 0, CodecKOI8R->toUnicode("*.map;; *.sit;; *.sitx"));
std::strncpy(fullname, CodecKOI8R->fromUnicode(mapName).data(), sizeof(fullname));
mapName = QFileDialog::getOpenFileName(this, 0, 0, CodecKOI8R->toUnicode("*.rsc"));
std::strncpy(fullrss, CodecKOI8R->fromUnicode(mapName).data(), sizeof(fullrss));
CREATESITE createsite;
HSITE TmpTest = mapCreateAndAppendSite(hmap, fullname,fullrss, &createsite);
std::cout<<"TmpTest = "<<TmpTest<<" "<<createsite.MapName<<std::endl;Но в результате этот метод возращает ошибку, т.е 0.[/QUOTE]
Корректность работы функции mapCreateAndAppendSite можно проверить на следующем примере, чтобы не отлаживать Qt-код:
[CODE] HMAP mapHandle = mapOpenData("/tmp/Noginsk/Noginsk.sit");
assert(mapHandle);
CREATESITE createSite;
memset(&createSite, 0, sizeof(createSite));
HSITE siteHandle = mapCreateAndAppendSite(mapHandle, "/tmp/appended.sitx", "/tmp/Noginsk/topo200t.print.rsc", &createSite);
assert(siteHandle);
mapCloseData(siteHandle2);
mapCloseData(mapHandle);[/CODE]Карту Ногинска можно использовать из инсталляции ГИС Конструктор.
[QUOTE]Анастаия написал:
3) Также Вы не подскажите, где осуществляется привязка карты и файла с классификаторами и как задать эту привязку. Т.е я открываю карту *.map, а далее я знаю, что все зависимые карты открылись автоматически и я просто могу получить при необходимости указатель на идентификатор классификатора карты.
4) Также интересует вопрос могу ли я к одной карте подключить несколько файлов ресурсов (*.rsc) ?
[/QUOTE]
Каждая карта создается с одним классификатором, т.е. "привязка" осуществляется на этапе создания.
К базовой карте могут быть добавлены карты, каждая созданная со своим классификатором.