SASGIS

Веб-картография и навигация

ReefMaster

Обсуждение около-картографических и прочих программ и тем, напрямую не связанных с SAS.Планета

Модератор: Tolik

ReefMaster

Сообщение VadimK60 » 24 окт 2018, 23:52

Здравствуйте!

Подскажите, пожалуйста, можно ли в SAS.planet подключить карту в формате MBTiles ?
Если возможно, то каково должно быть содержимое соответствующего файла *.zmp\params.txt ?

Объясню, почему меня интересует этот вопрос.
Делаю карты грубин местных водоёмов в ReefMaster ver1.7.
Раньше сохранял результат в .KML+.PNG,
которые потом разбивал на тайлы в Global Mapper v.16,
которые потом помещал в cache_gmt SAS.planet,
которые потом экспортировал в кэш SAS.Android на планшете.
(К сожалению, используемый мною эхолот не поддерживает картографию)

Новый ReefMaster v2.0 умеет сохранять результат в файл .mbtiles , который по сути является базой данных из нарезанных тайлов.
Т.е. появился шанс избавиться от посредника в виде ГлобалМэппера.

Если напрямую подключить .MBtiles в SAS.planet невозможно, то может посоветуете какой-нибудь конвертер для перевода .MBtiles в набор тайлов, поддерживаемый программой SAS.planet (желательно, с наименьшими потерями) ? Кстати, может мне показалось, но вроде как содержимое тайлов из MBtiles совпадает с глобалмэпперовскими тайлами, а вот нумерация -- нет. Может я и заблуждаюсь. :)

Буду рад ответам и советам. Заранее спасибо!

PS: Очень кстати нашелся на этом форуме питоновский скрипт для выдёргивания тайлов из SQLite-овской базы: (спасибо pfg21).
Переделал его под .MBTiles:
Код: Выделить всё
import sqlite3, os
extension = '.png'

dbase = sqlite3.connect('MyReefMasterMap.mbtiles')   # open sqlitedb
cur = dbase.cursor()         # create cursor
cur.execute('SELECT * FROM tiles')   # goto tiles

row = cur.fetchone()   #read 1st row

while row != None:   #loop all row

# make subdir
   file_dir = 'tile_gmt\\z' + format(row[0])+ '\\' +format(row[1]) + '\\'
   if not os.path.exists (file_dir):   os.makedirs (file_dir)

# save image to file
   file_out = open ( file_dir+format(row[2])+extension , 'wb' )
   file_out.write(row[3]);
   file_out.close()

   row = cur.fetchone()   # read next row
# end while
dbase.close()

Вроде работает, выкладывает тайлы в папку tile_gmt.
Правда, я не уверен, что координаты X и Y не перепутаны. :)
И _gmt (Global Mapper Tiles) тут наверное не к месту...

PPS:
С хранением кэша в формате MBTiles вроде как разобрался: в zmp\params.txt нужно указать тип кэша "MBTiles" -- добавить или изменить строку CachType=72.
После запуска планеты в корне программы появится каталог cache_MBtiles (структура аналогична папке cache), в ней папка кэша карты, и в поддиректории "v" располагается файл базы данных в виде файла MBtiles.sqlitedb (в моём случае: cache_MBtiles\yamapng_\v\MBtiles.sqlitedb ).

Остаётся открытым вопрос, насколько совместимы .mbtiles , выдаваемый ReefMaster'ом, и сасовский MBtiles.sqlitedb ?

PPPS:
Есть 2 новости, и обе плохие.
1. Поддержка MBTiles есть не в SAS.planet, как я ошибочно написал выше, а в SACS.planet, которая с 2015 года не развивается.
2. Формат кэша MBtiles.sqlitedb в SACS.planet имеет мало общего с файлом MBTiles от ReefMaster2. Причём если у последнего всё предельно ясно (z,x,y,картинка), то в кэше MBTiles от SACS слишком много всего навёрнуто, мягко говоря. :o

