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

KFF (Автор тем)

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

Страницы: Пред. 1 ... 3 4 5 6 7 8 9 10 11 12 13 ... 48 След.
TMapScreen, Двухмониторный режим
 
Здравствуйте господа разработчики !

Подключили на рабочее место наше приложение у которого первая форма - информация с базы данных, вторая форма карта на базе TMapScreen
[IMG]http://delphi-gis.ucoz.ua/Images/ForForum/2014/img057.png[/IMG]

Мониторы имеет разрешение:
[IMG]http://delphi-gis.ucoz.ua/Images/ForForum/2014/img058.png[/IMG] [IMG]http://delphi-gis.ucoz.ua/Images/ForForum/2014/img059.png[/IMG]

ВОПРОС:
почему на втором мониторе, метрика которого не совпадает с основным, чёрная полоса в нижей части.

П.С. в первом мониторе чёрная полоса снизу - это сам рисунок.
Изменено: KFF - 15.10.2014 17:00:15
mapLengthToPoint
 
Здравствуйте господа разработчики !
Просьба ответить что меряет вот эта функция (при наличии подобъектов у линейного объекта)
и второй вопрос, как измерить длину до точки по контуру конкретного подобъекта  :?:

[CODE]// Вычисление длины объекта от начала до заданной точки
// Obj   - идентификатор объекта карты в памяти
// point - координаты точки; расположенной вдоль(вблизи) объекта
// Если точка не на объекте - ищется ближайшая точка на контуре
// Координаты точки обновляются!
// При ошибке возвращает 0

function  mapLengthToPoint(Obj : HObj; Point : PDoublePoint): double;
{$IFNDEF LINUXAPI} stdcall {$ELSE} cdecl {$ENDIF}
external sGisAcces;[/CODE]
Работа со строчными семантиками
 
Здравствуйте господа разработчики !

Просьба пояснить механизм работы со строчными семантиками длина значения которых превышает 255 символов.
Сразу предупреждаю, [B]семантика не повторяемая [/B]!
На данный момент, мне известны следующие функции
mapAppendSemantic
mapSetSemanticValue
mapDeleteSemantic
mapSemanticValue
mapSemanticCodeValue

первые две добавляют, третья удаляет а четвёртая и пятая функции читают семантики с объекта.
Например, у меня длина семантики 260 символов и содержит форматированный текст который разбирается внутри IML библиотеки
[I]9-UKBB\+00:00;9-KR\+00:00;9-CH\+00:00;9-DORER\+00:00;9-VABOD\+00:00;9-OSDOR\+00:00;9-ESALO\+00:00;9-OGLAR\+00:00;9-ODS\+00:00;9-BULAN\+00:00;8-RABEN\09:46;8-MIMKO\09:55;8-TEPLO\09:57;8-KONIP\10:01;8-UKBB\10:07;8-USTIL\09:42;7-5[/I]
Нужно получить то, что я отправляю с программы

работа ядра:
Семантика [B]разбивается на 2 части[/B] которые не вписываются в логику работы семантик , в частности
1. при удалении с ГИС Карты, каким то "чудным" образом, приложение "знает" что нужно удалить "хвост" бОльший 255 значений
2. при таком же удалении семантики номер Х, удаляется только первая её часть, а "хвост" НЕ удаляется
3. при выполнении команд  mapAppendSemantic для таких семантик - утверждение
[B] // Если такая семантика была и она не повторяемая - значение заменяется // 10/07/06[/B]
не выполняется. Объект дополняется новой парой значений
4. при попытке коррекции значения функцией mapSetSemanticValue корректируется только первая её часть
5. при чтении семантики - считывается только первая её часть

Как это вписывается в логику работы с НЕ ПЕРЕЧИСЛИМЫМИ семантиками ?
Как работать с такими семантиками?
Изменено: KFF - 29.09.2014 13:49:25
метрические функции ядра
 
Здравствуйте господа разработчики !

Я понимаю что созданная мною тема является очередным баяном.
Эти баяны создаются не потому что я хочу кого-то в чём то упрекнуть, а потому что,
вчера искал 15 минут ошибку. Ошибка оказалась в порядке организации доступа к функциям ядра.
Описание:
Создаётся объект у которого несколько подобъектов. Через функцию mapAppendPointGeoWgs84 добавляется
метрика НО. Часть точек метрики является результатом функции mapGetCrossPoint (то есть в плане)
В результате, получаю линейный объект-маршрут и вставленная точка "обрезки" в плане но через mapAppendPointGeoWgs84
На следующем витке приложения, эта метрика считывается функцией mapGetPointGeoWgs843d и
получаю "рекламное табло" с красной надписью [B]Floating point overflov[/B]
Средствами ГИС Оператора по клику на объект - получаю то же "рекламное табло"

