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

Поиск по площади объекта

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

Поиск по номеру объекта работает очень хорошо,
просим подсказать, как также найти площадной объект,
по значению его площади?

MapFind1.Active := false;
MapFind1.FindPoint := false;
MapFind1.MapSelect.Clear;
MapFind1.MapObj.Style := OS_SELECT;
MapFind1.MapSelect.ClearSemantic;
// MapFind1.MapSelect.MinKey := StrToInt(Edit1.Text); // Вместо этого, хотелось бы указать значение площади объекта
// MapFind1.MapSelect.MaxKey := StrToInt(Edit1.Text);
MapFind1.Active := true;
MapFind1.First;
 
Добрый день!

Можно воспользоваться MAPAPI для установки условий поиска по измерениям объектов - mapSelectMeasureAppend и др.

Скрытый текст


Цитата
// КОДЫ УСЛОВИЙ ПОИСКА ПО СЕМАНТИКЕ
typedef enum how      
{
   CMBAD      = 0,    // ОШИБКА В ДАННЫХ
   CMPASS     = 0,    // ОТСУТСТВИЕ КОДА СЕМАНТИКИ
   CMLESS     = 1,    // МЕНЬШЕ
   CMLESSEQ   = 3,    // МЕНЬШЕ ИЛИ РАВНО
   CMEQUAL    = 2,    // РАВНО
   CMNOTEQ    = 5,    // НЕ РАВНО
   CMMORE     = 4,    // БОЛЬШЕ
   CMMOREEQ   = 6,    // БОЛЬШЕ ИЛИ РАВНО
   CMANY      = 7,    // ЛЮБОЕ ЗНАЧЕНИЕ
   CMLAST     = 7,    // МАКСИМАЛЬНОЕ ЗНАЧЕНИЕ

   // КОДЫ ОБОБЩАЮЩИХ УСЛОВИЙ
   CMOR       = 16,   // "ИЛИ" - ХОТЯ БЫ ОДНО ВЫПОЛНЯЕТСЯ
   CMAND      = 32,   // "И"   - ВСЕ ДОЛЖНЫ ВЫПОЛНИТЬСЯ
}


// ТИП ИЗМЕРЕНИЙ ОБЪЕКТОВ ДЛЯ ПОИСКА
enum SELECTMEASURE            
{
  MEASURE_LENGTH      = 1,   // Длина (м)
  MEASURE_SQUARE      = 2,   // Площадь (кв.м)
  MEASURE_PERIMETER   = 3,   // Периметр (м)
  MEASURE_HEIGHT      = 10,  // Высота (м)
};
 
Да, Денис.
Я заметил что КБ Панорама семимильными шагами идет от визуальных компонентов к MapAPI
функциям. Так в версии 14.2 Free вдруг перестала работать добавление и запись семантики традиционным при применении визуальных компонент методом,
то что работало в 14.1 Free,
пришлось в срочном порядке переписывать тоже самое под MapAPI.
В целом понятен подход, будем разбираться и дописывать.
Спасибо за ответ.
 
Цитата
Сергей Викторович написал:
Так в версии 14.2 Free вдруг перестала работать добавление и запись семантики традиционным при применении визуальных компонент методом,то что работало в 14.1 Free,пришлось в срочном порядке переписывать тоже самое под MapAPI.

Методы компонентов GIS ToolKit никогда и не охватывали всю функциональность ГИС-ядра, представленную в виде MAPAPI-интерфейса.

Но! Что работало - должно работать.
Просьба сообщать обо всех найденных ошибках. Проверим и исправим.
 
Цитата
Цитата
Денис Вицко написал:
Методы компонентов GIS ToolKit никогда и не охватывали всю функциональность ГИС-ядра, представленную в виде MAPAPI-интерфейса.
Хочется подискутировать.
Думается, что одно другим можно легко дополнять.
Почему бы не писать например так:
form_main.MapFind1.Active := false;
form_main.MapFind1.FindPoint := false;
form_main.MapFind1.MapSelect.Clear;
form_main.MapFind1.MapObj.Style := OS_SELECT;
form_main.MapFind1.MapSelect.ClearSemantic;
mapSelectMeasureAppend(form_main.MapFind1.MapSelect.SelectHandle[0],2,6,StrToFloat(Edit2.Text),3,StrToFloat(Edit3.Text));
form_main.MapFind1.Active := true;
form_main.MapFind1.First;
Что тут криминального?
Как-то вы писали, что не стоит смешивать методы ГТК и MapAPI. Почему нет?
Что удобно под рукой то и пиши.
Другое дело, что похоже не нужно делать крен в ту или другую сторону,
имею ввиду или ГТК или MapAPI.
И то и другое должно поддерживаться одинаково.
Или я не прав?
 
Цитата
Сергей Викторович написал:
Как-то вы писали, что не стоит смешивать методы ГТК и MapAPI. Почему нет?

Смешивать можно. Иногда функционалом MAPAPI очень удобно дополнить возможности компонентов GTK.
Но делать это можно только при условии, что Вы понимаете поведение GTK при таком совмещении.

Самый простой пример (а есть более запутанные ситуации):
1. Открыли карту методом GTK - TMapView.MapOpen
2. Закрыли карту методом MAPAPI - mapCloseData(TMapView.MapHandle)
3. Получаем AccessViolation при любом обращении к TMapView и даже при закрытии формы, так как в понимании TMapView карта "еще жива".

То же самое в отношении любых хендлов (HMAP, HSITE, HOBJ, HSELECT и др.).

Цитата
Сергей Викторович написал:
Что тут криминального?

В данном конкретном случае - ничего.
HSELECT создан в TMapFind, Вы его снаружи только донастроили (не подменяли, не уничтожали).
Активация системы поиска TMapFind.Active будет использовать то, что настроено в HSELECT для каждой карты.
Страницы: 1
Читают тему (гостей: 1)



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

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