Поэтому на данный момент можно констатировать, что просто так файл MBTiles от ReefMaster2 подсунуть в качестве кэша SAS.planet невозможно... :(
Вложения
SACS.planet MBtiles.sqlitedb_.PNG
SACS.planet MBtiles.sqlitedb - Данные
ReefMaster2_MBtiles_.PNG
ReefMaster2 MBtiles - Данные
SACS.planet MBtiles.sqlitedb.PNG
SACS.planet MBtiles.sqlitedb - Структура БД
ReefMaster2_MBtiles.PNG
ReefMaster2 MBtiles - Структура БД
VadimK60
Новичок
 
Сообщения: 25
Зарегистрирован: 24 окт 2018, 23:18
Благодарил (а): 6 раз.
Поблагодарили: 4 раз.

Re: ReefMaster

Сообщение VadimK60 » 29 окт 2018, 18:15

VadimK60 писал(а):Если напрямую подключить .MBtiles в SAS.planet невозможно, то может посоветуете какой-нибудь конвертер для перевода .MBtiles в набор тайлов, поддерживаемый программой SAS.planet (желательно, с наименьшими потерями) ?(

Ура!! Сам разобрался! :D

Доработал вышеприведённый скрипт, и с его помощью удалось конвертировать (путём переименования файлов, без пересжатия и потери качества!) рифовский .mbtiles в набор тайлов, который можно использовать как кэш в SAS.planet.

Текст скрипта:
Код: Выделить всё
#
# ReefMaster v2.0 MBtiles to SAS.planet cache convetrer
#

import sqlite3, os
extension = '.png'

dbase = sqlite3.connect('НазваниеВашейКартыВписываемСюда.mbtiles')   # open sqlitedb
cur = dbase.cursor()         # create cursor
cur.execute('SELECT * FROM tiles')   # goto tiles

row = cur.fetchone()   #read 1st row

while row != None:   #loop all row

#\SAS.Planet\cache\map\z18\74\x75826\38\y39591.png

   z=row[0]+1
   x=row[1]
   y=(1<<(z-1))-row[2]-1

# make subdir
   file_dir = 'cache\\ReefMaster\\z' + format(z)+ '\\' +format(x//1024) + '\\x'+format(x) + '\\'+format(y//1024) + '\\'

   if not os.path.exists (file_dir):   os.makedirs (file_dir)

# save image to file
   file_out = open ( file_dir+'\\y'+format(y)+extension , 'wb' )
   file_out.write(row[3]);
   file_out.close()

   row = cur.fetchone()   # read next row
# end while
dbase.close()

Качаем последнюю тестовую версию SAS.planet, распаковываем.

Вышеприведённый питоновский скрипт сохраняем в корневой папке программы с расширением .py (латинскими, например: СonvertMBtilesToSAS.py)
Запускаем скрипт (естественно, предварительно должен быть установлен Python).
Скрипт извлекает из файла НазваниеВашейКартыВписываемСюда.mbtiles все тайлы и перекидывает их в папку cache\ReefMaster

В корне программы создаём папку Maps\sas.maps\ReefMaster.zmp\ с файлом params.txt следующего содержания:
Код: Выделить всё
[PARAMS]
pnum=20
GUID={CBA03063-23D9-FFFF-931A-9182B98644B1}
asLayer=1
name_ru=ReefMaster
name   =ReefMaster
name_uk=ReefMaster
projection=1
sradiusa=6378137
sradiusb=6378137
NameInCache=ReefMaster
Ext=.png
ContentType=image/png

(файл param.txt я создавал на основе ZMP от Google Maps)

Запускаем SASPlanet.exe, переходим в меню Слои > ReefMaster любуемся своей картой глубин, наложенной на спутниковую карту от Google|Yandex|Bing ...

ReefMaster@SASplanet.png


Это конечно хорошо, но затевалось всё для просмотра карты глубин на андроидном планшете в программе SAS4Android (для доступа из России необходимо воспользоваться VPN, например, установив дополнение BrowSec в хроме или опере).

Выделяем необходимый участок и экспортируем в упакованный кэш программы SAS4Android. Полученный файл перекидываем на планшет в соответствующую папку. На планшете нужно ещё один файлик подправить - потом допишу, как.

Теперь при выезде на рыбалку главное планшет с картами глубин не забыть. ;)

ReefMasterMBtilesToSASplanet.rar
ZMP и скрипт для распаковки MBtiles
(1.34 KiB) Скачиваний: 363


PS: в питоновском скрипте СonvertMBtilesToSAS.py не забудьте поменять название НазваниеВашейКартыВписываемСюда.mbtiles на нужное (лучше латиницей)!
VadimK60
Новичок
 
Сообщения: 25
Зарегистрирован: 24 окт 2018, 23:18
Благодарил (а): 6 раз.
Поблагодарили: 4 раз.

Re: ReefMaster

Сообщение agronom » 31 окт 2018, 13:28

Не проще ли смотреть на андроиде .mbtiles с помощью таких приложений как - AlpineQuest, Locus, OruxMaps?
В ветке AlpineQuest на форуме 4PDA один человек все бьется с улучшением загрузки 3D глубин.
agronom
Новичок
 
Сообщения: 10
Зарегистрирован: 15 май 2017, 15:36
Благодарил (а): 7 раз.
Поблагодарили: 1 раз.

Re: ReefMaster

Сообщение VadimK60 » 31 окт 2018, 18:16

agronom писал(а):Не проще ли смотреть на андроиде .mbtiles с помощью таких приложений как...

Возможно...
Но на повестке дня стоял вопрос не "чем лучше смотреть?", а "как" с наименьшими потерями отобразить данные из .mbtiles в SAS.planet|SAS4Android ?
VadimK60
Новичок
 
Сообщения: 25
Зарегистрирован: 24 окт 2018, 23:18
Благодарил (а): 6 раз.
Поблагодарили: 4 раз.

Re: ReefMaster

Сообщение Riverplate » 04 ноя 2018, 19:14

Я и есть тот "один человек с 4PDA", который желает увидеть глубину в 3D. Отвечу по порядку:
1. Испробовал множество картографических приложений для адекватной визуализации карты глубин на андроидных девайсах, лучшее, да и единственное приложение на сегодняшний день, соответствующее моим потребностям - AlpineQuest Offroad Explorer, Локус ужасно тормозит с картой глубин (точнее сказать уже с прошлогодней картой глубин он отказался нормально работать), не удаляю, т.к. он у меня платный, всё остальное - Орукс, Галилео, Навионикс, Османд давным-давно удалил. Также не вижу смысла переходить на версию Рифмастера 2.0, ибо карта глубин из Рифа 2.0 импортируется сразу со спутниковой подложкой в формате MBTiles - а зачем сие, когда у меня стоят в Альпине 7 спутниковых карт и 5 старых топокарт, а карту глубин я просто импортирую в формате KMZ, сделав её в Рифе 1.7. Так что просмотр на девайсе в SAS4Android считаю очередным излишествым, попробуйте Альпин и гарантирую, что обо всём остальном вы забудете.
2. А вот увидеть цветную карту глубин в САСПланете не получалось, а именно этого и хотелось, т.к. в САС, в отличии от Гугл Планеты Земля, многие гео-сервисы для моей области реки имеют спутниковые снимки по низкому уровню воды. Т.е. я правильно понял, что мне самому прописывать ничего не надо, а просто закинуть zmp в соответствующую папку?

За это сообщение автора Riverplate поблагодарил:
SergeyKa (20 ноя 2021, 23:38)
Рейтинг: 5.26%
 
Riverplate
Новичок
 
Сообщения: 10
Зарегистрирован: 27 апр 2016, 21:16
Благодарил (а): 0 раз.
Поблагодарили: 2 раз.

ReefMaster

Сообщение Riverplate » 04 ноя 2018, 19:18

Аааа, я же не смогу увидеть в САСПланете карту глубин, ибо у меня же Риф 1.7 - а как можно отобразить карту глубин в формате KMZ с цветными полигонами (импортируются только главные контуры глубин без раскраски)?
Riverplate
Новичок
 
Сообщения: 10
Зарегистрирован: 27 апр 2016, 21:16
Благодарил (а): 0 раз.
Поблагодарили: 2 раз.

Re: ReefMaster

Сообщение VadimK60 » 05 ноя 2018, 14:45

Riverplate
Riverplate писал(а):Также не вижу смысла переходить на версию Рифмастера 2.0, ибо карта глубин из Рифа 2.0 импортируется сразу со спутниковой подложкой в формате MBTiles
Что-то не заметил я спутниковой подложки в MBtiles. Там, где нет данных глубин -- просто прозрачный "цвет". Может какую галку при экспорте забыли поставить ?
Riverplate писал(а):а карту глубин я просто импортирую в формате KMZ, сделав её в Рифе 1.7.
Ни разу не пользовался форматом KMZ. Сколько рифмастером в KMZ зумов сохраняется ? Один ?
Riverplate писал(а):Так что просмотр на девайсе в SAS4Android считаю очередным излишествым, попробуйте Альпин и гарантирую, что обо всём остальном вы забудете.
Может когда и попробую. Пока SAS4Android хватает.
Riverplate писал(а):Т.е. я правильно понял, что мне самому прописывать ничего не надо, а просто закинуть zmp в соответствующую папку?

Да.
Просто распакуйте содержимое архива в папку с программой SAS.planet.
Киньте файл .mbtiles туда же
Измените название файла в питоновском скрипте.
Запустите скрипт (надеюсь, питон уже установлен). Он распакует содержимое .mbtiles в папку cache\ReefMaster
Запустите SAS.planet, выберите соответствующую карту в слоях (ReefMaster)
VadimK60
Новичок
 
Сообщения: 25
Зарегистрирован: 24 окт 2018, 23:18
Благодарил (а): 6 раз.
Поблагодарили: 4 раз.

Re: ReefMaster

Сообщение VadimK60 » 05 ноя 2018, 14:51

Riverplate писал(а):Аааа, я же не смогу увидеть в САСПланете карту глубин, ибо у меня же Риф 1.7

про KMZ не знаю, а .KML+.PNG можно конвертнуть, но геморно:
VadimK60 писал(а):Делаю карты грубин местных водоёмов в ReefMaster ver1.7.
Раньше сохранял результат в .KML+.PNG,
которые потом разбивал на тайлы в Global Mapper v.16,
которые потом помещал в cache_gmt SAS.planet,
которые потом экспортировал в кэш SAS.Android на планшете.

Если интересует способ, то могу вечером поподробнее рассказать.
VadimK60
Новичок
 
Сообщения: 25
Зарегистрирован: 24 окт 2018, 23:18
Благодарил (а): 6 раз.
Поблагодарили: 4 раз.

Re: ReefMaster

Сообщение Riverplate » 05 ноя 2018, 16:01

Про импорт карты глубин вместе со спутниковой подложкой обсуждалось на Русфишинге и именно в формате mbtiles. Мне этого не надо, т.к. коррекцию карты глубин осуществляю в Гугл Планета Земля, загрузив в неё файл KMZ, полученный из Рифмастера - очень удобно, особенно если есть снимки по малой воде. Карта глубин после импорта в Альпине показывается на любом зуме, никаких проблем нет. Так, тогда как мне поступить - попробовать конвертировать KMZ в MBTiles (если такое конечно возможно?
Riverplate
Новичок
 
Сообщения: 10
Зарегистрирован: 27 апр 2016, 21:16
Благодарил (а): 0 раз.
Поблагодарили: 2 раз.

Re: ReefMaster

Сообщение VadimK60 » 07 ноя 2018, 19:50

Riverplate писал(а):Про импорт карты глубин вместе со спутниковой подложкой обсуждалось на Русфишинге и именно в формате mbtiles.

Ещё раз посмотрел на тайлы из .mbtiles (полученного вторым рифмастером) и не нашёл там спутниковой подложки...
Или на на русфишинге наоборот хотели спутниковую подложку добавить в MBTiles ? Где можно почитать это обсуждение ?
Для просмотра карты в качестве слоя в SAS.planet|SAS4Android подложка как раз-таки не нужна.
Riverplate писал(а):Так, тогда как мне поступить - попробовать конвертировать KMZ в MBTiles (если такое конечно возможно?

Если найдёте чем, то пожалуйста.
Но:
KMZ - это запакованый zip'ом KML, векторный формат.
MBTiles - растровый, тайловый.
Проще тогда сразу сохранить в растровый PNG+KML и нарезать GlobalMapper'ом.

PS:
Кстати, в манифесте ReefMaster v1.7 есть строка; " <file name="Resources\SQLScripts\mbtiles_schema.sql" size="1938">" (в файле .sql какой-то запрос к БД?)
И в теле самого exe-шника много вхождений "mbtile"
Так что, возможно, версия 1.7 умеет работать с .mbtiles, просто никто, кроме автора, [пока] не знает как. :)
VadimK60
Новичок
 
Сообщения: 25
Зарегистрирован: 24 окт 2018, 23:18
Благодарил (а): 6 раз.
Поблагодарили: 4 раз.

След.

Вернуться в Болталка

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

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