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

Dmitry S (Все сообщения пользователя)

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

Страницы: Пред. 1 2 3 4 5 6 7 8 След.
Очень долгий mapSelectSeekArea
 
Здравствуйте, попробовал реализовать поиск, пересекаемых маршрутом, линейных объектов.
[CODE]procedure AppendExCodeToSelect(MapHandle: HMap; sel: HSelect; exCode: Integer; aLocals: TLOCALS = []);
var
 l: TLOCAL;
 ii: Integer;
 iIncode : Integer;
 _rsc: HRsc;
begin
 _rsc := mapgetRscIdent(MapHandle, 0);

 if aLocals = [] then
   aLocals := [L_LINE, L_SQUARE, L_MARK, L_TEXT, L_VECTOR, L_PATTERN];

 for l in aLocals do
   for ii := 1 to mapGetRscObjectsCount(_rsc, exCode, ord(l)) do
     begin
       iIncode := mapGetRscObjectCodeByNumber(_rsc, exCode, ord(l), ii);
       mapSelectObject(sel, iIncode, 1);
     end;

end;


function FindCrossLineObjects(CurrMapObject: TMapObj): String;
var
 HS : HSelect;
 Finding: TMapObj;
 ZoneR: integer;
 exCode: integer;
 ZoneObj : HObj;
begin
 Result := '';
exCode := 31410000;

 ZoneR:= 1;
 ZoneObj := mapCreateCopyObject(MapScreen.MapHandle, CurrMapObject.ObjHandle);
 Finding:= TMapObj.Create(nil);
 HS := mapCreateMapSelectContext(MapScreen.MapHandle);
 try
   Finding.MapView := MapScreen;
   Finding.PlaceOut := PP_PLANE;
   // Построить зону
   if mapZoneObjectEx(ZoneR, ZoneObj, 0, 1, ZoneR/10, 3, 3) > 0 then
   begin //найти объекты в зоне
     // чистим все условия
     mapClearSelectContext(HS);
     // отменяем доступ ко всем
     mapSelectObject(HS, -1, 0);
     //добавим к селекту коды
     AppendExCodeToSelect(MapScreen.MapHandle, HS, exCode);
     //добавим к селекту область поиска
     mapSelectSeekArea(HS, ZoneObj, 0, 1);
     //запускаем поиск по условиям селекта
     if mapSeekSelectObject(MapScreen.MapHandle, Finding.ObjHandle, HS, cWO_FIRST) <> 0 then
     begin
       //обработка найденного
//...
       //ищем дальше
       while mapSeekSelectObject(MapScreen.MapHandle, Finding.ObjHandle, HS, cWO_NEXT) <> 0 do
         begin
           //обработка найденного
           //...
         end;
     end;
   end;

   Result := '...'
 finally
  if ZoneObj <> 0
    then mapFreeObject(ZoneObj);
   Finding.Free;
   mapDeleteSelectContext(HS);
 end;
end;
[/CODE]Алгоритм работает, НО!

За маршрут взял "непротяженную" 15 км дорогу, объектов интереса - около 10
 объекты интереса - мосты. Отрабатывает менее секунды.
 объекты интереса - реки. Отрабатывает почти секунду.

За маршрут взял "протяженную" 400 км дорогу, объектов интереса - около 20
 объекты интереса - мосты. Отрабатывает почти секунду.
 объекты интереса - реки. [B]Отрабатывает 50 секунд[/B][B].
[/B] объекты интереса - горизонтали (10 штук) 75 секунд.

т.е. получается поиск пересечения очень сильно зависит от длины объектов!
Причем меня-то интересовал пока только факт пересечения (т.е. номера объектов).

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

Суть проблемы:
- Отдельной команды для сохранения настроек не нашел
- Закрыть окно TMapPrintDialog можно только крестиком.
в компоненте есть строки (489)[CODE] if pFuncDlg(FMapView.MapHandle, PrinterH, Prnparm, Taskparm, pTitle) = 0
          then exit;[/CODE]Соответственно выход по крестику приводит к выходу и из цикла, и из Execute без сохранения настроек.
(Мне кажется, break тут уместнее)

GTK Free 12.5.9 (может в новых версиях поправили)
Принтер виртуальный.
библиотеки скачал свежие.
mapGetSelectRecordXML
 
