1 Отредактировано SergeK (15-06-2009 17:37:45)

Тема: SAS.Planet GIS

Есть такая программа - SAS.Planet. www.sasgis.ru

Как и Maemo-Mapper, SAS.Planet закачивает карты из интернета. И хранит их как отдельные файлы в дереве каталогов определенной структуры.

Насколько я понимаю, если понять систему каталогов SAS.Planet, то можно эти картинки вставлять в базу для Maemo-Mapper.

Таким образом можно решить проблему удобной закачки карт для Maemo-Mapper на большом компе.

В последних версиях Maemo-Mapper добавлена возможность хранить карты в формате Sqlite. Python умеет работать с этим форматом. Т.е. скрипт на Python в сотню-другую строк по идее способен решить проблему.

Есть ли здесть знатоки Python, способные решить эту задачу?

N810 (5.2008.43-7) / Moto L9 + K3 + MB525(DEFY) / Toshiba Satellite L655

2

Re: SAS.Planet GIS

Офигенная программа! И денег не просит.
Работает с кучей источников, включая имеющиеся для maemo mapper.
Под wine работает без проблем (GPS не пробовал).
Кэш может хранить в нескольких форматах.
В замену GoogleEarth, однозначно.

Был Nokia N800 + A-Data SDHC6 4Gb + Kingston SDHC6 8Gb + Nokia 5610 + USBHDD + Card Readers + Palm TT3 + Linksys WRT54G / OpenWRT + Megafon EDGE + BT GPS Holux M1000.

3

Re: SAS.Planet GIS

SergeK пишет:

Есть такая программа - SAS.Planet. www.sasgis.ru

Как и Maemo-Mapper, SAS.Planet закачивает карты из интернета. И хранит их как отдельные файлы в дереве каталогов определенной структуры.

Насколько я понимаю, если понять систему каталогов SAS.Planet, то можно эти картинки вставлять в базу для Maemo-Mapper.

Таким образом можно решить проблему удобной закачки карт для Maemo-Mapper на большом компе.

В последних версиях Maemo-Mapper добавлена возможность хранить карты в формате Sqlite. Python умеет работать с этим форматом. Т.е. скрипт на Python в сотню-другую строк по идее способен решить проблему.

Есть ли здесть знатоки Python, способные решить эту задачу?

А почему обязательно Python? У SQLite открытые исходники. Хоть что умеет работать с этим форматом. Чем владеешь, на том и пиши. Маперавская база состоит из одной таблицы:
CREATE TABLE maps(zoom integer, tilex integer, tiley integer, pixbuf blob, primary key (zoom, tilex tiley))
Просто лично для себя я не вижу необходимости закачки карт через ББ, формировать кеш гугловских карт в Maemo-Mapper для меня вполне удобно.
А программа действительно зачетная! Спасибо за ссылку.

4

Re: SAS.Planet GIS

Maemo Mapper сильно тормозит и вываливается на загрузке больших участков с многими зумами.
У меня по крайней мере.

Был бы у Чехова автомобиль, поворотник бы Чехов включал.
N810 (DIABLO_5.2008.43-7)

5

Re: SAS.Planet GIS

Python потому что

1) он есть в любом дистрибутиве Linux и часто ставится по умолчанию, да и под Windows поставить легко.
2) здесь на форуме были люди разрабатывавшие на Python обход дерева каталогов.

Я пообщался по е-мейлу с одним из разработчиков, тот пообещал подумать насчет реализации экспорта в формат Maemo-Mapper (sqlite) прямо в программе. Экспорт для iPhone (тоже sqlite) в программе есть,  так что по идее это не очень сложно.

Закачка через ББ мне например нужна. Потому что в SAS.Planet я могу на работе поставить и закачать все что нужно. А напрямую таблетку могу качать только дома, но там канал в интернет медленный.

N810 (5.2008.43-7) / Moto L9 + K3 + MB525(DEFY) / Toshiba Satellite L655

6 Отредактировано Anore (19-06-2009 04:55:54)

Re: SAS.Planet GIS

