Map Viewer

Вопросы по нескольким пакетам сразу, или вопросы, которые непонятно к какой ГИС отнести
Аватара пользователя
avk
Новоприбывший
Сообщения: 10
Зарегистрирован: 04 май 2015, 02:30
Репутация: 3
Откуда: Санкт-Петербург

Re: Map Viewer

Сообщение avk » 05 май 2015, 11:04

virtu писал(а): Про "квадратный" пиксель конечно же я знал, но про другой... У меня есть книжка, старенькая, но вроде еще моет быть актуальна - "Фень Юань. Программирование графики для WINDOWS". Я ее не читал, но как-то на просторах интернета слышал, что это "золото". Как раз берегу для подобного случая.
Наверное, надо аккуратно эту книгу читать. Во-первых, IMHO, опрометчиво в основу визуализатора закладывать DirectX - кросс-платформенность пострадает. Во-вторых, возможные переходы в новые измерения :D станут попросту невозможны - это я про воксели (кубические пиксели). В-третьих, этой весной на GDC-2015 "заговорили" о Vulkan и SPIR-V - вот на это, видимо, и нужно "заряжаться" (хотя бы учитывать). А раз так, то на переходный период я бы выбрал OpenGL.
По поводу пикселя: может так случиться, что у визуализируемых данных будет разное пространственное разрешение в горизонтальном и вертикальном направлениях. Вот тут и раскроется понятие "прямоугольный пиксель".
virtu писал(а): Похоже, что proj.4 - это некий стандарт вроде того же GDAL.
- Думаю, что этот инструмент совсем по другому заработает в руках программиста, который сам реализовал несколько преобразований и проекций.
- Если говорить о ГОСТ 32453-2013, то есть поддерживать российский ГИС-рынок, то в proj.4 всё грустно
- Это только моё личное представление о вопросе, но проекцию Web Mercator (та, что epsg 900913) долгое время отказывались признавать в проф. сообществе. Однако, её распространённость заставили это сделать. Так, видимо, и с proj.4: сильное распространение, наша природная лень, сложность вопроса - и ву-аля, альтернатив нет.
virtu писал(а): Пока 2D, по-моему, с этого проще начать?
Это для вашего визуализатора фундаментальное решение. Захотите строить "честный" трёхмерный глобус, а не ортографическую проекцию, получите нерешаемую проблему. А 3D иногда даёт преимущества: там где в 2D надо пересчитывать кучу геометрий, в 3D нужно всего лишь передвинуть камеру, а видеокарта всё остальное сделает сама. Хотя, тоже есть особенности :(
virtu писал(а): Векторно-растровая природа - бывает такое?
То есть, например, загружаю тайлы OpenStreetMap (картинки, те же растры, если не ошибаюсь), а по-верх них рисую точки, линии, полигоны...
Вам придётся показывать и векторную и растровую информацию - тут вариантов нет.
Но векторная информация может быть сразу подготовлена для визуализации в качестве растра (по аналогии - Mapnik) и визуализатор будет оперировать только массивами точек. Если крут, то и их плотностью. Или же визуализатор внутри себя будет оперировать примитивами рисования - тогда его природа будет векторной.

Аватара пользователя
SergeyRyzhkov
Гуру
Сообщения: 909
Зарегистрирован: 02 июл 2014, 19:13
Репутация: 203
Ваше звание: GP-экотеррористы
Откуда: Санкт-Петербург
Контактная информация:

Re: Map Viewer

Сообщение SergeyRyzhkov » 05 май 2015, 11:18

avk
Все логично пишите.
Вот только не понял про proj4 причем тут ГОСТ и библиотека, лень, альтернативы?

Sergey Astakhov
Активный участник
Сообщения: 218
Зарегистрирован: 21 дек 2012, 01:57
Репутация: 52
Откуда: Питер

Re: Map Viewer

Сообщение Sergey Astakhov » 05 май 2015, 11:35

virtu писал(а):
Sergey Astakhov писал(а):Для скорости надо конвертировать объекты геометрии целиком + сразу задумываться о возможном применении графических ускорителей.
А что Вы имеете ввиду под "конвертацией объектов геометрии целиком"?
То, что API преобразования проекций и рисования надо делать не в терминах отдельных точек (как в вашем примере), а объектов геометрии (линий, полигонов и т.п.). Это даст задел для оптимизации в будущем.

Аватара пользователя
avk
Новоприбывший
Сообщения: 10
Зарегистрирован: 04 май 2015, 02:30
Репутация: 3
Откуда: Санкт-Петербург

Re: Map Viewer

Сообщение avk » 05 май 2015, 13:55

SergeyRyzhkov писал(а): Вот только не понял про proj4 причем тут ГОСТ и библиотека, лень, альтернативы?
- Приведённый ГОСТ о преобразовании СК и том, как это рекомендуется делать (порядок, последовательность,...) для нужд российских потребителей. Proj.4 делает то же самое, но по-своему. Поэтому всё грустно с технической точки зрения.
- Разработка аналога Proj.4 - занятие трудоёмкое. Поэтому лень заставляет применять то, что есть. Отсюда, отсутствие альтернатив, столь же гибких и мощных.

В целом, это было IMHO. Поэтому не относитесь слишком строго :D

gamm
Гуру
Сообщения: 4056
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1054
Ваше звание: программист
Откуда: Казань

Re: Map Viewer

Сообщение gamm » 05 май 2015, 14:23

ТС, не мудрите, начните с простого:

1) преобразование координат между окном рисования (областью обновления) и карты, т.е. перевод пикселей в координаты проекции и обратно. Отслеживание событий уиндовса (перемещение, мышка, выбор инструментаб обновление части окна). Показ состояния (масштаб, текущие координаты).

