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

Вопрос по WMS в GISTollKit12

Поиск  Пользователи  Правила  Войти
Форум » Настольные приложения » GIS ToolKit, GIS ToolKit Active, ГИС Конструктор для Windows
Страницы: 1 2 След.
RSS
Вопрос по WMS в GISTollKit12
 
Использую GisToolKit12 и DelphiXE5

Просьба подсказать:

Какой функцией MapApi открыть URL WMS сервиса Yandex Спутник?

Какой URL при этом прописать в качестве параметра?

Какой функцией добавить новую карту поверх открытого геопортала,
так чтобы автоматически проекция этой добавленной карты точно совпала с проекцией открытой карты Yandex  Спутник?
Изменено: Сергей Викторович - 04.10.2018 09:26:10
 
Ваш вопрос вынесен в отдельную тему.
Просьба не задавать вопросы в темах, относящихся к другим продуктам.
Вопрос передан на рассмотрение специалистам. Ответ будет дан в этой теме.
 
Для работы с геопорталами служат функции mapPortalMenu - для  открытия и подключения списка геопорталов и mapEditWms для получения строки подключения.
Рекомендую пользоваться разработанным компонентом для GistoolKit MapWMSPopupDialog, который уже включает в себя эти две функции. + он совместно с MapView обрабатывает события отправленные функцией  mapPortalMenu.
Также узнать строку подключения к интересующему вас геопорталу вы можете в меню настроек геопорталов, выбрав соответствующий в списке. Его вы можете подать в функцию mapOpenAnyData и mapAppendAnyData для открытия и добавления геопорталов или карт.
Строки подключений от версии к версии могут меняться и являются внутренним механизмом реализации.
При добавлении геопортала или карте к геопорталу проекция данных карты меняется к проекции геопортала автоматически.
Изменено: Владимир Железняков - 04.10.2018 11:42:39
 
Цитата
Владимир Железняков написал:
Для работы с геопорталами служат функции mapPortalMenu - для  открытия и подключения списка геопорталов и mapEditWms для получения строки подключения.
Рекомендую пользоваться разработанным компонентом для GistoolKit MapWMSPopupDialog, который уже включает в себя эти две функции. + он совместно с MapView обрабатывает события отправленные функцией  mapPortalMenu.
Также узнать строку подключения к интересующему вас геопорталу вы можете в меню настроек геопорталов, выбрав соответствующий в списке. Его вы можете подать в функцию mapOpenAnyData и mapAppendAnyData для открытия и добавления геопорталов или карт.
Строки подключений от версии к версии могут меняться и являются внутренним механизмом реализации.
При добавлении геопортала или карте к геопорталу проекция данных карты меняется к проекции геопортала автоматически.
Добавил при открытой пользовательской карте, выполнение функции MapApi
mapOpenAnyData('WMTS#Type=UTMS&IP=http://sat01.maps.yandex.net/tiles?l=sat&v=1.40.0&ID1=YandexSat&Name1=Yandex Спутник&Projection=EPSG:3395', GENERIC_READ, Nil);

Результат:
Геопортал Yandex Спутник не появился.
Что я не так делаю?
 
Цитата
Сергей Викторович написал:
Добавил при открытой пользовательской карте, выполнение функции MapApi
mapOpenAnyData('WMTS#Type=UTMS&IP= http://sat01.maps.yandex.net/tiles?l=sat&v=1.40.0&ID1=YandexSat&Name1=Yandex  Спутник&Projection=EPSG:3395', GENERIC_READ, Nil);
Результат:
Геопортал Yandex Спутник не появился.
Что я не так делаю?