Аргументы в пользу Python-а принимаются, но не убеждают. Я, например, с  Питоном не очень дружу. Считаю, что нужно не ждать милостей от природы, а решать задачу, если она возникла,  с помошью того инструментария, который есть под рукой и которым владеешь. Это может быть и  VBScript и С/С++ и что угодно. Утилитку конвертирования кэша SAS.Planet в формат Maemo-Mapperа закинул в Файлы вместе с исходниками что б было интересней.
Использование: Sas2mm.exe <путь до кэша> <имя базы>. Например: Sas2mm E:\SASPlanet\cache\DGsat dgsat.sqlite
Удачи!
Забыл добавить: тип кэша в SAS.Planet: По умолчанию.

7

Re: SAS.Planet GIS

Я тут связался с разработчиком утилиты которая кидает кэш из SASPlanet в sqllite (есть тема такая на форуме SASGIS).
Вроде сделает для нас...
вот только нужны небольшие файлы примеров баз (кэша maemo-mappera) для sqllite для разный репозитариев. Я сделал для yahoo sat и OSM, для google - ссылка не работает...

p/s утилита для windows

N800

8

Re: SAS.Planet GIS

Уже сделал. У меня работет. Возми в Файлах.

9

Re: SAS.Planet GIS

Anore пишет:

Утилитку конвертирования кэша SAS.Planet в формат Maemo-Mapperа закинул в Файлы вместе с исходниками что б было интересней.

Спасибо большое! smile


P.S. клево было бы еще маленький ридми внутрь архива засунуть

10

Re: SAS.Planet GIS

А что там в этом ридми должно быть? Что не понятно спрашивай не стесняйся В исхидниках от силы строк 20-30 моих. Остальное готовые библиотеки и скопипастные из инета куски. Коллективный разум есть и он работает.:) У кого есть нужда, перепишите на своем любимом языке под любимую операционку, добавте рюшачек, гуевый интерфейс и т.д. и т.п. Корявый стиль мне простителен, поскольку не технарь, а скорее гуманитарий. Кстати ,только что заметил, что у SAS.Planet не весь кэш в jpg формате, а я по невнимательности это не узрел. Предлогаю форумчанам решить этот и другие вопросы самим, а результаты представлять в этой ветке форума.

11

Re: SAS.Planet GIS

Если у кого-нибудь проснётся желание попрограммировать - не хватает не рюшечек, а одной полезной фичи - объединение кэшей с ББ и таблетки.

Был Nokia N800 + A-Data SDHC6 4Gb + Kingston SDHC6 8Gb + Nokia 5610 + USBHDD + Card Readers + Palm TT3 + Linksys WRT54G / OpenWRT + Megafon EDGE + BT GPS Holux M1000.

12

Re: SAS.Planet GIS

Dali пишет:

Если у кого-нибудь проснётся желание попрограммировать - не хватает не рюшечек, а одной полезной фичи - объединение кэшей с ББ и таблетки.

Вы абсолютно правы, с такой фичей утилита была бы полезна чаще. Поступим так. Будем заходить с другой стороны. Работаем под виндой. Качаем litex.zip - библиотеку функций доступа к SQLite. Лежит здесь: http://www.assembla.com/spaces/litex/documents
В архиве в папке 4_litex\litex\bin\ лежит sqlite3.dll. Эту библиотеку нужно зарегистрировать в системе: regsvr32 sqlite3.dll. Получилось? Едем дальше. Создаем файл с расширением *.hta следующего содержания:

<script language="JScript" type="text/javascript">

//Путь до кэша SAS.Planet. Обратить внимание на двойной символ "\\"
var SAS_folder_path="E:\\SASPlanet\\cache\\gumap";

// путь до базы MaemoMapperа. 
var MMBase_path="E:\\Work\\SQLite\\JS\\google.sqlite";

//Режим синхронизации 0 - только пополнение тайлов, 1 - пополнение с замещением существующих
var mode=0;