2) стандартные манипуляции с окном - скроллинг, увеличение/уменьшение масштаба - отслеживание области обновления и изменение пересчета координат. Дорисовка при перемещении / изменении масштаба

3) отсечение линейных объектов окном рисования/обновления, рендеринг линейных объектов (алгоритм Бразенхейма), управление раскраской и толщиной - примитивная легенда

4) загрузка векторных объектов через GDAL/OGR без изменения проекции - пока линейных (из MIF/MID, которые можно править руками).

5) загрузка растра через GDAL (без изменения проекции), синтез RGB и индексированных цветов (примитивная легенда классов). Выбор нужной области и вывод в окно - изменение размера фрагмента в соответствии с масштабом (пока билинейная интерполяция).

когда все это заработает, двинетесь дальше.
Последний раз редактировалось gamm 05 май 2015, 14:28, всего редактировалось 1 раз.

gamm
Гуру
Сообщения: 4056
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1054
Ваше звание: программист
Откуда: Казань

Re: Map Viewer

Сообщение gamm » 05 май 2015, 14:27

avk писал(а):Proj.4 делает то же самое, но по-своему.
вы считаете, у них там Земля другой формы или синус другие значения принимает? интересная точка зрения на геодезию ...

virtu
Интересующийся
Сообщения: 17
Зарегистрирован: 20 фев 2015, 07:48
Репутация: 0

Re: Map Viewer

Сообщение virtu » 05 май 2015, 16:22

gamm писал(а):ТС, не мудрите, начните с простого:

1) преобразование координат между окном рисования (областью обновления) и карты, т.е. перевод пикселей в координаты проекции и обратно. Отслеживание событий уиндовса (перемещение, мышка, выбор инструментаб обновление части окна). Показ состояния (масштаб, текущие координаты).

2) стандартные манипуляции с окном - скроллинг, увеличение/уменьшение масштаба - отслеживание области обновления и изменение пересчета координат. Дорисовка при перемещении / изменении масштаба

3) отсечение линейных объектов окном рисования/обновления, рендеринг линейных объектов (алгоритм Бразенхейма), управление раскраской и толщиной - примитивная легенда

4) загрузка векторных объектов через GDAL/OGR без изменения проекции - пока линейных (из MIF/MID, которые можно править руками).

5) загрузка растра через GDAL (без изменения проекции), синтез RGB и индексированных цветов (примитивная легенда классов). Выбор нужной области и вывод в окно - изменение размера фрагмента в соответствии с масштабом (пока билинейная интерполяция).

когда все это заработает, двинетесь дальше.
Спасибо Вам за упорядочивание моих тугодумных мозгов :) Это то, что нужно...
Сейчас как раз, пытаюсь сделать 1 и 2 пункты
- вывел OpenStreetMap на QWidget. Из тайловых координат перевел в оконные...
- хочу вывести в QGraphicsView...
- сделал скролинг, увеличение/уменьшение масштаба...
- все пока работает довольно глючно...
Есть проблемы с пониманием того, что я делаю, поэтому прошу Вас gamm, далеко не уходите еще пару дней :D
GUI раньше не программировал, поэтому затупляю.

gamm
Гуру
Сообщения: 4056
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1054
Ваше звание: программист
Откуда: Казань

Re: Map Viewer

Сообщение gamm » 05 май 2015, 16:48

virtu писал(а):GUI раньше не программировал
я тоже. Просто устал смотреть на ваши мученья :D

Аватара пользователя
avk
Новоприбывший
Сообщения: 10
Зарегистрирован: 04 май 2015, 02:30
Репутация: 3
Откуда: Санкт-Петербург

Re: Map Viewer

Сообщение avk » 05 май 2015, 18:11

Если же вам только GDAL/OGR встроить в своё приложение - то это тоже путь получения "Map Viewer". Даже не путь, а столбовая дорога. Только на SourceForge проектов на две страницы при беглом поиске.
Я то подумал, что вы действительно велосипед собираетесь построить...

virtu
Интересующийся
Сообщения: 17
Зарегистрирован: 20 фев 2015, 07:48
Репутация: 0

Re: Map Viewer

Сообщение virtu » 06 май 2015, 01:13

