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

Роман Твердов (Все сообщения пользователя)

Поиск  Пользователи  Правила  Войти
Форум » Пользователи » Роман Твердов
Выбрать дату в календареВыбрать дату в календаре

Страницы: Пред. 1 2 3 4 5 6 7 8 9 10 11 ... 24 След.
Как отключить выбор отключенных объектов, Как отключить выбор отключенных объектов
 
Думаю, идея будет понятна. Примерно так[CODE]var
NewObj : HOBJ;

...
// перебор в цикле
 NewObj := mapSeekViewObject(form_main.mvMap.MapHandle,form_main.MapObj1.ObjHandle, form_main.mvMap.ViewSelect.SelectHandle[0],WO_VISUAL + WO_NEXT);
 if NewObj = 0
   then begin
     showmessage('Больше нет объектов, удовлетворяющих условия');
     break;
   end  
   else begin
     showmessage('Найден объект!');
     Return NewObj;
   end;
// перебор в цикле    
...
[/CODE]
Как отключить выбор отключенных объектов, Как отключить выбор отключенных объектов
 
Сергей Викторович, добрый день.

mapSeekViewObject возвращает объект (HOBJ), который удовлетворяет параметрам поиска.

Необходимо перебирать объекты данной функцией.
Как отключить выбор отключенных объектов, Как отключить выбор отключенных объектов
 
Для поиска объектов с учетом видимости Вам необходимо использовать метод [CODE] // Поиск объектов по заданным условиям среди отображаемых объектов
// (пересечение заданных условий с условиями отображения)
// hMap     - идентификатор открытой карты;
// info     - идентификатор существующего объекта;
//            в котором будет размещен результат поиска.
// select   - условия поиска объекта
// flag     - порядок поиска объектов (WO_FIRST; WO_NEXT...)
// Если объект не найден - возвращает ноль

function mapSeekViewObject(Map:HMap;Obj:HObj;Select:HSelect;flag:integer= cWO_FIRST):HObj;
 {$IFNDEF LINUXAPI} stdcall {$ELSE} cdecl {$ENDIF};
 external sGisAcces;

[/CODE]

[CODE] // Флажки; определяющие ПОРЯДОК ПОИСКА ОБЪЕКТОВ
// Первый в цепочке;последний;следующий за найденным ранее;
// предыдущий; вместе c удаленными; только в заданной карте.
// Если указано WO_INMAP - номер карты определяется
// из HSELECT !
// Поиск начинается с флажков WO_FIRST или WO_LAST (если нет
// объекта с которого начинается поиск); затем применяются
// флажки WO_NEXT или WO_BACK (например; в цикле).
// enum SEEKTYPE        // ПОРЯДОК ПОИСКА ОБ'ЕКТОВ
// {
//    WO_FIRST  = 0,         // Первый в цепочке
//    WO_LAST   = 2,         // Последний в цепочке
//    WO_NEXT   = 4,         // Следующий за найденным ранее
//    WO_BACK   = 8,         // Предыдущий от ранее найденного
//    WO_CANCEL = 16,        // Включая удаленные объекты
//    WO_INMAP  = 32,        // Только по одной карте (соответствующей HSELECT)
//    WO_VISUAL = 64,        // Поиск только среди видимых объектов
//    WO_VISUALIGNORE = 128, // Поиск среди всех объектов без учета видимости
// };
[/CODE]
Вам необходимо перебирать объекты с флагом WO_VISUAL.



Также можете воспользоваться методом, который используется в компоненте поиска[CODE] // Поиск объектов в окрестности точки, заданной прямоугольной рамкой,
// удовлетворяющих условиям поиска
// hMap - идентификатор открытой карты.
// Obj - идентификатор объекта в памяти;
//        предварительно созданного функцией mapCreateObject()
//        или mapCreateSiteObject();
//        в котором будет размещен результат поиска.
// Поиск выполнется среди тех объектов;которые
// соответствуют условиям HSELECT !
// select- контекст условий выбора объектов;
// place - система координат;
// frame - прямоугольная область поиска объекта в системе координат;
//         заданной переменной place (PP_PLANE;PP_GEO; ...)
// flag  - порядок поиска объектов (WO_FIRST; WO_NEXT...)
// Выбор объекта в "точке" лучше начинать с последнего; то
// есть того; что нарисован поверх остальных (это чуть медленнее
// прямого поиска).
// При поиске с флажками WO_NEXT;WO_BACK параметр info должен
// содержать результат предыдущего поиска.
// Если объект не найден - возвращает ноль;
// иначе - возвращает значение info !


function mapWhatObjectBySelect(Map:HMap;Obj:HObj;
                              var frame:TMAPDFRAME;
                              select :HSELECT; flag:integer;
                              place:integer):HObj;
 {$IFNDEF LINUXAPI} stdcall {$ELSE} cdecl {$ENDIF};
 external sGisAcces;
[/CODE]
Как отключить выбор отключенных объектов, Как отключить выбор отключенных объектов
 