var fso = new ActiveXObject("Scripting.FileSystemObject");
var main_folder = fso.GetFolder(SAS_folder_path);
var DirS = String.fromCharCode(92);
var CntIns=0;
var CntUpd=0;
oConnection = new ActiveXObject("LiteX.LiteConnection");
oConnection.Path = MMBase_path;
oConnection.Open();
DirWithSubFolders(main_folder);
oConnection.Close();
if (mode==0) document.writeln("Тип синхнонизации - пополнение; ");
else 
  {
   document.writeln("Тип синхнонизации - замещение; ");
   document.writeln(" Заменено "+CntUpd+ " тайлов; ");
  }
   document.writeln(" Добавлено "+CntIns+ " тайлов; ");
 

//=================функции=============================
function get_blob(name) // преобразование файла в Steam
{
    var oStream = new ActiveXObject( "ADODB.Stream" );
    oStream.Type = 1; //adTypeBinary
    oStream.Open();
    oStream.LoadFromFile( name );
    return oStream.Read();
}

function DirWithSubFolders(_folder) // перебираем папки
{
    EnumerateFiles (_folder);
    var more_folders = new Enumerator(_folder.SubFolders);
    for (;!more_folders.atEnd();more_folders.moveNext())
    {
        OneFolder = more_folders.item();
        DirWithSubFolders (OneFolder);
    }
}


function EnumerateFiles(_folder) // по файлам
{
    var more_files = new Enumerator(_folder.Files);
    for (;!more_files.atEnd();more_files.moveNext())
    {
        one_file = more_files.item(); // полный путь до файла

          //===== распарсим строку, получая zoom, x, y======
          var z=""; 
          var pos=one_file.Path.indexOf(DirS+"z")+1;
          while (one_file.Path.charAt(pos+1)!=DirS)
           {
            pos++;
            z=z+one_file.Path.charAt(pos);
          }
           z=22-parseInt(z); // преобразование масштаба


          var x="";
          pos=one_file.Path.indexOf(DirS+"x")+1;
          while (one_file.Path.charAt(pos+1)!=DirS)
           {
            pos++;
            x=x+one_file.Path.charAt(pos);
          }

          var y="";
          pos=one_file.Path.indexOf(DirS+"y")+1;
          while (one_file.Path.charAt(pos+1)!=".")
           {
            pos++;
            y=y+one_file.Path.charAt(pos);
          }
         //==============================================
           oBlob = get_blob(one_file.Path); // получим Stream из файла

           // проверим есть ли такой тайл в базе
           oStatement = oConnection.Prepare( "SELECT * from maps WHERE zoom="+z+" AND tilex="+x+" AND tiley="+y );
           var Count=oStatement.RowCount;
           oStatement.Close();
           if (Count!=0) // если тайл уже есть 
            {
             if (mode==1) // если режим с заменой тайлов
               {
               oConnection.Execute("UPDATE maps SET pixbuf = ? WHERE zoom ="+z+" and tilex="+x+" and tiley="+y, oBlob);
               CntUpd++;
               }
            } 
            else // если такого тайла в базе нет
             {
         oConnection.Execute("INSERT INTO maps(zoom,tilex,tiley,pixbuf) VALUES(?,?,?,?)",z,x,y,oBlob);
         CntIns++;
         }
    }
}
</script>

Нужно только изменить переменные SAS_folder_path, MMBase_path, mode на свои и запустить.
Особенно интересно в одну базу вносить данные от разных источников в зависимости от масштаба.

13

Re: SAS.Planet GIS

Anore пишет:

Особенно интересно в одну базу вносить данные от разных источников в зависимости от масштаба.

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

Был Nokia N800 + A-Data SDHC6 4Gb + Kingston SDHC6 8Gb + Nokia 5610 + USBHDD + Card Readers + Palm TT3 + Linksys WRT54G / OpenWRT + Megafon EDGE + BT GPS Holux M1000.

14

Re: SAS.Planet GIS

Возможно, я не правильно понимаю терминологию. Как я понимаю тайл - это кусок карты определенного размера, который отображается прикладной программой при отображении участка местности в определенном масштабе. Я думал, что тайл, например в понятии ММ - это одна запись в базе т.е. кусок изображения, его координаты и масштаб, при котором его нужно отобразить. А как он может быть не докачен? Буду признателен за разъяснения.