А где должен был появиться геопортал?
mapOpenAnyData создает в памяти экземпляр класса для работы с картой и возвращает его хэндл.
Чтобы что-то где то увидеть, надо с этим хэндлм еще поработать.
То есть сделать примерно то, что выполняет компонент MapView.
Компонент MapView ничего не может знать о том, что программист выполняет, минуя его методы.
Код
MapView.MapOpen('WMTS#Type=UTMS&IP= http://sat01.maps.yandex.net/tiles?l=sat&v=1.40.0&ID1=YandexSat&Name1=Yandex  Спутник&Projection=EPSG:3395', true, GENERIC_READ);

так тоже ничего не появляется?

Да, отказ от использования штатных средств работы с геопорталами (в частности, mapPortalMenu), во-первых, не освобождает от необходимости наличия в каталоге Вашей программы файлов:
wmslist_ru.xml
wmslist_en.xml
epsg.csg
epsg.csp
epsg.csu
crslist.xml
crsregister.xml
а во-вторых, не гарантирует корректной работы с этими геопорталами в будущем при изменении протоколов или параметров доступа к ним.

Также рекомендую анализировать коды возврата при вызове методов компонентов и MAPAPI-функций.
 
Сделал так.

Подключаем Yandex Спутник
mvMap.MapOpen('WMTS#Type=UTMS&IP= http://sat01.maps.yandex.net/tiles?l=sat&v=1.40.0&ID1=YandexSat&Name1=Yandex  Спутник&Projection=EPSG:3395', true, GENERIC_READ);
form_main.mvMap.Repaint;

Добавляем нашу карту.
procedure Tform_main.N63Click(Sender: TObject);
Var
FileName : widestring;
begin
// Определяем путь к карте
FileName := PathProject+'\Map\Map.sit';
mapAppendAnyData(form_main.mvMap.MapHandle,PChar(FileName));
form_main.mvMap.Repaint;
end;

Ожидаем.
То что наша карта ляжет точно в проекции геопортала, т.е. так как было в ответе выше
При добавлении геопортала или карте к геопорталу проекция данных карты меняется к проекции геопортала автоматически.

Результат на скриншоте.
Т.е. наша карта должна была добавиться примерно на 3 метра вправо и на 2 метра выше.
Но так не получилось.
Получилось также как если бы была загружена наша карта, а затем подключили геопортал Yandex Спутник.
Нужно чтобы проекция карты спроецировалась точно на геопортал.
Как можно это сделать?

Если не получиться как описано выше,
то как можно продвинуться по данному вопросу, пусть хотя-бы примерно,
например, добавить 3 метра и 2 метра.    
Screenshort13.PNG (1.01 МБ)
 
Все отобразилось с учетом проекции снимков.
В большинстве случаев смещение на снимках вводит поставщик снимков (геопортал) искуственно. Но также на это влияет точность ваших данных. Какой базовый масштаб подключаемой карты? Как цифровалась карта, по каким данным?
Функции для задания искуственного смещения пока нет, планируется добавить в следующих версиях. Но его надо будет вводить вручную.
Изменено: Владимир Железняков - 05.10.2018 08:39:35
 
Цитата
Владимир Железняков написал:
Функции для задания искуственного смещения пока нет, планируется добавить в следующих версиях. Но его надо будет вводить вручную.
!!! Очень нужно !!!
Хотя бы  betta версию!
Если это добавить не очень сложно.
Если появится хоть какая-то версия, готов протестировать.
Спасибо большое.
 
Цитата
Сергей Викторович написал:
!!! Очень нужно !!!Хотя бы  betta версию!

В библиотеках ГИС-ядра для GIS ToolKit версия 12 для платформы "x64" и для платформы "x32"
добавлена возможность установки смещения для различных геопорталов. Данная опция необходима для установки точного совпадения исходных данных и геопортала (который вводит смещение искусственно).
 
Прошу сообщить синтаксис функций MapApi:

1) получить установленное в xml файле смещение по X
2) получить установленное в xml файле смещение по Y
3) записать в xml файл смещение по X
4) записать в xml файл смещение по Y
Страницы: 1 2 След.
Читают тему (гостей: 1)



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

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