avk писал(а):Если же вам только GDAL/OGR встроить в своё приложение - то это тоже путь получения "Map Viewer". Даже не путь, а столбовая дорога. Только на SourceForge проектов на две страницы при беглом поиске.
Я то подумал, что вы действительно велосипед собираетесь построить...
avk, Вы все правильно говорите и логично. Я не ответил Вам, просто потому что возразить нечем :) у меня в голове каша из-за обширной информации...
Я действительно изобретаю велосипед с нуля. Мне нужен велик для того, что бы понять смысл, понять порядок действий построения подобных приложений... У меня есть небольшой проект, где я использовал готовые либы - я просто там бездумно подключил сторонний вьювер (QMapControl из Merkaator-а) и вывел карту на него, даже подключил несколько приборов GPS/GLONASS - и мне не пришлось даже думать как я это сделал, - я просто это сделал и все заработало. Но мне хочется вникнуть в суть дела, по-глубже...
Да, действительно мне интересны такие либы как GDAL/OGR и proj.4 и я считаю, что их обязательно нужно использовать... - и я до них еще доберусь - по-позже...

virtu
Интересующийся
Сообщения: 17
Зарегистрирован: 20 фев 2015, 07:48
Репутация: 0

Re: Map Viewer

Сообщение virtu » 06 май 2015, 12:47

gamm писал(а): 1) преобразование координат между окном рисования (областью обновления) и карты, т.е. перевод пикселей в координаты проекции и обратно. Отслеживание событий уиндовса (перемещение, мышка, выбор инструментаб обновление части окна). Показ состояния (масштаб, текущие координаты).
...
Скажите, где можно почитать про эту тему? Любые ссылки и англо тоже приветствуются.

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 793
Ваше звание: званий не имею
Откуда: Москва

Re: Map Viewer

Сообщение Александр Мурый » 06 май 2015, 13:06

avk писал(а):Так, видимо, и с proj.4: сильное распространение, наша природная лень, сложность вопроса - и ву-аля, альтернатив нет.
Альтернативы есть.
Редактор материалов, модератор форума

gamm
Гуру
Сообщения: 4056
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1054
Ваше звание: программист
Откуда: Казань

Re: Map Viewer

Сообщение gamm » 06 май 2015, 13:07

virtu писал(а):
gamm писал(а):Скажите, где можно почитать про эту тему? Любые ссылки и англо тоже приветствуются.
в мануале на используемый вами SDK. Если это голимый уиндовс, то в MSDN (про функцию обработки событий окна), но судя по вашим сообщениям, вы используете нахлобучку в виде Qt. Значит, в ее мануале - там есть описание, какие события в окне возникают, какие параметры они передают, и куда писать соответствующие программы обработки.

virtu
Интересующийся
Сообщения: 17
Зарегистрирован: 20 фев 2015, 07:48
Репутация: 0

Re: Map Viewer

Сообщение virtu » 06 май 2015, 14:33

gamm писал(а):
virtu писал(а):
gamm писал(а):Скажите, где можно почитать про эту тему? Любые ссылки и англо тоже приветствуются.
в мануале на используемый вами SDK. Если это голимый уиндовс, то в MSDN (про функцию обработки событий окна), но судя по вашим сообщениям, вы используете нахлобучку в виде Qt. Значит, в ее мануале - там есть описание, какие события в окне возникают, какие параметры они передают, и куда писать соответствующие программы обработки.
Про события в окне я разобрался...
Не могу понять про координаты области, как их, черт их побери :D
Скажите еще вот про такую тему, как же все таки мне определить размер области (-180,90) (180,-90)?
Эти самые цифры мне надо как-то преобразовать, что бы правильно выводилась карта, я что-то застрял на одном месте... Никак не могу понять каким образом построить эту область... похоже это что-то связанно с радианами, правильно я думаю?
На картинке карта грузится с началом координат вьювера (0,0)-верхний левый угол.
Вложения
map.png
map.png (70.04 КБ) 10961 просмотр

Аватара пользователя
SergeyRyzhkov
Гуру
Сообщения: 909
Зарегистрирован: 02 июл 2014, 19:13
Репутация: 203
Ваше звание: GP-экотеррористы
Откуда: Санкт-Петербург
Контактная информация:

Re: Map Viewer

Сообщение SergeyRyzhkov » 06 май 2015, 14:55

Небольшая, видимо, кашица у Вас пока в голове, но это не страшно, главное желание.

Лет 10 назад тоже изобретал - очень помогло проникнуться.

Я бы что Вам посоветовал сейчас, посмотреть на типовую архитектуру, например,
https://github.com/pauldendulk/Mapsui
Не важно что на шарпе, сам смысл уловите
(Geometry, Feature, Style, Layer, Map, ViewPort, MapControl)
Посмотрите кто кого "ловит" на событиях, как производится пересчет экранных координат в используемую карт. СК, а затем происходит "фетч" (обновление) данных и обратный "рендеринг" на полотне (MapControl)

Ответить

Вернуться в «Общий - ПО»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 14 гостей