SASGIS - SAS.Планета
View Issue Details
0003030SAS.Планета[All Projects] Хотелкаpublic19-05-2016 12:1627-03-2019 10:54
DimaDD 
vdemidov 
normalfeatureN/A
closedwon't fix 
 
 
0003030: Взаимодействие с программой OziExplorer (PC) через библиотеку OziAPI.dll
Это нововведение представляется довольно интересным и полезным (думается, что многие пользователи были бы очень благодарны за такой доп. функционал). Подозреваю также, что реализация не должна оказаться слишком сложной.
Внешне это может выглядеть так:
Одновременно открыты два окна - SAS Planet (скажем, со спутниковым изображением) и OziExplorer (с пользовательской картой, например - исторической). Пользователь указывает мышью позиции на изображении местности в SAS Planet - и они тут же показываются в OziExplorer (проще всего и, кмк, вполне достаточно просто центрированием карты). И наоборот: SAS Planet показывает расположение точек, указанных мышью в OziExplorer.
Таким образом, получается весьма удобный двухоконный инструмент для сравнения пользовательских карт с местностью.
На сайте OziExplorer находится свободно распространяемая библиотека OziAPI.dll (http://www.oziexplorer3.com/oziapi/oziapi.html), вместе с тех. документацией и примерами (в т.ч. для Delphi).
Некоторая проблема также возникает с показом центра карты в OziExplorer (я не нашёл там отображения чего-нибудь вроде перекрестья в центре карты), однако это довольно просто решается нахождением окна OziExplorer, его дочернего компонента класса "TScrollBox1" и рисованием пользовательского маркера поверх него в центре.
Нечто подобное (в веб-варианте) реализовано на сайте http://www.etomesto.ru, но там только лишь синхронизируется положение карт, что менее удобно.
Кроме того, 2 года назад я написал (большей частью собрал из того, что нашёл) небольшую и простую Delphi7-программу OziGE, которая реализует это дело с использованием GoogleEarth API. Однако, когда сейчас решил немного "причесать" этот проект, то вдруг обнаружил, что сервис GoogleEarth API прекратит работу в конце 2016 года (https://developers.google.com/earth/) и, стало быть, программа перестанет работать(?)...(((
Программу можно найти вот тут:
Google Drive: https://drive.google.com/file/d/0BwwWPUHhxn2ETHdZcmd2NVlBVlU
Yandex Disk: https://yadi.sk/d/SEURrq9IrmBBx
Прилагаю также исходники (D7), оттуда можно позаимствовать всё, что может потребоваться.
No tags attached.
zip OziGE_Src.zip (220,061) 19-05-2016 12:16
https://bugtracker.sasgis.org/file_download.php?file_id=2055&type=bug
Issue History
19-05-2016 12:16DimaDDNew Issue
19-05-2016 12:16DimaDDFile Added: OziGE_Src.zip
19-05-2016 13:15vdemidovNote Added: 0017224
19-05-2016 14:39DimaDDNote Added: 0017225
19-05-2016 14:56zedNote Added: 0017226
19-05-2016 15:14DimaDDNote Added: 0017227
19-05-2016 17:43GarlNote Added: 0017228
20-05-2016 07:15vdemidovNote Added: 0017229
20-05-2016 13:39DimaDDNote Added: 0017235
27-03-2019 10:54vdemidovStatusnew => resolved
27-03-2019 10:54vdemidovResolutionopen => won't fix
27-03-2019 10:54vdemidovAssigned To => vdemidov
27-03-2019 10:54vdemidovStatusresolved => closed

Notes
(0017224)
vdemidov   
19-05-2016 13:15   
Не знаю зачем это и кому нужно. Терпеть не могу Озик. Собственно из-за его убогости и необходимости альтернативы в свое время присоединился к разработке САС.Планеты.
(0017225)
DimaDD   
19-05-2016 14:39   
Озик тут лишь играет роль второго окна-вьюера для пользовательских карт (использование которых сейчас в SAS.Planet весьма заморочно, в этом она пока что не альтернатива). Несмотря на свою архаичность, Озик вполне исправно показывает свой вариант карт (картинка + map-файл, которые до настоящего времени крайне популярны), калибровка изображений в Озике очень простая и быстрая.

Второй важный момент: два окна при сличении карты с местностью (или двух карт) зачастую удобнее, чем одно изображение, наложенное полупрозрачным слоем поверх другого (либо с переключением видимости слоёв). Такой функционал может быть полезен, скажем, тем, кто работает с историческими картами (историкам, археологам). Сайт ЭтоМесто.ру (или OziGE) - это довольно наглядные примеры двухоконных картографических приложений, всё же стоит глянуть... Мне с коллегами (мы геологи-"научники") часто бывает нужно сличение местности с тематическими картами (геологическими разных типов, фактического материала и др.), которые далеко не всегда в исходном формате, зачастую это вообще сканы со старых калек, публикаций и т.п. При планировании/обсуждении деталей маршрутов тоже весьма полезно видеть местность и карту в двух окнах сразу.
(0017226)
zed   
19-05-2016 14:56   
DimaDD
Может вы можете сами сделать эту хотелку?
(0017227)
DimaDD   
19-05-2016 15:14   
У меня нулевой опыт в коллективных программных проектах, да ещё таких больших и такого уровня. Всё, что я делал до сих пор (и, хм, продолжаю), это (поза)прошлый век.
Я, конечно же, заглянул в исходники... Сказать, что я мало, что понял - это было бы слишком мягко сказано!
Хоть я ещё попытаюсь, но сильно подозреваю, что мой уровень низковат.
(0017228)
Garl   
19-05-2016 17:43   
Не бойтесь для меня тоже САС-Планета - первый практический опыт как в коллективной разработке, так и вообще в ООП )) было бы желание.
з.ы.
я пользуюсь хоткеями для карт и при переключении очень даже наглядно всё получается и на одном мониторе
(0017229)
vdemidov   
20-05-2016 07:15   
> Не бойтесь
+1

Для начала попробуйте реализовать однократную синхронизацию экранов ОЗИ и САС просто по выбору пункта меню в САС. Кликнули - центр экрана САС переместился в то же положение что открыто в ОЗИ.
(0017235)
DimaDD   
20-05-2016 13:39   
Спасибо за моральную поддержку! Хотя я сразу запнулся ещё на стадии образа в VBox )) - мой нынешний домашний комп слабоват, пока что придётся на работе...(((

Но сейчас стал подозревать, что лучше пойти по несколько иному пути. Кмк, он для SAS.Planet более предпочтителен(?)

Я более внимательно изучил записи багтрекера + исходники и обнаружил замечательную хотелку, которая в значительной мере пересекается с моей, но является более глобальной: 0001869. Она уже решена, тестовая программа TestWMCopyData.exe работает исправно.

В общем, идея простая: чем внедрять поддержку Озика (или чего-то ещё стороннего, кто знает?) непосредственно в саму САС Планету, лучше написать маленькую отдельную программку, которая бы взяла на себя как всю возню с OziAPI.dll, так и общение с САС Планетой.

Однако, пока что через посылку WM_COPYDATA решается лишь половина задачи общения с САС Планетой: не хватает отправки обратных сообщений((( Об этом, вроде, уже заходила речь, но... Может, стоит подумать в этом направлении?

P.S. Пока что в качестве чрезвычайно уродливого костыля я могу воспользоваться имеющимся копированием координат в буфер обмена (правая кнопка мыши + "КК", хотя тут есть небольшая проблемка с English language), но это жесть, конечно!)))