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

GIS ToolKit Active C#, совместное отображение геопортала и карты

Поиск  Пользователи  Правила  Войти
Форум » Настольные приложения » GIS ToolKit, GIS ToolKit Active, ГИС Конструктор для Windows
Страницы: 1 2 След.
RSS
GIS ToolKit Active C#, совместное отображение геопортала и карты
 
Здравствуйте. Вопрос вот в чем при добавлении гепортала к карте к примеру Google снимков получается так что карта пропадает и геопортал тоже дает серое изображение, когда нажимаю перейти к карте, то показывает нормально,правда координаты какие-то неправильные и дна из них отрицательная, как сделать так чтобы сразу при открытии геопортала карта оставалась на месте а под ней открывался снимок к примеру, наверное я не согласовываю масштабы их, подскажите пожалуста как это можно решить?
Изменено: Дарья Лунченко - 29.01.2016 21:07:34
 
Трудно понять исходные данные и список вопросов. Давайте по порядку. Что открыли, была ли уже открыта карта. Каким компонентом пользуетесь в какой среде (догадываюсь из предыдущих вопросов , что C# и GIS ToolKIt Active)?
Так как порталд открыт, то есть строка подключения в параметре MapFileName - приведите ее содержимое.
 
Здравствуйте. Да работаю с GIS ToolKIt Active на C# пишу,не заметила еще одной проблемы:

1)без открытой карты добавляю геопортал используя диалог предаставляемый функцией mapPortalMenu(), перехватываю сообщение AW_OPENDOC с строкой подключения (пример строки: "WMTS#Type=UTMS&IP=http://khm.google.com/kh/v=165&hl=ru&ID1=GoogleSat&Name1=GoogleSat&Matrix=urn:ogc:def:wkss:OGC:1.0:GoogleMapsCompatible" после чего открываю его в компоненте axaxMapView так работает.

2) Открываю карту в компонент ахахMapView далее используя функцию mapPortalMenu() добавляю геопортал при этом функция не возвращает сообщение AW_OPENDOC, но геопортал открывается только то что он открыт можно увидеть лишь в списке данных карты в разделе Геопорталы, может при добавлении геопртала к карте какое то другое сообщение передается?
 
Перед добавлением геопортала (как и других данных) нужно запомнить геодезические координаты центра окна карты, а после добавления перейти в эту точку.
При добавлении геопортала к открытой карте сообщение AW_OPENDOC не должно выдаваться. Ведь карта уже открыта.
 
Здравствуйте. Что то у меня все равно не выходит вот код (рис. код) может я центр не так рассчитываю, после выполнения все становится серым и координаты отрицательные (рис.гео), далее сначала увеличиваю масштаб а птом через состав карты нажимаю перейти к карте и вот получаю нормальное изображение но координаты тоже странные (рис.отриц).Подскажите, пожалуйста что не так?
гео.PNG (3.26 КБ)
код.PNG (11.88 КБ)
отриц.PNG (332.34 КБ)
 
При использовании функций АПИ совместно с компонентами, особенно визуальными, надо учитывать тот факт, что компоненты могут хранить для своей работы значения, получаемые от карты. Вызовы АПИ могут изменять аналогичные значения в карте, но компонент об этом сам не может узнать. Так и с компонентом MapView. Он хранит габариты карты, чтобы показывать роллеры в правильном положении.
При подключении портала меняются и габариты и местоположение. Возможно поможет вызов MapView.UpdatePictureBorder перед перемещением в точку.
Сейчас мы делаем компонент, который вызывает функцию по работе с порталом (всплывающий список). К концу недели будет. Пришлите ваш адрес, на который вышлем релиз с примером до выхода инсталляции.
 
    Здравствуйте. Подскажите в чем может быть проблема, при добавления геопортала к карте не могу перейти в запомненный центр карты (если без сбрасывания проекции то переходит непонятно куда), пробовала сбрасывать проекцию после открытия геопортала, но в таком случае он вообще перестает отображаться, хотя в списке геопорталов присутствует.
