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

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

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

Страницы: Пред. 1 2 3 4 5 6 7 8 9 10 11 ... 409 След.
Получение изображения объекта из классификатора
 
В наборе прототипов скриптов (mapapi.py) есть указанная функция -
[CODE]# Вывести изображение условного знака в XImage (массив)
# Описание структуры XIMAGEDESC в maptype.h
# rect - фрагмент для вывода отображения
# func - функция отображения объекта
# parm - параметры изображения
# colors - количество цветов
# palette - палитра
# text - необходимый текст
# local - локализация
# При ошибке в параметрах возвращает ноль

   mapPaintExampleObjectByFuncToXImagePro_t = mapsyst.GetProcAddress(acceslib,ctypes.c_int,'mapPaintExampleObjectByFuncToXImagePro', maptype.HMAP, ctypes.POINTER(maptype.XIMAGEDESC), ctypes.POINTER(maptype.RECT), ctypes.c_int, ctypes.c_char_p, ctypes.c_int, ctypes.POINTER(maptype.COLORREF), maptype.PWCHAR, ctypes.c_int, ctypes.c_int)
   def mapPaintExampleObjectByFuncToXImagePro(_hMap: maptype.HMAP, _imagedesc: ctypes.POINTER(maptype.XIMAGEDESC), _rect: ctypes.POINTER(maptype.RECT), _func: int, _parm: ctypes.c_char_p, _colors: int, _palette: ctypes.POINTER(maptype.COLORREF), _text: mapsyst.WTEXT, _local: int, _erase: int) -> int:
       return mapPaintExampleObjectByFuncToXImagePro_t (_hMap, _imagedesc, _rect, _func, _parm, _colors, _palette, _text.buffer(), _local, _erase)[/CODE]
Особенности написания скриптов с функциями MAPAPI описаны в Help -