Добрый день.
Вам необходимо установить условия поиска = условиям отображения, а далее уже запускать поиск в точке.

[CODE] MapFindObject.MapSelect := mvMap.ViewSelect; // чтобы выбирались только видимые

      MapFindObject.FindPoint := true;
      MapFindObject.X         := mvMap.MapLeft + MouseUpX;
      MapFindObject.Y         := mvMap.MapTop + MouseUpY;
      MapFindObject.Radius    := iFindRadius;
      MapFindObject.Active    := true;
[/CODE]
Как сохранить условный знак из классификатора объектов в bmp, mapPaintExampleRscObject
 
Добрый день.
Вы передаете в функцию  mapPaintExampleRscObject  ключ объекта. В функцию необходимо передавать внутренний код объекта в классификаторе - incode. Если смотреть по Вашему коду, то необходимо  передать 31.
[CODE] // Отобразить образец вида объекта по номеру записи
// в классификаторе объектов (incode)
// hmap - идентификатор открытой карты
// hrsc - идентификатор классификатора открытой карты
// hdc  - идентификатор контекста устройства вывода,
// rect - координаты клиентской области окна вывода (размер окна)
// При ошибке возвращает ноль

_MAPIMP long int _MAPAPI mapPaintExampleRscObject(HMAP hmap, HRSC hrsc,
                                                 HDC hdc, RECT *rect,
                                                 long int incode);
[/CODE]
Экспорт в DXF 3d-граней
 
Добрый день.
При конвертации штатным экспортом (в составе ГИС Панорама) в dxf возможно преобразование в объекты типа 3DPolyLine при наличии в каждой точке метрики третьей координаты.
В Конверторе крупномасштабных планов в формат dxf ([URL=http://gisinfo.ru/download?id=192]http://gisinfo.ru/download?id=192[/URL]) есть возможность выгрузки объектов в тип 3DFace.
TMapView добавление множества объектов, Оптимизация отрисовки
 
Добрый день.
Api по работе с классификатором карты смотрите в  rscapi.h
TMapView добавление множества объектов, Оптимизация отрисовки
 

Номер объекта в карте .

aiMapSelect.SetSelectKey(MapObj.Key, MapObj.Key)

handle  - это указатель на объект карты  в памяти.

TMapView добавление множества объектов, Оптимизация отрисовки
 
Добрый день.
Функция находится в библиотеке gisacces.dll.
[QUOTE]для для работы через mapapi требуется чтобы и карта открывалась через него[/QUOTE]
Нет, не надо. Компоненты - это, грубо говоря, надстройка над mapapi.
Вам надо взять MapHandle от MapView и его передать в api функцию в качестве hMap. Если у открыта одна карта, то передаете hSite = MapHandle.

[QUOTE]При создании объекта на карте через CreateObjectByKey я получаю HOBJ. После работы MapFind в свойстве mapObjec.ObjHandle немного другой идентификатор получаю.. подскажите, пожалуйста, как их свести в 1 к 1 т.е. сопоставить?[/QUOTE]
MapFind - компонент для поиска объектов по заданным условиям. В MapFind Вы задаете условие на выборку объектов и переходите по записям, попавшим в нее. Переходом по записям в MapFind управляете Вы. CreateObjectByKey  возвращает указатель на новый объект.
После создания объекта (после commit) Вы можете запросить номер объекта и задать его в качестве параметра поиска в MapFind.

Крайне не рекомендуется использовать один и тот же компонент на форме MapObject для создания/редактирования объектов и поиска. Используйте 2 отдельных компонента, чтобы избежать путаницы: один связанный с MapFind для получения информации об объекте в результате поиска, а второй для создания/редактирования объектов карты.

Кроме этого, учитывая то, что Вы хотите ускорить нанесение объектов  на карту, то не выполняйте после каждого создания объекта поиск.
TMapView добавление множества объектов, Оптимизация отрисовки
 
Добрый день.
Перед нанесением объектов необходимо выставить свойство Rendering в false, а после обратно в true.

Дополнительно для ускорения нанесение объектов можете воспользоваться API функций ядра mapSetLoadState
[CODE] // Установить/запросить для карты режим потоковой загрузки данных
 // Применяется для ускорения загрузки данных из обменных форматов при создании карты
 // В процессе загрузки данных другие потоки или процессы не должны выполнять редактирование карты
 // hMap  -  идентификатор открытых данных
 // hSite -  идентификатор открытой пользовательской карты
 // state -  режим потоковой загрузки данных (1 - включен, 0 - выключен)
 // В режиме потоковой загрузки данных отключается журналирование операций
 // При ошибке возвращает ноль

_MAPIMP long int _MAPAPI mapSetLoadState(HMAP hMap, HSITE hSite, long int state);
_MAPIMP long int _MAPAPI mapGetLoadState(HMAP hMap, HSITE hSite);
[/CODE]
Страницы: Пред. 1 2 3 4 5 6 7 8 9 10 11 ... 24 След.



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

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