Код
   double X1 =  MapFind1.cMapSelect.GetDFrame(true).X1;
            double X2 = MapFind1.cMapSelect.GetDFrame(true).X2;
            double Y1 = MapFind1.cMapSelect.GetDFrame(true).Y1;
            double Y2 = MapFind1.cMapSelect.GetDFrame(true).Y2;
            double centerX = X1+((X2 - X1) / 2);
            double centerY = Y1-((Y2 - Y1) / 2);
         
            GEOPort.mapPortalMenu(MapView1.MapHandle, ref param, 833, 80);
       
           MAPREGISTEREX map = new MAPREGISTEREX();
           DATUMPARAM dat = new DATUMPARAM();
           ELLIPSOIDPARAM ell = new ELLIPSOIDPARAM();
           RstAPI.mapSetDocProjection(MapView1.MapHandle, ref map, ref dat, ref  ell);
     
          mypoint.X = centerY;
          mypoint.Y = centerX;
          
          MouseXY.SetPoint(mypoint.X, mypoint.Y);
           
           MapView1.UpdatePictureBorder();
           MapView1.ScaleInPoint(MapView1.ViewScale, MouseXY.C_CONTAINER);
         
            MapView1.Repaint();
Изменено: Дарья Лунченко - 24.10.2016 19:06:04
 
При добавлении портала к карте происходит преобразование в памяти проекции карты к проекции портала.
Для того, чтобы "запомненные" координаты были адекватны в новых условиях отображения, запоминать их и восстанавливать надо в геодезической СК, причем желательно не установленной в карте, а пересчитывая, например, к WGS84.
 
  Здравствуйте, спасибо за ответ. Возник вопрос вроде делаю как вы посоветовали, но почему-то иногда после открытия геопортала переходит рядом с центром запомненным, а иногда переходит опять таки непонятно куда, подскажите пожалуйста что делаю неверно?
Код
            double X1 =  MapFind1.cMapSelect.GetDFrame(true).X1;
            double X2 = MapFind1.cMapSelect.GetDFrame(true).X2;
            double Y1 = MapFind1.cMapSelect.GetDFrame(true).Y1;
            double Y2 = MapFind1.cMapSelect.GetDFrame(true).Y2;
            double centerX = X1+((X2 - X1) / 2);
            double centerY = Y1-((Y2 - Y1) / 2);
           
           GEOPort.mapPlaneToGeoWGS84(MapView1.MapHandle, ref centerX, ref centerY);

           GEOPort.mapPortalMenu(MapView1.MapHandle, ref param, 833, 80);
 
           MapXY.PlaceOut = axGisToolKit.TxPPLACE.PP_GEO;
        
          mypoint.X = centerX;
          mypoint.Y = centerY;

         MapXY.GetPoint(ref mypoint.X, ref mypoint.Y);
        
         MapView1.ScaleInPoint(MapView1.ViewScale, MapXY.C_CONTAINER);
         
         MapView1.Repaint();
 
Как я уже писал выше, при добавлении геопортала параметры проекции карты меняются.
Даже геодезические координаты, снятые с карты в текущих параметрах СК и проекции карты, до и после добавления портала будут не совпадать (из-за разницы в параметрах эллипсоидов, датумов и самих проекций).
Поэтому и рекомендуется пересчитывать координаты из текущей СК к чему-то постоянному (например, WGS84), и потом пересчитать обратно - к вновь установленной проекции.

У Вас не хватает обратного пересчета после добавления портала (в данном случае mapGeoWGS84ToGeo, если Вы далее работаете в геодезических координатах).
Иначе будет иметь место погрешность, разная на разных геопорталах, на разных широтах и т.д.
Страницы: 1 2 След.
Читают тему (гостей: 1)



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

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