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

Получение значений семантики

Поиск  Пользователи  Правила  Войти
Форум » Настольные приложения » GIS ToolKit, GIS ToolKit Active, ГИС Конструктор для Windows
Страницы: 1 2 След.
RSS
Получение значений семантики
 
Здравствуйте !

Вопрос, как получить значение высоты = (0 метров) с этой функции, отслеживая одновременно наличие значения семантики ?
Использую эту функцию:
Код
function  mapSemanticCodeDoubleValue(Obj : HObj; code, number: integer):double;
 {$IFNDEF LINUXAPI} stdcall {$ELSE} cdecl {$ENDIF}
external sGisAcces;
Не тот глуп кто не знает, а тот, кто не знает где искать.
 
В вашей ситуации надо воспользоваться следующими функциями
// Запросить число семантических характеристик у объекта
// info  - идентификатор объекта карты в памяти
// При ошибке возвращает ноль

_MAPIMP long int _MAPAPI mapSemanticAmount(HOBJ info);

// Запросить значение семантической характеристики объекта
// Значение преобразуется в символьный вид без раскодирования
// info   - идентификатор объекта карты в памяти
// number - последовательный номер характеристики (c 1),
// value  - адрес размещения строки,
// size   - максимальная длина строки
// При ошибке возвращает ноль

_MAPIMP long int _MAPAPI mapSemanticValue(HOBJ info, long int number,
char *value, long int size);
 
и потом StrToFLoatDef(Trim(value), ....
объявить  value[0..255]of char
почистить FillChar(); ....



П.С. (крик души).
Посмотрите пожалуйста на всё это и задайте вопрос по эффективности использования некоторых функций ядра.
Господа разработчики, хочу заметить что приложения которые пишутся для каких то целей и ИНТЕРФЕЙСЫ ГИС которые используют сотни (тысячи) оконечных пользователей
совершенно разные понятия. Если в программе можно допустить оплошность или ударить в "штангу", то интерфейс (от слова фейс) - это лицо программистов которые его
создают, а соответственно и компании.  
Из всего сказанного поддерживаю стремления Александра Кружкова, который в одном изх своих постов написал ЗОЛОТУЮ фразу
"иногда смотришь на всё это и хочется всё переписать". Александр, Ваши слова да Богу и Генеральному в уши.
Не тот глуп кто не знает, а тот, кто не знает где искать.
 
Цитата
KFF пишет:
и потом StrToFLoatDef(Trim(value), ....
Семантика хранится в виде строки независимо от её реального типа данных. Так что сие - плата за универсальность.
 
Цитата
Газонокосильщик пишет:
плата за...
Александр, я не знаю что представляет собой "универсальность" но знаю, что все интерфейсные АПИ функции которые мне попадались под руку (Винды, ОпенЖэЛ, методы интерфейсов автокадова и.т.п) имеют универсальный формат:

function НАЗВАНИЕ(входящие параметры, исходящие параметры):код_ошибки_или_код0; stdcall(safecall); external БИБЛИОТЕКА

Если я в чём то не прав, поправьте меня и поясните, что такое "универсальность" для функция МапАПИ
Не тот глуп кто не знает, а тот, кто не знает где искать.
 
Заранее неизвестно, какой тип данных у семантики с кодом (номером) 4, поэтому у меня в АПИ есть вот такое
Код
        bool    __fastcall      GetAsChar(TAPIOBJ *aObj, WORD aCode, char *value);
        bool    __fastcall      GetAsInteger(TAPIOBJ *aObj, WORD aCode, int &aValue);
        bool    __fastcall      GetAsDouble(TAPIOBJ *aObj, WORD aCode, double &aValue);

А в чисто конкретной прикладной задаче я знаю, что Абсолютная высота - реальное число и использую GetAsDouble(), которая по любому сначала читает строку а потом превращает строку в реальное.
Цитата
KFF пишет:
что такое "универсальность" для функция МапАПИ
Я писал про универсальность хранения данных.
Цитата
KFF пишет:
имеют универсальный формат
ИМХО - не универсальный, а стандартный. В Си, кстати, куча функций, у которых сначала идут выходные параметры, а не входные.
 
Цитата
Газонокосильщик пишет:
В Си, кстати, куча функций, у которых сначала идут выходные параметры
суть в том, что эти параметры есть, в отличи от приведённой выше функции
Не тот глуп кто не знает, а тот, кто не знает где искать.
 
Приведенная выше функция возвращает результат сама, а не через OUT-параметр. В случае нуля - вопрос очень интересный. И таких функций в MapAPI достаточное количество.
 
Вы можете применить следующие функции:

Код
 // Запросить последовательный номер кода семантической
 // характеристики объекта (c 1)
 // info    - идентификатор объекта карты в памяти
 // code    - код семантической характеристики в классификаторе
 // При ошибке возвращает ноль

_MAPIMP long int _MAPAPI mapSemanticNumber(HOBJ info, long int code);

 // Запросить значение семантической характеристики объекта
 // в виде числа с плавающей точкой двойной точности
 // info    - идентификатор объекта карты в памяти
 // number  - последовательный номер характеристики (c 1)
 // Если значение семантики не может быть преобразовано
 // к числовому виду или не найдено - возвращает ноль

_MAPIMP double _MAPAPI mapSemanticDoubleValue(HOBJ info, long int number);

 
Цитата
Oleg Belenkov пишет:
_MAPIMP double _MAPAPI mapSemanticDoubleValue(HOBJ info, long int number);
HOBJ obj1 - отметка уреза на Балтийском море.
HOBJ obj2 - просто 0 (или NULL).
В обоих случаях функция вернёт 0. Как определить что первый 0 - это действительно значение высоты, а второй 0 - признак ошибки?
Страницы: 1 2 След.
Читают тему (гостей: 1)



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

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