выдернуь тайлики из RMaps sqlite базы

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

Модератор: Tolik

Ответить
pfg21
Новичок
Сообщения: 5
Зарегистрирован: 06 мар 2016, 01:56
Благодарил (а): 1 раз
Поблагодарили: 2 раза

выдернуь тайлики из RMaps sqlite базы

Сообщение pfg21 »

Есть выгрузка в RMaps (Sqlite3), Кеш саспланеты потерян. Надо перегнать тайлы из RMaps в кеш саспланеты, хотя бы тот же GMT
Я понимаю что, это десяток строчек в скрипте, который подключит sqlite, просмотрит tiles, для каждой строчки blob из image запишет в отдельный файл z/x/y...
но не програмист я, напишу чтото работающее через пару дней методом ненаучного тыкания.
Мож у кого есть что подобное ??
Аватара пользователя
garl
Гуру
Сообщения: 1625
Зарегистрирован: 16 июл 2008, 14:40
Откуда: Краснодар, Кубанская столица.
Благодарил (а): 97 раз
Поблагодарили: 272 раза

Re: выдернуь тайлики из RMaps sqlite базы

Сообщение garl »

метода такова:
каким либо SQLIte просмотрщиком сделать экспорт в папку
затем банальным zmp скачать этот кэш из папки в кэш для САС.
Russian NDN Team
QIP NightlyTester
pfg21
Новичок
Сообщения: 5
Зарегистрирован: 06 мар 2016, 01:56
Благодарил (а): 1 раз
Поблагодарили: 2 раза

Re: выдернуь тайлики из RMaps sqlite базы

Сообщение pfg21 »

мнэээ, я чего-то видать недопонимаю. но экспорт, из тех прог что пробовал, делается в формат текстовой таблицы (csv json xml) c ественной потерей блобов.
есть чтото другое ??
Аватара пользователя
garl
Гуру
Сообщения: 1625
Зарегистрирован: 16 июл 2008, 14:40
Откуда: Краснодар, Кубанская столица.
Благодарил (а): 97 раз
Поблагодарили: 272 раза

Re: выдернуь тайлики из RMaps sqlite базы

Сообщение garl »

так надо делать экспорт блоб в файлы.
затем банально эти файлы переименовывать в *.jpg например
уже не помню чем делал но была какая то программулина которая в триале давала по 1000 полей за раз экспортировать.
Russian NDN Team
QIP NightlyTester
pfg21
Новичок
Сообщения: 5
Зарегистрирован: 06 мар 2016, 01:56
Благодарил (а): 1 раз
Поблагодарили: 2 раза

Re: выдернуь тайлики из RMaps sqlite базы

Сообщение pfg21 »

наверняка чтонить да есть.
в общем нарисовал на питоне, заодно наконец-то до него добрался. скрипт простенький, ибо запускаться планируется один раз :). настроек: имя базы и расширение картинок. запускал на pythone 3.4.4 (все нужные модули в комплекте поставки).
скрытый текст: показать

Код: Выделить всё

import sqlite3, os
extension = '.jpg'

dbase = sqlite3.connect('ergaki_aradan.sqlitedb')	# 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(17-row[2])+ '\\' +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[0])+extension , 'wb' )
	file_out.write(row[4]);
	file_out.close()

	row = cur.fetchone()	# read next row
# end while
dbase.close()
да нашел в завалах ергаки-арадан, сейчас в облако выложу.
iottor
Новичок
Сообщения: 1
Зарегистрирован: 11 фев 2017, 02:11
Благодарил (а): 1 раз

Re: выдернуь тайлики из RMaps sqlite базы

Сообщение iottor »

pfg21 писал(а):наверняка чтонить да есть.
в общем нарисовал на питоне, заодно наконец-то до него добрался. скрипт простенький, ибо запускаться планируется один раз :). настроек: имя базы и расширение картинок. запускал на pythone 3.4.4 (все нужные модули в комплекте поставки).
скрытый текст: показать

Код: Выделить всё

import sqlite3, os
extension = '.jpg'

dbase = sqlite3.connect('ergaki_aradan.sqlitedb')	# 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(17-row[2])+ '\\' +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[0])+extension , 'wb' )
	file_out.write(row[4]);
	file_out.close()

	row = cur.fetchone()	# read next row
# end while
dbase.close()
да нашел в завалах ергаки-арадан, сейчас в облако выложу.

Приветствую всех !!

А можно чуть подробнее: что куда класть, что где прописывать, а то попытался запустить но не пошло. Не знаю Питон :?
pfg21
Новичок
Сообщения: 5
Зарегистрирован: 06 мар 2016, 01:56
Благодарил (а): 1 раз
Поблагодарили: 2 раза

Re: выдернуь тайлики из RMaps sqlite базы

Сообщение pfg21 »

э-э-э, я думал и так все понятно из скрипта.

настройки все в нем (ломало их куда либо выносить скрипт практически одноразовой работы).
ну таки вот

1. Качаем питон по ссылке, инсталлируем в систему.
2. Берем код из спойлера и записываем в файлик script.py (или иной с расширением .py чтобы его операционка с питоном запускала)
3. Рядом кладем файлик с RMaps.sqlitedb картой (базу и файлик лучше положить в отдельную пустую папку, удобней будет)
4. Имя базы прописываем в строчке dbase = sqlite3.connect('ergaki_aradan.sqlitedb') или переименовываем базу в это имя
5. в строчке extension = ***** прописываем раcширение которое будет дописываться получаемым файлам '.jpg' для JPEG '.png' для PNG '.gif' для GIF и т.д.
просто в базе у тайлов отсутвует расширение, а в виде отдельных файликов оно как бы нужно. эта строчка символов просто дописывается в конец имени файла.
6. запускаем скрипт
7. скрипт создает подпапку tile_gmt и внутрь записывает все найденные в базе тайлики.
8. После окончания работы скрипта можно заглянуть внутрь tile_gmt и посмотреть правильное ли расширение взято для картинок.
9. Переименовываем папку tile_gmt в нужное имя, и перемещаем ее в кеш Globallmapper тайликов, он обычно лежит в папке cache_gmt\ внутри установленной саспланеты.

как-то так.
Ответить

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