SASGIS - SAS.Планета
View Issue Details
0002124SAS.ПланетаРефакторингpublic28-08-2013 19:5415-08-2019 15:29
zed 
zed 
normalminorN/A
resolvedfixed 
131111 
160606160606 
0002124: Переделать прямое (direct) чтение из кэша GeoCacher-а
Ввиду появления libge.dll и переделки чтения тайлов из кэша GoogleEarth, нужно сделать аналогичную модернизацию и для кэша GeoCacher-а.
google earth, VIP
related to 0001871resolved zed Добавить возможность прямого чтения кэша GoogleEarth 7.xx (включая исторические снимки) 
related to 0002539resolved zed Вылет программы или окошко с ошибкой при выборе версии кеша GC 
child of 0002538resolved zed При наличии в кеше GC подпапки "Others" перестает работать чтение этого кеша планетой. 
Issue History
28-08-2013 19:54zedNew Issue
28-08-2013 19:54zedStatusnew => assigned
28-08-2013 19:54zedAssigned To => zed
28-08-2013 20:12zedRelationship addedrelated to 0001871
29-08-2013 12:58PapazolNote Added: 0012669
31-08-2013 06:13zedNote Added: 0012706
31-08-2013 07:13vasketsovNote Added: 0012709
31-08-2013 07:45zedNote Added: 0012710
31-08-2013 08:10vasketsovNote Added: 0012711
31-08-2013 08:25zedNote Added: 0012712
31-08-2013 08:44vasketsovNote Added: 0012713
31-08-2013 08:47zedNote Added: 0012714
31-08-2013 08:48zedNote Edited: 0012714bug_revision_view_page.php?bugnote_id=12714#r5689
31-08-2013 09:25vasketsovNote Added: 0012715
31-08-2013 09:40zedNote Added: 0012716
31-08-2013 10:09vasketsovNote Added: 0012717
31-08-2013 12:50vasketsovNote Added: 0012724
04-11-2013 13:56vdemidovTarget Version131111 => 24xxxx
22-11-2013 22:33vdemidovProduct Version.Nightly => 131111
11-11-2014 19:43zedRelationship addedchild of 0002538
11-11-2014 19:44zedTarget Version24xxxx => 150915
11-11-2014 19:45zedRelationship addedchild of 0002539
21-01-2015 10:39vdemidovTarget Version150915 => 151010
02-02-2015 08:46vdemidovRelationship replacedrelated to 0002539
04-10-2015 15:30vdemidovTarget Version151010 => 151111
06-11-2015 08:20vdemidovTarget Version151111 => 191221
16-03-2016 10:10zedTag Attached: google earth
16-03-2016 10:10zedTag Attached: VIP
16-03-2016 10:11zedNote Added: 0017081
21-04-2016 18:52zedStatusassigned => resolved
21-04-2016 18:52zedFixed in Version => 160606
21-04-2016 18:52zedResolutionopen => fixed
21-04-2016 18:52zedTarget Version191221 => 160606

Notes
(0012669)
Papazol   
29-08-2013 12:58   
А локал версия 7-го GE будет?
(0012706)
zed   
31-08-2013 06:13   
А зачем оффтопить? Всё что касается GE.local спрашивайте вот >>тут<<
(0012709)
vasketsov   
31-08-2013 07:13   
Может проще будет тайлохранилище геокэшера сразу загнать в один из напрямую поддерживаемых кэшей саса?
Тогда и либа не нужна будет совсем.
Требование к хранилищу - параллельная запись из одного приложения, чтение из других, тот же беркли же должен справиться. А вообще при соблюдении интерфейса и SQLite подойдёт и любая СУБД тоже.
(0012710)
zed   
31-08-2013 07:45   
>Тогда и либа не нужна будет совсем.
Ну а собственно GeoCacher как сможет писать в эти хранилища? Либу писать всё-равно нужно, а вот уже потом можно будет подключить её и к SAS и к кэшеру.

Поэтому для начала, я сделаю тайловый кэш (только для чтения), подключу его к SAS, а потом буду смотреть, как это вкорячить в кэшер в режиме RW (ещё же надо учесть, что там кроме картинок да рельефа, есть кучка специфических типов данных).
(0012711)
vasketsov   
31-08-2013 08:10   
>GeoCacher как сможет писать в эти хранилища?
Точно также как сас сейчас - через интерфейс тайлохранилища.
Или там сасового API не хватит?

