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

Денис Вицко (Все сообщения пользователя)

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

Страницы: Пред. 1 ... 88 89 90 91 92 93 94 95 96 97 98 ... 142 След.
mapGetCrossPoint, Точки пересечения
 
Пример использования есть рядом с описанием этой функции (правда на C++) - см. [URL=http://help.gisinfo.ru/showresult.php?file=seekapi.htm&search=mapgetcrosspoint#1]help.gisinfo.ru[/URL]

[CODE]HCROSS hCross = mapCreateObjectCrossPoints(info1,info2)
CROSSPOINT point;
if (hCross)
{
   int count = mapGetCrossCount(hCross);
   for(int i = 1; i <= count; i++)
  {
      mapGetCrossPoint(hCross,i,(HPOINT)&point);
      ...
   }
   mapFreeCrossPoints(hCross);
}[/CODE]

HPOINT  - это указатель на структуру CROSSPOINT, которая в Delphi описана так (см. maptype.pas):

[CODE] type
 PCrossPoint = ^TCrossPoint;
 TCrossPoint = packed record
   XY       : TDoublePoint; // Координата точки пересечения
   H        : double;       // Высота точки пересечения  (из метрики)
   Obj1     : HObj;
   Number1  : integer;      // За какой точкой объекта Info1 находится точка пересечения
   Subject1 : integer;      // Номер объекта/подобъекта объекта info1
   Obj2     : HObj;
   Number2  : integer;      // За какой точкой объекта Info2 находится точка пересечения
   Subject2 : integer;      // Номер объекта/подобъекта объекта info2
 end;[/CODE]
Вывод PNG по координатам - Куда исчезает точность пиксельных координат ?, При увеличении карты точка (заданная координатами) убегает вправо по долготе ~ на 1630 метров
 
Все хорошо, не хватает только информации о среде разработки.
И просьба указывать этот набор информации в начале каждой темы, когда задаете вопрос.

Проверил и на GTK Active 11 - [URL=http://public.gisinfo.ru/vitsko/soft/20180220_gtkax11_test_pixel.zip.zip]пример (GTK Ax 11, MS VS 2015 C#), карта внутри[/URL]
Результат тот же, ничего не улетает.
Проверялось с комплектом библиотек, входящих в инсталляцию, хотя там они уже довольно-таки старые.

Для сведения. Вы можете скачивать обновленные библиотеки с нашего сайта (см. [URL=https://gisinfo.ru/download/download.htm]раздел Скачать[/URL]):
[URL=http://gisinfo.ru/download?id=101]для версии 11 (x32)[/URL]
[URL=http://gisinfo.ru/download?id=179]для версии 12 (x32)[/URL]
[URL=http://gisinfo.ru/download?id=180]для версии 12 (x64)[/URL]

Библиотеки обновляются гораздо чаще, чем сборки различных продуктов, куда они входят.
Для обновления библиотек переустанавливать GTK не требуется.
Вывод PNG по координатам - Куда исчезает точность пиксельных координат ?, При увеличении карты точка (заданная координатами) убегает вправо по долготе ~ на 1630 метров
 
[QUOTE]Alex Lesnov написал:
У меня карты в формате SIT и MAP и GIS tool 11[/QUOTE]

С такой информации и надо было начинать. Я проверял на GTK Active 12.
Проверю на всякий случай еще и на 11 версии.

На будущее просьба, когда задаете вопрос, сразу указывайте:
- ОС;
- среду разработки;
- версию нашего ПО или инструментария, по которому задается вопрос;
- разрядность приложения.
Вывод PNG по координатам - Куда исчезает точность пиксельных координат ?, При увеличении карты точка (заданная координатами) убегает вправо по долготе ~ на 1630 метров
 
[URL=http://public.gisinfo.ru/vitsko/soft/20180220_gtkax_test_pixel.zip]пример (GTK Ax 12, MS VS 2015 C#), карта внутри[/URL]
(ссылка действительна месяц)

Ничего никуда не убегает даже на самых крупных масштабах.
На мелких наблюдается расхождение в 1 пиксел, что нормально.

Ваши координаты. Карта на всю Россию. Для примера протестировал ее в цилиндрической и преобразовав к конической проекции.

Присылайте Ваш тестовый пример программы и карту.

Пока повторить Вашу ситуацию не получилось.

[img]https://b.radikal.ru/b39/1802/df/123381c2dbc3.png[/img]

[img]https://b.radikal.ru/b32/1802/bd/5fa52a9da294.png[/img]

[img]https://b.radikal.ru/b19/1802/f8/b660d5b1d67d.png[/img]
Вывод PNG по координатам - Куда исчезает точность пиксельных координат ?, При увеличении карты точка (заданная координатами) убегает вправо по долготе ~ на 1630 метров
 
Пришлите Вашу карту на panorama@gisinfo.ru, поглядим на Ваших живых данных, что не так.
Карта на сенсорном экране, С++ программа по MouseDown не перемещает карту на сенсорном - на обычном экране Ok, Собрал такую же на C# там всё Ok и на обычном экране и на сенсорном. В чём подвох?
 
[QUOTE]Alex Lesnov написал:
С++ Embarcadero (Borland) программа по MouseMove не перемещает карту на сенсорном - на обычном экране Ok.Собрал такую же программу на C# там всё Ok и на обычном экране и на сенсорном. В чём подвох?
...
Embarcadero XE7 - не поддерживает сенсорный экран (вроде должен) ?нужен XE10 ?
Испытываемый планшет - cенсорный экран под Windows 8.1
Рабочий Windows 7[/QUOTE]

Как Вы понимаете, COM-компонент работает всегда одинаково, не зависимо от того, в какой среде собрано приложение.
События OnMapMouseMove,  OnMapMouseUp и  OnMapMouseDown - это реакция на сообщения от операционной системы (типа WM_MOUSEMOVE и пр.). Вопрос в том, как само приложение при этом работает.
Почему в одном и том же приложении на Embarcadero XE7 в случае настольного ПК сообщения нормально доходят до компонента, а в случае сенсорного планшета - нет, - сказать пока трудно.
Будем изучать этот вопрос.
Вывод PNG по координатам - Куда исчезает точность пиксельных координат ?, При увеличении карты точка (заданная координатами) убегает вправо по долготе ~ на 1630 метров
 
Просьба не плодить темы на форуме с один и тем же Вашим вопросом.
Один вопрос - одна тема. Последующее продолжение диалога по вопросу не в теме, в которой он был задан, будет удаляться.

Вашими вопросами занимаются, не смотря на то, что они не относятся непосредственно к функционированию GIS ToolKit, а связаны с программированием в той или иной среде.

Вы же сами пишете, что координаты пересчитываются нормально.
Далее Вы пытаетесь рисовать свой PNG средствами, никакого отношения к GIS ToolKit не имеющими.
Код целиком Вы не предоставляете. Повторять любую ситуацию, которая сложилась в кодах у пользователя, мы не можем.
Желательно вычленять проблему в отдельный пример и высылать нам. Это значительно сократит время ответа на Ваш вопрос.

Теперь конкретно по данному вопросу.
Рисование Вашими же средствами, но не PNG, дает следующий результат.
Для наглядности на карте России, входящей в состав данных для примеров в составе GIS ToolKit Active, был нанесен объект по Вашим координатам.
Далее, в программе по тем же координатам рисуется крест.
Расхождение на любых масштабах - 1 пиксел, что при пересчетах из double само собой допустимо.
Как MS VS рисует PNG на канве элемента на форме в заданном прямоугольнике - вопрос не к нам.

[url=https://b.radikal.ru/b05/1802/d6/c707819b25cf.png][img]https://b.radikal.ru/b05/1802/d6/c707819b25cft.jpg[/img][/url]

[url=https://a.radikal.ru/a28/1802/a7/57e8f7f1cb6b.png][img]https://a.radikal.ru/a28/1802/a7/57e8f7f1cb6bt.jpg[/img][/url]

[url=https://d.radikal.ru/d34/1802/d5/dba695a6034a.png][img]https://d.radikal.ru/d34/1802/d5/dba695a6034at.jpg[/img][/url]



Скрытый текст
Вывод PNG по координатам - Куда исчезает точность пиксельных координат ?, При увеличении карты точка (заданная координатами) убегает вправо по долготе ~ на 1630 метров
 
[QUOTE]ТУТ КУСКИ C# ИСХОДНИКА => ЕСТЕСТВЕННО НЕ ВЕСЬ КОД И КООРДИНАТЫ ВОЗЬМИТЕ ЛЮБЫЕ

[CODE] Bitmap ico_place;
      Rectangle CrossRect;

     ico_place = new Bitmap(@"C:\MAPS_OBJECT\BMP\MALKARTINKA.png");

      double X_PRIMORSK = 3.1415926535897932384626433832795 * 60.538333333333334 / 180.0;
      double Y_PRIMORSK = 3.1415926535897932384626433832795 * 28.64527777777778   / 180.0;

      axaxcMapScreen1.ConvertMetric( ref X_PRIMORSK, ref Y_PRIMORSK, axGisToolKit.TxPPLACE.PP_GEOWGS84, axGisToolKit.TxPPLACE.PP_PICTURE );


        int SIZE_PNG = ( axcMapScreen1.ViewScale <= 7812) ?  36: 18; /* ДЛЯ ИЗМЕНЕНИЯ РАЗМЕРА PNG */

       CrossRect = Rectangle.FromLTRB( intX_PRIMORSK - SIZE_PNG, intY_PRIMORSK - SIZE_PNG, intX_PRIMORSK  + SIZE_PNG, intY_PRIMORSK + SIZE_PNG);
       Graphics graph  = Graphics.FromHwnd(axaxcMapScreen1.Handle);
        graph.DrawImage( ico_place, CrossRect );
        graph.Dispose();[/CODE]

=> РАЗРАБОТЧИКИ ГИС ОТЗОВИТЕСЬ[/QUOTE]

Покажите, как у Вас выполняется переход от X_PRIMORSK, Y_PRIMORSK - к  intX_PRIMORSK и intY_PRIMORSK.

axaxcMapScreen1.ConvertMetric(X, Y, PP_GEOWGS84, PP_PICTURE) возвращает координаты в пикселах от угла карты, а не от угла axcMapScreen1.
Вы учитываете смещение карты в окне axcMapScreen1?
Вывод PNG Точность координат в пикселях зависит от формы карты?, Какая зависимость пиксельных координат от отношения высоты карты к ширине?
 
Дело в том, что координаты на картах имеют системы отсчета.
При этом на значение координат влияют параметры эллипсоида, датума, проекция и система высот.
Даже геодезические координаты, снятые с одной карты, нельзя спозиционировать в ту же точку на другой карте, имеющей другие параметры эллипсоида, без соответствующих преобразований.
А пиксели вообще нельзя рассматривать как координаты. Это "координаты" - "здесь и сейчас" - только для текущих габаритов карты и текущего масштаба отображения.

[QUOTE]Alex Lesnov написал:
как точно спозиционировать пиксельную точку по заданным координатам? что учесть?[/QUOTE]

Уточните, что значит спозиционировать пиксельную точку?

Если Вам нужны координаты одной и той же точки на местности получить в пикселах на на разных картах, самый простой и правильный способ - изначально получить геодезические координаты этой точки в WGS84, а затем пересчтитывать их для каждой карты каждый раз, когда меняется масштаб карты или ее габариты. При этом надо учитывать смещение скроллингов окна карты.
Определение открыт ли геопортал Panapi, прикладные задачи для ГИС "Панорама"
 
При добавлении геопортала габариты меняются. Поэтому Ваше смещение будет недействительным после открытия геопортала.
Для установки центра по заданным координатам есть метод MapWindow->SetWindowCenterPlane(&posCur).
Кроме того, при добавлении геопортала система координат и проекция карты могут быть изменены в соответствии с проекцией геопортала. То есть координаты в метрах до и после добавления будут разными.
Поэтому для надежности лучше до открытия геопортала запросить центр, преобразовать его координаты в радианы WGS84, а после добавления пересчитать обратно к метрам и установить по ним центр.
Страницы: Пред. 1 ... 88 89 90 91 92 93 94 95 96 97 98 ... 142 След.



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

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