15

Re: SAS.Planet GIS

Когда я смотрю какое-то место в каком-то масштабе, закачиваются тайлы. Если я в офлайне, отображаются тайлы из самого меньшего скешированного масштаба. Так на экране могут одновременно присутствовать тайлы из разных масштабов. И если они будут из разных источников, будут несовпадения (ломаные дороги, дома). Даже у одного источника на одном масштабе бывает соседние дома наклонены в разные стороны, выглядит смешно. Ладно хоть улицы состыкованы.

Был Nokia N800 + A-Data SDHC6 4Gb + Kingston SDHC6 8Gb + Nokia 5610 + USBHDD + Card Readers + Palm TT3 + Linksys WRT54G / OpenWRT + Megafon EDGE + BT GPS Holux M1000.

16

Re: SAS.Planet GIS

Вроде как не в тему вопрос.
А как в базе ММ посмотреть какие тайлы имеются?

Был бы у Чехова автомобиль, поворотник бы Чехов включал.
N810 (DIABLO_5.2008.43-7)

17

Re: SAS.Planet GIS

svs57 пишет:

Вроде как не в тему вопрос.
А как в базе ММ посмотреть какие тайлы имеются?

Посмотреть базу. SQL Spy или чем подобным на ББ.

N810 (5.2008.43-7) / Moto L9 + K3 + MB525(DEFY) / Toshiba Satellite L655

18

Re: SAS.Planet GIS

Да я не про то чем посмотреть, а про то что из базы фетчить?
Может есть что готовое, чтоб не изобретать велосипед

Был бы у Чехова автомобиль, поворотник бы Чехов включал.
N810 (DIABLO_5.2008.43-7)

19

Re: SAS.Planet GIS

кто-нибудь пользует Sas2mm ?   не получается сконвертить. создает пустой файл ххх.sqlite разиером 3072б.

20 Отредактировано Tonic (05-10-2009 14:36:34)

Re: SAS.Planet GIS

Я пользовал! Работает! Причем связался с автором по личке, он подредактировал программу для работы с типом GoogleTiles (есть и такой старый формат в СасПланет).
Файл размера 3072б получается если что-то не так задано...

p/s давно не пользовал данную прогу (только новую)... попробую еще раз, только проверить немогу, нет таблетки под рукой жене отдал.

pp/s только что запустил... (файл sqlite3.dll должен лежать рядом с исполняемым файлом)
РАБОТАЕТ!

Sas2mm.exe D:\SASPlanet\cache\SAT goggle.sqlite
N800

21

Re: SAS.Planet GIS

Сегодня попробовал - не работает. Видимо изменился формат кэша sas.planet. Есть еще способы закачать кэш в MM?

N800 OS2008 Diablo | Nokia 6233 | Acer ICONIA TAB W500

22

Re: SAS.Planet GIS

Есть. Девятью постами выше скрипт на JS. Сам аналогичным постоянно пользуюсь.

Nuri пишет:

Сегодня попробовал - не работает. Видимо изменился формат кэша sas.planet. Есть еще способы закачать кэш в MM?

23

Re: SAS.Planet GIS

Veska пишет:

Есть. Девятью постами выше скрипт на JS. Сам аналогичным постоянно пользуюсь.

Попробовал. При запуске выдает:
"Ошибка компиляции Microsoft JScript: Синтаксическая ошибка". Ругается на строку 1 и символ 1 smile

N800 OS2008 Diablo | Nokia 6233 | Acer ICONIA TAB W500

24

Re: SAS.Planet GIS

Nuri пишет:

Сегодня попробовал - не работает. Видимо изменился формат кэша sas.planet. Есть еще способы закачать кэш в MM?

Я использую свой скрипт на питоне: tiles_convert.py

Брать здесь: http://code.google.com/p/tilers-tools

25

Re: SAS.Planet GIS

Оказалось проще выкачать самим маппером smile Область небольшая, он справился.

N800 OS2008 Diablo | Nokia 6233 | Acer ICONIA TAB W500