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

Получение кода объекта классификатора

Поиск  Пользователи  Правила  Войти
Форум » Linux » Средства разработки ГИС-приложений для Linux
Страницы: 1
RSS
Получение кода объекта классификатора, Получение кода объекта классификатора
 
Добрый день!

Получаю количество объектов в классификаторе с помощью метода  mapSiteRscObjectCount(hmap,hsite). Далее мне необходимо получить код каждого объекта, подскажите какой метод использовать?
Причем, стоит отметить, что я не знаю, на каком из слоев находится объект.
 
Код
  // Запросить число объектов описанных в классификаторе  // hMap   - идентификатор открытой основной карты
  // hSite - идентификатор открытой пользовательской карты
  // При ошибке возвращает ноль
_MAPIMP long int _MAPAPI mapSiteRscObjectCount(HMAP hMap,HSITE hSite);

Обычно после этого перебираются объекты от 1 до полученного числа и это получается incode (порядковый номер) объекта в классификаторе для функций из раздела "ФУНКЦИИ РАБОТЫ С ОБ'ЕКТАМИ ИЗ КЛАССИФИКАТОРА ОБЪЕКТОВ" файла rscapi.h.

Не совсем понятно, что именно Вы хотели сделать.
 
Цитата
Vladimir Letov написал:
Код
   // Запросить число объектов описанных в классификаторе  // hMap   - идентификатор открытой основной карты
  // hSite - идентификатор открытой пользовательской карты
  // При ошибке возвращает ноль
_MAPIMP long int _MAPAPI mapSiteRscObjectCount(HMAP hMap,HSITE hSite);

 
Обычно после этого перебираются объекты от 1 до полученного числа и это получается incode (порядковый номер) объекта в классификаторе для функций из раздела "ФУНКЦИИ РАБОТЫ С ОБ'ЕКТАМИ ИЗ КЛАССИФИКАТОРА ОБЪЕКТОВ" файла rscapi.h.

Не совсем понятно, что именно Вы хотели сделать.
Мне нужно получить excode
 
Здравствуйте!

Для получения информации об объекте (в частности, классификационного кода) применяется функция mapGetRscObject (rscapi.h):
Код
// Заполнить структуру описания объекта
// RSCOBJECT -  структура входных данных  (см. maptype.h)
// hRsc - идентификатор классификатора карты
// incode - порядковый номер объекта (с 1)
// При ошибке возвращает ноль , иначе порядковый номер объекта

_MAPIMP  long int  _MAPAPI mapGetRscObject(HRSC hRsc,long int incode, RSCOBJECT * object);

Пример использования данной функции можно посмотреть в разделе "3.6.19 Работа с классификатором карты и библиотекой условных знаков" Руководства программиста (http://gistoolkit.ru/download/doc/gisdesigner_prog.pdf).
 
Спасибо, сейчас попробую.

А Вы не подскажите почему этот вариант не работает должным образом

  int countObj = mapSiteRscObjectCount(hmap,hsite);  // получаю количество объектов в классификаторе
  for(int i=1;i<=countObj; i++)
    {
       int lay = mapGetRscObjectSegment(myHrsc,i);   // Получаю номер слоя, в котором находится объект
        std::cout<<"lay = "<<lay<<std::endl;
        std::cout<<"code obj all = "<<mapSiteRscObjectExcodeInLayer(hmap, hsite,lay,i)<<std::endl;   // получаю внешней код. Выводится ошибка для объектов в 15, 17, 12,3, 14, 8 и др.

    }

По идее, я же сначала получаю слой в котором находится объект, а затем пытаюсь получить внешний код объекта.


ДЛя 0-го я получаю корректные значение
 

lay = 0

code obj all = 1000000001

lay = 0

code obj all = 1000000002

lay = 0

code obj all = 1000000003

lay = 0

code obj all = 1000000004

lay = 0

code obj all = 1000000005

lay = 0

code obj all = 1000000006

lay = 0

code obj all = 1000000007

lay = 0

code obj all = 1000000008

lay = 0

code obj all = 1000000009

lay = 0

 
Цитата
Анастасия написал:
for(int i=1;i<=countObj; i++)    
{      
int lay = mapGetRscObjectSegment(myHrsc,i);   // Получаю номер слоя, в котором находится объект        
std::cout<<"lay = "<<lay<<std::endl;        
std::cout<<"code obj all = "<<mapSiteRscObjectExcodeInLayer(hmap, hsite,lay,i)<<std::endl;   // получаю внешней код.
Выводится ошибка для объектов в 15, 17, 12,3, 14, 8 и др.    
}

Здесь в функцию mapSiteRscObjectExcodeInLayer необходимо передавать порядковый номер объекта в слое (не во всем классификаторе).
Число объектов в слое можно узнать с помощью функции mapSiteRscObjectCountInLayer (rscapi.h):
Код
// Запросить число объектов описанных в классификаторе
// в заданном слое
// hMap   - идентификатор открытой основной карты
// hSite  - идентификатор открытой пользовательской карты
// layer  - номер слоя
// При ошибке возвращает ноль

_MAPIMP long int _MAPAPI mapSiteRscObjectCountInLayer(HMAP hMap, HSITE hSite, long int layer);
 
Да, спасибо, вопрос решен!
Страницы: 1
Читают тему (гостей: 1)



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

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