Вопрос и просьба
Почему нельзя поставить на вход функция mapAppendPointGeoХХХ ограничения по "ГЕО"
на первый параметр -pi/2 .... pi/2 (широта)
на второй параметр -2*pi .... 2*pi (долгота) -
(диапазон распахнут потому что так сказала Е.Кузнецова http://gisweb.ru/forum/messages/forum14/topic6642/message46283/#message46283 )

то есть единственную строчку:
if (ABS(X)>PI/2) || (ABS(Y)>2*PI) return 0

ЕСЛИ технология не позволяет сделать этого, например, есть негласное правило что mapAppendPointХХХХХХ должна что-то добавить в любом случае, тогда
if (ABS(X)>PI/2) X=Sign(X)*PI/2; // обрезка до ±90°
if (ABS(Y)>2*PI) Y=2*Sign(Y)*PI; // обрезка до ±360°

В таком случае, оконечный программист получит ТО что Вы декларируете (ошибка при выполнении mapAppendPointGeoХХХ) или
корявые данные которые он вставил. НО это будет не "красная рекламная табличка"

П.С. кстати, эта же табличка вылетает при вставке координат ±90°(полюс) по широте при импорте с ARINC
mapCreateObjectCrossPoints
 
Здравствуйте господа разработчики !
Как найти пересечения объектов через mapCreateObjectCrossPoints (или аналог) с учётом 3D  :?:
Путанница в Автономной работе
 
Здравствуйте господа разработчики !

Начну "с плеча".
Прежде чем Бил Гейтс запустил в мир первую "многозадачную" операционную систему он приблизительно 10 лет
изучат предметную область и сферы её применения. КБ Панорама, "ввела" режим "Автономная работа" с карами
по принципу "авось пройдёт".
Свои слова о обосновываю тем, что открыл уже несколько тем по функции установки автономного доступа к карте
в которой мне ответили, что это режим работает по методу "кто хитрее тот и прав" то есть "кто первый залочил того и карта"

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

-------------
Теперь суть темы.
В своих приложениях мы отказались от использования "автономной работы с картой" до лучших времён, то есть до тех пор, пока в КБ выработается
чёткая концепция и внятный алгоритм работы нескольких приложений с одной картой..... НО проблема не в приложении, если я в этой ветке.
Проблема в другом...

В ГИС Карте 2011, я открываю некую карту Х по умолчанию. Запускаю второй экземпляр программы, неважно в этом же профиле пользователей или другом И
немогу редактировать объекты и их удалять. Закрываю оба экземпляра ГИС Карты, открываю по новому всё нормально.
Теперь представьте ситуацию с общей картой которую редактирует два пользователя в пределах одного ПК с разными профилями.
Один пошёл на обед, оставив открытой карту в своём экземпляре ГИС Карты, а второй в это время, что-то на ней пытается сделать
в результате у человека ничего не получается.

ВОПРОС: можно ли как то упорядочить технологию работы с основными продуктами КБ Панорама (ГИС Карта, ГИС Оператор, ГИС Мини ...)
в части касающейся "автономной работы" с картами. Если это сложно, то хотябы уберите флаг "Автономной работы" по умолчанию
что-бы не вводить в заблуждение пользователей.
П.С удаляю объект, а он не удаляется ни в какую
консультация по методу TMapScreen.ScreenRepaint
 
Здравствуйте господа разработчики ГТК.
Возник вопрос по методу ScreenRepaint компоненты TMapScreen
Наш код написан таким образом, что периодически, функция scrDrawMap внутри нижеописанного метода срабатывает аварийно (многонитевая программа - несколько TThread)
После сбоя, методу "уходит" в ветку except
Вопрос:
Что делает ветка except и когда она срабатывает ???

[CODE]procedure TMapScreen.ScreenRepaint(aPaintRectInWin : PRect);
var
 rect1 : TRECT;
 position : TPOINT;
 ScreenDc : HDC;
begin

 ScreenDc := 0;

try

 if FMapScreen = 0
    then exit;

 FPaintPosHor := MapLeft; // 16/01/2004
 FPaintPosVer := MapTop;

 if aPaintRectInWin <> nil
    then begin

      position.x := aPaintRectInWin.Left;
      position.Y := aPaintRectInWin.Top;

      rect1 := rect(aPaintRectInWin.Left   + FPaintPosHor,
    aPaintRectInWin.Top    + FPaintPosVer,
    aPaintRectInWin.Right  + FPaintPosHor,
    aPaintRectInWin.Bottom + FPaintPosVer);

    end
    else begin

      position.x := 0;
      position.Y := 0;

      rect1 := rect(FPaintPosHor,
                    FPaintPosVer,
    FPaintPosHor + width,
    FPaintPosVer + height);
    end;

 pf_scrDrawMap(FMapScreen, rect1, position);

 FScreenUpdateBeforePaint := false;  // 27/04/2009

 if Assigned(FOnMapScreenUpdate)
    then FOnMapScreenUpdate(Self, rect1, position.x, position.y);

//  FScreenUpdateBeforePaint := false; 27/04/2009

 except
   if ScreenDc <> 0
      then pf_scrReleaseDC(FMapScreen);
 end;

end;[/CODE]

----------------
Код содержит следующую переменную "судба которой "выглядит вот так:
[CODE]var
 ScreenDc : HDC;
begin
 ScreenDc := 0;
   ....
 try
....
 except
   if ScreenDc <> 0
      then pf_scrReleaseDC(FMapScreen);
 end;
end;[/CODE]
Второй вопрос, в каком случае срабатывает pf_scrReleaseDC ?
Сохранение карты на диск
 
Здравствуйте уважаемый разработчики !
Просьба пояснить чем отличаются функции

[CODE] // Выполнить согласование данных электронной карты
 // в памяти и на диске (при многопользовательском доступе
 // к данным)
 // hmap -  идентификатор открытых данных
 // Если состояние данных в памяти изменилось (по данным
 // с диска) - возвращает ненулевое значение (1), иначе 0
 // Если карта должна быть закрыта - возвращает 2
 // (доступ на ГИС Сервер прекращен!)
 // Если состояние изменилось - необходимо перерисовать
 // изображение карты
 // Опрос состояния целесообразно выполнять периодически
 // в процессе работы приложения
_MAPIMP long int _MAPAPI mapAdjustData(HMAP hMap);
[/CODE]
и
[CODE] // Сохранить данные на диск
 // при работе на Sparc-платформе также сохраняет данные в файлы Intel-платформы
 // hMap - идентификатор базовой карты
 // hSite - идентификатор пользовательской карты
 // При ошибке возвращает 0
_MAPIMP long int _MAPAPI mapFlushData(HMAP hMap, HSITE hSite);[/CODE]

Как и какую использовать в много-нитевой программе (TThread)
--------------------
ПО двум открытыми темам.
Имеется набор карт, на которых нужно выполнять "долгоиграющие" процессы не отвлекая пользователя от работы, например воссозданием аэронавигационной обсьтановки страны по состоянию на
для этого, нужно периодически выполнять сравнение содержимого карты с содержимым базы данных.
Из набора карт (12 штук) пользователь может выполнять какие то построения на одной из карт набора, при этом 4 карты обновлдяются воздушной обстановкой одной нитью (Thread)
Ещё три карты обновляются другой нитью (локационная обстановка - метки воздушных судов)
mapSetExclusiveAcces
 
[QUOTE] // Установить монопольный доступ ко всем открываемым векторным картам
// Ускоряет все операции редактирования карт за счет буферизации
// операций записи на диск при значении access не равном 0
// При монопольном доступе другие приложения не смогут
// редактировать карту
// Если какая-либо карта не может быть открыта в монопольном
// доступе - признак автоматически сбрасывается
// Возвращает новое значение признака монопольного доступа

_MAPIMP long int _MAPAPI mapSetExclusiveAccess(long int access);[/QUOTE]

Нужна консультация по этой функции.
Как она работает в приложении которое может открывать/переоткрывать наборы карт
Как она работает для много-нитевых приложений (TThread)
Как и когда признак сбрасывается в ноль и как его восстановить не зацикливая программу кодом
while mapGetExclusiveAccess()=0 do
mapSetExclusiveAccess(1);

Благодарю
НЕ МОГУ ВОЙТИ НА ФОРУМ БЕЗ ПРОКСИ
 
Здравствуйте господа администраторы и Веб программисты
Я не знаю что вы там прикрутили к движку, но при попытке зайти на форум попадаю вот сюда

http://www.acint.net/

На главную страницу зайти могу.
Просьба проверить.

П.С. вчера писал сообщение и когда нажал на "Отправить" меня перекинуло в вышеуказанный сайт
Всё сообщение потерялось.
Страницы: Пред. 1 ... 3 4 5 6 7 8 9 10 11 12 13 ... 48 След.



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

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