Денис, спасибо за ответ.
Пример полностью воспроизвести не удалось,
т.к. в API не нашел mapPutSelectRecord[B]XML[/B], использовал mapPutSelectRecord.
Да и с  mapGetSelectRecordXML(hSelect, L"TestModel step 2"); немного не понял, у нас в АПИ 1 параметр - hSelect

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

История та же, в "Model name" что-то сильно напоминающее мусор:


и mapPutSelectRecord возвращает 0, файл XML похоже тоже невалидный.
Изменено: Dmitry Stasev - 26.09.2018 10:30:01
mapGetSelectRecordXML
 
Здравствуйте.
Хотел сохранить/восстановить ViewSelect (через XML)
Не получилось.

Пример

Нет ли примера использования этих функций, или укажите на ошибку.
Спасибо.
__
"GIS ToolKit Free" v.12.5.9
Delphi XE10
Выход новой версии Gis ToolKit, Выход новой версии Gis ToolKit
 
Здравствуйте, Денис!
Будут ли в новой версии сняты ограничения лицензии при подключении к геопорталам
(в безключевом варианте - для ознакомления)?
WMS/WFS быстрый старт
 
Здравствуйте!
С использованием сервисов WMS/WFS ранее не работал.
Но теперь (на новой работе) нужно "срочно и вчера".
Интересует любая информация для изучения:
компоненты, функции api, особенности использования и особо примеры.

Поэтому, кому не сложно, ткните носом,
спасибо!

(GTK12, DelphiXE7)
Ошибка загрузки DLL, Вызов функции MapRsc1.ShowDialogRsc Delphi XE3
 
[QUOTE]va4es2 написал:

А погуглить насчет отсутствующей длл?

Это известная проблема windows 10 anniversary update...[/QUOTE]
А прочитать всю ветку?
Я же выше даже ссылку давал.
Думаю это очень известная проблема в очень узких кругах )
Ошибка загрузки DLL, Вызов функции MapRsc1.ShowDialogRsc Delphi XE3
 
Да, извиняюсь, немного путаницы внес.
Тестировал набор Александра с GTK-free 12 x32 (gisu*.dll), правда версия его библиотек - устаревшая.

Тестировал так: скачал с сайта MS - чистый iso win 10, установил его на виртуальную машину Virtual Box,
Скопировал папку с программой и gisu*.dll в ней,
попробовал вызвать редактор классификатора...

Т.е. имелось ввиду, что с его старой GTK12 такие проблемы, вероятно и с новой они будут.
Ошибка загрузки DLL, Вызов функции MapRsc1.ShowDialogRsc Delphi XE3
 
Привет всем, вроде нашел корни проблемы )
В общем, на машине, с вин10  без обновок (и на всех виндах более ранних), gisuforms.dll  вызывается без проблем.
У тех вин10, кто обновился (проверено на 3 машинах) - gisuforms.dll (наверное и некоторые другие) не загружаются.
А проблема в вин10, точнее в ее последних обновках, где [B]что-то поменяли в функциях GDI[/B] и теперь за какими-то граф. функциями gisuforms пытается забраться в "ext-ms-win-gdi-desktop-l1-1-0.dll" (проверено в мониторе процессов), которой в инсталляции винды нет.

более подробно о проблеме можно глянуть на форуме MS [URL=http://answers.microsoft.com/en-us/windows/forum/windows_10-update/windows-10-anniversary-update-causes-ext-ms-win/831d925c-e7d2-4b11-be06-1714c51f0492]тут[/URL].

Кстати, там на форуме есть ссылка на вышеупомянутый файл, антивирусник на него заругался,
что возможно - троян.... но я его все же попробовал - бросил в папку с прогой, помогло.

Не знаю, может в 12ГТК и нет такой проблемы, но в 11 присутствует.
ViewSelect слои и выделение объектов
 
Если бы в объекте TMapViewWindow было свойство ObjectSelect: TMapSelect, все было бы ясно и понятно, тем более     [CODE]FObjSelect : TMapSelect; // парметры выделения объектов [/CODE] там присутствует, да и дополнительные функции типа [CODE]MapScreen1.ViewSelect.SetSiteEnabledForSample;
   MapScreen1.SetViewSelected(true, clAqua);[/CODE]вряд ли бы понадобились
Страницы: Пред. 1 2 3 4 5 6 7 8 След.



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

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