>есть кучка специфических типов данных
Так вроде же Tilestorage-у же пофигу, что хранить, лишь бы запросы в него шли с одинаковым ContentType-ом (можно даже бредовым)? Понаделать базок под каждый "специфический тип данных" (в смысле, под каждый разный запрос, одну под terrain, одну под историю,...) и в каждой базке версией рулить.

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

Ты ж как-то сам уже приходил к выводу, что кэш CG не оптимален с точки зрения хранения гигабайтов данных. Вот я и предлагаю оперативное вмешательство в неоптимальное место, а не в то, что работает с неоптимальным местом.
(0012712)
zed   
31-08-2013 08:25   
>Или там сасового API не хватит?
У САС-а нету публичного API для тайлохранилищ. Поэтому нужна либа с этим API, которую я уже смогу юзать в GC.
(0012713)
vasketsov   
31-08-2013 08:44   
>нету публичного API
Я про ITileStorage сотоварищи.
Разве нельзя их напрямую залинковать в GC, как это делается в сасе? Ну может с микродопиливаниями?
(0012714)
zed   
31-08-2013 08:47   
(edited on: 31-08-2013 08:48)
>Я про ITileStorage сотоварищи.
Я понимаю. А ты смотрел, сколько ещё сопутствующих интерфейсов оно за собой тянет? Там половину САС-а нужно прилинковать. Причём, САС-овские интерфейсы могут юзать и строки и всё что хочешь. И никаких safecall вызовов по большому счёту.

(0012715)
vasketsov   
31-08-2013 09:25   
>смотрел, сколько ещё сопутствующих интерфейсов оно за собой тянет?
Разумеется.
В проекте sas_to_gme именно это и делается )))
Только там ещё и zmp и maptype и рисовалка линкуются - суммарный размер DLL 2 мега. У тебя с хранилищем будет скорее всего сильно меньше 1 мегабайта довесок. Причём сами интерфейсы сильно много же не жрут, если реализация не залинкуется.

>никаких safecall вызовов
Разумеется.
(0012716)
zed   
31-08-2013 09:40   
>В проекте sas_to_gme именно это и делается
Ну так с MapEdit-ом ты общаешься по его API, а внутри dll ты просто имеешь урезанную копию САС. И ты предлагаешь мне точно так же встроить в GC урезанный САС, чтобы была возможность юзать его хранилища? Что-то не нравится мне эта идея.
(0012717)
vasketsov   
31-08-2013 10:09   
>внутри dll ты просто имеешь урезанную копию САС
Так точно.

А почему идея не нравится?
1. Новое хранилище - пересборка GC и всё.
2. Либа не нужна, так как сас и GC живут в одном хранилище.
3. Любые хранилища доступны, включая СУБД, где работают быстрые операции по диапазону xy.
...

Если сравнивать задачу написания нового хранилища и либы для саса, и замены интерфейса ФС для GC на интерфейс саса - я бы заведомо выбрал второе. По умолчанию даже можно обычный файлокэш держать, и работать вообще не отсвечивая хвостами саса наружу. Ну а коли есть ini и карты (буквально - если GC сложили в папку саса - значит все настройки всех хранилищ доступны как есть, даже terrain-ы) - настроить в GC, что куда падает. Ну или иначе сделать (тоже просто сасову ini-шку надо будет подсунуть), детали тут несущественны. Важно что делается это один раз, и работает с любым версионным кэшем. В том числе и будущими реализациями. За всё время существования dll, там один раз была существенная правка из-за того что рисовалку пописали, остальное - только в свойства проекта добавляю новые подпапки. Если бы столько же жил сас в GC - пришлось бы только подпапку добавить в свойства проекта с новым типом кэша и пересобрать.
(0012724)
vasketsov   
31-08-2013 12:50   
Там только будет одна загвоздка: я когда давным-давно начинал это, сделал под проверкой, что мы внутри DLL. Дурень был. По уму надо заменить это условной компиляцией (одна лишь робкая попытка - это vsasas rev. 715). Это я про GlobalState.pas.
(0017081)
zed   
16-03-2016 10:11   
Переделал. Все подробности тут: http://www.sasgis.org/forum/viewtopic.php?f=61&t=2824&start=10#p42270

Всех заинтересованных приглашаю к тестированию.