растровые плиточные карты и форматы привязки

14 views
Skip to first unread message

slazav

unread,
Feb 29, 2020, 10:14:17 AM2/29/20
to mapsoft2
В качестве одного из следующих шагов я хочу вставить во вьюер возможность просмотра плиточных карт, в том числе со скачиванием из интернета. Для этого надо бы придумать/найти какой-то формат для хранения информации о таких картах. Внутри это, очевидно, расширение обычных привязок карт (и так было сделано в mapsoft1). Вопрос в том, как это правильно записывать в файл.

В mapsoft1 был свой xml-подобный формат, который не очень хочется реанимировать (это нестандартный xml, с каким-то самодельным парсером на boost::spirit). Единственный формат привязок, который сейчас поддерживается в mapsoft2 - это map-файлы в формате OziExplorer. Но они не слишком хороши для запихивания внутрь всяких расширений. Кажется, что может подойти kml, но я пока не изучал это внимательно. А что бывает еще?

Нужен файл привязки, где вместо названия файлов будет шаблон url'а, и где можно будет добавить какие-то дополнительные поля: размер плиток, с юга или с севера они считаются, может быть, информацию о том, где и как кэшировать скачанные плитки...

Есть ли у вас какие-то идеи и пожелания, как такое было бы удобно реализовать? Чтоб для пользователя работа с привязанной картой OziExplorer не отличалась от работой с гуглоплитками.

ioctl

unread,
Feb 29, 2020, 11:27:22 AM2/29/20
to mapsoft2
Не всё понял, но могу рассказать, как это делается во многих приложениях.
 
1. Для хранения и операций с плитками часто используется основанный на sqlite формат MBTiles: https://github.com/mapbox/mbtiles-spec , его понимают многие популярные программы. У OpenStreetMap свой формат, там если я не путаю, ось Y смотрит в другую сторону, остальное всё почти так же.
 
Оба этих файла создаются скриптом make_tiles.sh , формат простой, если не сказать примитивный. Всякие дополнительные поля там вроде предусмотрены.
 
Если не пугает лишняя зависимость от sqlitedb, можно использовать MBTiles.
 
2. Для хранения плиток в интернете популярна следующая схема:  https://server.name/$Z/$X/$Y.png , например,  https://mapnik.osmand.net/2/2/1.png
Так в OSM можно прописать путь к произвольному серверу, указав схему именования: Настройки->Источник карты->Задать/отредактировать; предварительно может потребоваться включить Настройки->Плагины->Онлайн_карты
 
Обычно каждая плитка имеет размер 256x256, остальные размеры как-то менее популярны. Географические координаты углов плитки всегда жёстко задаются числами Z,X,Y. Важный момент: для разных чисел Y фактический масштаб плиток различается за счёт особенностей проекции.
 
По идее, в mapsoft2 можно использовать аналогичную иерархию папок: Z/X/Y.
 
Не так давно я подумал, что хорошо бы сделать сервер по вышеописанному типу с картами map_podm -- там работы на пол-дня, на самом деле. Это сильно упростит процесс загрузки карт на телефоны для всех желающих. Но пока руки не дошли.
 
 
Алексей
 
 
29.02.2020, 18:14, "slazav" <vl.za...@gmail.com>:
--
You received this message because you are subscribed to the Google Groups "mapsoft2" group.
To unsubscribe from this group and stop receiving emails from it, send an email to mapsoft2+u...@googlegroups.com.
To view this discussion on the web, visit https://groups.google.com/d/msgid/mapsoft2/6823933e-80c4-47d0-a587-18d8dc4ba604%40googlegroups.com.

slazav

unread,
Feb 29, 2020, 11:43:59 AM2/29/20
to mapsoft2
Это примерно понятно. Но вот теперь у меня есть разные плиточные карты, как ты описал, лежащие в разных местах и в разных форматах. Нарисованные в разных проекциях. И я хочу открыть одну из таких карт. Например, финские карты, нарисованные в финской поперечно-цилиндрической проекции, лежащие на известном сервере, доступные по известному url.

Довольно логично иметь локальный "файл привязки", аналогичный map-файлу OziExplorer, где будет записано, куда идти, что брать, в какой проекции рисовать, какая граница у этой карты и т.п.
Кажется, такое можно сделать в kml, но я бы, конечно, предпочел формат, который можно было бы читать/писать руками или простыми скриптами.

Nikolay Korotkiy

unread,
Feb 29, 2020, 11:54:13 AM2/29/20
to mapsoft2
В GPXSee ровно для этого же сделан свой простой xml формат: https://www.gpxsee.org/doc.html#online

slazav

unread,
Feb 29, 2020, 12:04:37 PM2/29/20
to mapsoft2
Да, это примерно то, что нужно! Наверное, попробую сделать поддержку этого формата.

ioctl

unread,
Feb 29, 2020, 12:05:19 PM2/29/20
to mapsoft2
KML же вроде текстовый? А KMZ то же, но в ZIP.
 
29.02.2020, 19:44, "slazav" <vl.za...@gmail.com>:
Это примерно понятно. Но вот теперь у меня есть разные плиточные карты, как ты описал, лежащие в разных местах и в разных форматах. Нарисованные в разных проекциях. И я хочу открыть одну из таких карт. Например, финские карты, нарисованные в финской поперечно-цилиндрической проекции, лежащие на известном сервере, доступные по известному url.
 
Довольно логично иметь локальный "файл привязки", аналогичный map-файлу OziExplorer, где будет записано, куда идти, что брать, в какой проекции рисовать, какая граница у этой карты и т.п.
Кажется, такое можно сделать в kml, но я бы, конечно, предпочел формат, который можно было бы читать/писать руками или простыми скриптами.

 

--

You received this message because you are subscribed to the Google Groups "mapsoft2" group.
To unsubscribe from this group and stop receiving emails from it, send an email to mapsoft2+u...@googlegroups.com.
To view this discussion on the web, visit https://groups.google.com/d/msgid/mapsoft2/d328bcbc-6464-42da-861e-45d9e4e757e7%40googlegroups.com.

slazav

unread,
Feb 29, 2020, 12:14:05 PM2/29/20
to mapsoft2
> KML же вроде текстовый? А KMZ то же, но в ZIP.

Но я такой текст не способен сочинять/править по памяти, не глядя в описание. Некоторые бинарные форматы гораздо лучше в этом смысле...

Reply all
Reply to author
Forward
0 new messages