[URL=https://help.gisserver.ru/v15/russian/mapscena/index.html?runpy.html]https://help.gisserver.ru/v15/russian/mapscena/index.html?runpy.html[/URL]
[URL=https://help.gisserver.ru/v15/russian/mapscena/index.html?python_script_struct.html]https://help.gisserver.ru/v15/russian/mapscena/index.html?python_script_struct.html[/URL]

Все базовые функции имеют прототипы на python (или могут быть дополнены) и алгоритм на C++ может быть полностью воспроизведен.

Например:
[CODE]# Запросить текущую палитру карты (с учетом яркости/контрастности)
# hMap   - идентификатор открытой основной карты
# hSite  - идентификатор открытой пользовательской карты
# colors - указатель на структуру COLORREF первого цвета в палитре
# count  - количество цветов (не более 256)
# При ошибке возвращает ноль

   mapGetSitePalette_t = mapsyst.GetProcAddress(acceslib,ctypes.c_int,'mapGetSitePalette', maptype.HMAP, maptype.HSITE, ctypes.POINTER(maptype.COLORREF), ctypes.c_int)
   def mapGetSitePalette(_hMap: maptype.HMAP, _hSite: maptype.HSITE, _colors: ctypes.POINTER(maptype.COLORREF), _count: int) -> int:
       return mapGetSitePalette_t (_hMap, _hSite, _colors, _count)
[/CODE][CODE]# Запросить параметры отображения (принтерного)объекта по внутреннему коду объекта
# hRsc - идентификатор классификатора карты
# incode - внутренний код объекта
# При ошибке возвращает ноль

   mapGetRscPrintObjectParameters_t = mapsyst.GetProcAddress(acceslib,ctypes.c_char_p,'mapGetRscPrintObjectParameters', maptype.HRSC, ctypes.c_int)
   def mapGetRscPrintObjectParameters(_hRsc: maptype.HRSC, _incode: int) -> ctypes.c_char_p:
       return mapGetRscPrintObjectParameters_t (_hRsc, _incode)

# Запросить параметры отображения объекта по внутреннему коду
# hRsc - идентификатор классификатора карты
# incode - внутренний код объекта
# При ошибке возвращает ноль

   mapGetRscObjectParameters_t = mapsyst.GetProcAddress(acceslib,ctypes.c_char_p,'mapGetRscObjectParameters', maptype.HRSC, ctypes.c_int)
   def mapGetRscObjectParameters(_hRsc: maptype.HRSC, _incode: int) -> ctypes.c_char_p:
       return mapGetRscObjectParameters_t (_hRsc, _incode)
[/CODE]
Функции mapGetMapInfoEx и mapGetWorkSystemParameters заполняют структуру MAPREGISTEREX по-разному
 
Эти функции не заполняют параметры, а копируют в одном случае параметры карты (mapGetMapInfoEx), которые были установлены при ее создании,
а в другом случае (mapGetWorkSystemParameters) параметры рабочей системы пересчета, которые были установлены программно (mapSetWorkSystemParametersEx),
а если не были, то некоторые условные начальные значения.

С установленными рабочими параметрами связан ряд функций - mapPlaneToWorkSystemPlane, mapGeoWGS84ToWorkSystemGeo и т.д.
Они все являются устаревшими, поскольку более универсальная группа функций - mapCreateUserSystemParametersPro, mapUserGeoToGeoWGS84, mapUserPlaneToGeoWGS84Pro и т.п.
Незакрытый #pragma pack?
 
Спасибо за сообщение!
В конце mapsyst.h есть команда -
[CODE]#if defined(BUILD_DLL64) && defined(LINUXAPI)
#pragma pack(pop)
#endif
[/CODE]Но она не симметрична верхней команде. Мы внесем изменение, чтобы команды были рядом и симметрично.
Установка GIS WebServer
 
Цитата
Александр Паршин написал:
"В GISWebServerSE включена сборка библиотеки GISWebToolKit" -
1) мы эту сборку можем использовать в своих PHP-модулях, которые будет подключать через include-директивы к модулям GIS WebServer?
2) если можем, то она обладает тем же функционалам, что и сам GISWebToolKit или значительно меньшим? По телефону сказали, что значительно меньшим, чем сам GISWebToolKit , продаваемый отдельно
В соответствии с лицензией на GISWebToolKit - это инструментарий, который может использоваться без ограничений на количество разрабатываемых web-приложений.
А лицензия на GIS WebServer предполагает ОДИН экземпляр сервера, который разработчик может модифицировать, но не тиражировать без приобретения дополнительной лицензии или дополнительного соглашения.
ImportShpSet () в Qt6, Проблема вызова диалога импорта файлов shp в Qt6
 
Рекомендуются следующие комбинации средств разработки:

1) Linux + ГИС Конструктор для Qt
2) Windows + GIS ToolKit + Embarcadero
3) Windows + ГИС Конструктор для Qt для Windows

Если разрабатывать приложение в Qt для Windows, то вызывать диалоги, созданные в Embarcadero, не рекомендуется.
Их работоспособность не гарантируется при совмещении различных интерфейсных библиотек.
С компилятором VC++ библиотеки работают стабильно.
Как построить зону видимости по правилам радиолокации?
 
Это задача для ГИС Оператор.
Построение не может быть универсальным. Оно зависит от модели (характеристик) станции и характеристик цели (ЭПР, высота, тип).
Зона, строго говоря, является трехмерным объектом - изменяется по высоте. На плоскости можно показать сечения зоны на разной высоте.
Математика по данной теме есть здесь -
«Справочник офицера воздушно-космической обороны», под общей редакцией С.К. Бурмистрова. – Тверь: ВАВКО, 2005. – 564с
Формулы расчета площади в ПО
 
[CODE] //---------------------------------------------------------------
   // Расчет площадей трапеций для каждого отрезка подобъекта
   //   S = (x1+x2)*dy/2
   //---------------------------------------------------------------
   while (NextPoint())
   {
     double x2 = XDouble() - x0;
     double y2 = YDouble() - y0;

     square += (x1 + x2) * (y2 - y1);
     x1 = x2;
     y1 = y2;
   }[/CODE]
Как-то так на низовом уровне.
Перевод высоты, измеренной относительно геоида EGM2008, в высоту, определенную в Балтийской системе.
 
[URL=https://ru.wikipedia.org/wiki/%D0%93%D0%B5%D0%BE%D0%B8%D0%B4]https://ru.wikipedia.org/wiki/%D0%93%D0%B5%D0%BE%D0%B8%D0%B4[/URL]

[URL=https://epsg.io/3855]https://epsg.io/3855[/URL]

[URL=http://lib.ssga.ru/IRBISFULLTEXT/UMK/120103%20-%20%D0%9A%D0%BE%D1%81%D0%BC.%20%D0%B3%D0%B5%D0%BE%D0%B4%D0%B5%D0%B7%D0%B8%D1%8F/%D0%A1%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80%208/%D0%A1%D0%BE%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5%20%D0%BF%D1%80%D0%BE%D0%B1%D0%BB%D0%B5%D0%BC%D1%8B%20%D1%84%D0%B8%D0%B7%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B9%20%D0%B3%D0%B5%D0%BE%D0%B4%D0%B5%D0%B7%D0%B8%D0%B8/120103%20%D0%A2%D0%B5%D0%BE%D1%80.%D0%BC%D0%B0%D1%82%D0%B5%D1%80%D0%B8%D0%B0%D0%BB%D1%8B1%20%D0%A1%D0]http://lib.ssga.ru/IRBISFULLTEXT/UMK/120103%20-%20%D0%9A%D0%BE%D1%81%D0%BC.%20%D0%B3%D0%B5%D0%BE%D0%...[/URL]%9F%D0%A4%D0%93%202011.pdf
Перевод высоты, измеренной относительно геоида EGM2008, в высоту, определенную в Балтийской системе.
 
Вопрос:[QUOTE]Простите мне мое дилетантство, но в выше изложенном ответе не совсем понятно, что вы приравниваете к MSL (балтийскую систему высот, абстрактный квазигеоид или конкретный геоид)?[/QUOTE]
Было написано:[QUOTE]Балтийская система высот имеет эксперементальные модели, о которых мы слышали, но не видели.
С учетом ее точности, условно приравниваем ее к MSL (средний уровень мирового океана).[/QUOTE]

Вопрос:[QUOTE]Если я не прав, то где-нибудь вообще публикуются уровни систем высот (морей) относительно хоть какого-нибудь эллипсоида?[/QUOTE]
Модель EGM2008 - это уровни "мирового океана" относительно эллипсоида WGS84. Для других эллипсоидов есть параметры перехода к WGS84.
Поиск объектов по координатам, Как правильно осуществлять поиск объектов по координатам?
 
[QUOTE]Nikita Sarychev написал:
Добрый день. Создавать контекст поиска на каждый HSITE не требовалось в предыдущих версиях Панорамы 11,12 и поиск работал нормально. Каким образом создавать контекст на каждый HSITE?  Есть функция mapCreateMapSelectContext(HMAP hmap), но она HMAP принимает. Если использовать таким образом - HSELECT hsel = mapCreateMapSelectContext( (HMAP)currentSit), то это тоже не помогает с поиском. Как правильно?[/QUOTE]
[CODE]for (int siteIndex = 0; siteIndex <= mapGetSiteCount(m_hMap); siteIndex++)
{
 HSITE hSite = mapGetSiteIdent(mapHandle, siteIndex);

 TEMPHSELECT hselect(mapCreateSiteSelectContext(m_hMap, hSite));

 ... тут установка области поиска

 while (!m_forceBreakSearch)
...
 
 // удалять hselect уже не нужно
}[/CODE]
В версиях 11,12.. проверка выполнялась на каждый объект по области по мере запроса.
В версиях 14,15 в карте есть дерево объектов (кластера).
По заданной области на соответствующей карте сразу при вызове mapSelectSeekArea отбираются списки попадающих объектов.
И далее на каждый запрос поиск уже не выполняется, а возвращается очередной объект.
Скорости поиска совсем разные.
Поэтому условия поиска нужно задавать для каждой карты отдельно.
Страницы: Пред. 1 2 3 4 5 6 7 8 9 10 11 ... 409 След.



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

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