View Issue Details

IDProjectCategoryView StatusLast Update
0002124SAS.ПланетаРефакторинг / Refactoringpublic15-08-2019 15:29
Reporterzed Assigned Tozed  
PrioritynormalSeverityminorReproducibilityN/A
Status resolvedResolutionfixed 
Product Version131111 
Target Version160606Fixed in Version160606 
Summary0002124: Переделать прямое (direct) чтение из кэша GeoCacher-а
DescriptionВвиду появления libge.dll и переделки чтения тайлов из кэша GoogleEarth, нужно сделать аналогичную модернизацию и для кэша GeoCacher-а.
Tagsgoogle earth, VIP

Relationships

related to 0001871 resolvedzed Добавить возможность прямого чтения кэша GoogleEarth 7.xx (включая исторические снимки) 
related to 0002539 resolvedzed Вылет программы или окошко с ошибкой при выборе версии кеша GC 
child of 0002538 resolvedzed При наличии в кеше GC подпапки "Others" перестает работать чтение этого кеша планетой. 

Activities

Papazol

29-08-2013 12:58

reporter   ~0012669

А локал версия 7-го GE будет?

zed

31-08-2013 06:13

manager   ~0012706

А зачем оффтопить? Всё что касается GE.local спрашивайте вот >>тут<<

vasketsov

31-08-2013 07:13

manager   ~0012709

Может проще будет тайлохранилище геокэшера сразу загнать в один из напрямую поддерживаемых кэшей саса?
Тогда и либа не нужна будет совсем.
Требование к хранилищу - параллельная запись из одного приложения, чтение из других, тот же беркли же должен справиться. А вообще при соблюдении интерфейса и SQLite подойдёт и любая СУБД тоже.

zed

31-08-2013 07:45

manager   ~0012710

>Тогда и либа не нужна будет совсем.
Ну а собственно GeoCacher как сможет писать в эти хранилища? Либу писать всё-равно нужно, а вот уже потом можно будет подключить её и к SAS и к кэшеру.

Поэтому для начала, я сделаю тайловый кэш (только для чтения), подключу его к SAS, а потом буду смотреть, как это вкорячить в кэшер в режиме RW (ещё же надо учесть, что там кроме картинок да рельефа, есть кучка специфических типов данных).

vasketsov

31-08-2013 08:10

manager   ~0012711

>GeoCacher как сможет писать в эти хранилища?
Точно также как сас сейчас - через интерфейс тайлохранилища.
Или там сасового API не хватит?

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

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

Ты ж как-то сам уже приходил к выводу, что кэш CG не оптимален с точки зрения хранения гигабайтов данных. Вот я и предлагаю оперативное вмешательство в неоптимальное место, а не в то, что работает с неоптимальным местом.

zed

31-08-2013 08:25

manager   ~0012712

>Или там сасового API не хватит?
У САС-а нету публичного API для тайлохранилищ. Поэтому нужна либа с этим API, которую я уже смогу юзать в GC.

vasketsov

31-08-2013 08:44

manager   ~0012713

>нету публичного API
Я про ITileStorage сотоварищи.
Разве нельзя их напрямую залинковать в GC, как это делается в сасе? Ну может с микродопиливаниями?

zed

31-08-2013 08:47

manager   ~0012714

Last edited: 31-08-2013 08:48

>Я про ITileStorage сотоварищи.
Я понимаю. А ты смотрел, сколько ещё сопутствующих интерфейсов оно за собой тянет? Там половину САС-а нужно прилинковать. Причём, САС-овские интерфейсы могут юзать и строки и всё что хочешь. И никаких safecall вызовов по большому счёту.

vasketsov

31-08-2013 09:25

manager   ~0012715

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

>никаких safecall вызовов
Разумеется.

zed

31-08-2013 09:40

manager   ~0012716

>В проекте sas_to_gme именно это и делается
Ну так с MapEdit-ом ты общаешься по его API, а внутри dll ты просто имеешь урезанную копию САС. И ты предлагаешь мне точно так же встроить в GC урезанный САС, чтобы была возможность юзать его хранилища? Что-то не нравится мне эта идея.

vasketsov

31-08-2013 10:09

manager   ~0012717

>внутри dll ты просто имеешь урезанную копию САС
Так точно.

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

Если сравнивать задачу написания нового хранилища и либы для саса, и замены интерфейса ФС для GC на интерфейс саса - я бы заведомо выбрал второе. По умолчанию даже можно обычный файлокэш держать, и работать вообще не отсвечивая хвостами саса наружу. Ну а коли есть ini и карты (буквально - если GC сложили в папку саса - значит все настройки всех хранилищ доступны как есть, даже terrain-ы) - настроить в GC, что куда падает. Ну или иначе сделать (тоже просто сасову ini-шку надо будет подсунуть), детали тут несущественны. Важно что делается это один раз, и работает с любым версионным кэшем. В том числе и будущими реализациями. За всё время существования dll, там один раз была существенная правка из-за того что рисовалку пописали, остальное - только в свойства проекта добавляю новые подпапки. Если бы столько же жил сас в GC - пришлось бы только подпапку добавить в свойства проекта с новым типом кэша и пересобрать.

vasketsov

31-08-2013 12:50

manager   ~0012724

Там только будет одна загвоздка: я когда давным-давно начинал это, сделал под проверкой, что мы внутри DLL. Дурень был. По уму надо заменить это условной компиляцией (одна лишь робкая попытка - это vsasas rev. 715). Это я про GlobalState.pas.

zed

16-03-2016 10:11

manager   ~0017081

Переделал. Все подробности тут: http://www.sasgis.org/forum/viewtopic.php?f=61&t=2824&start=10#p42270

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

Issue History

Date Modified Username Field Change
28-08-2013 19:54 zed New Issue
28-08-2013 19:54 zed Status new => assigned
28-08-2013 19:54 zed Assigned To => zed
28-08-2013 20:12 zed Relationship added related to 0001871
29-08-2013 12:58 Papazol Note Added: 0012669
31-08-2013 06:13 zed Note Added: 0012706
31-08-2013 07:13 vasketsov Note Added: 0012709
31-08-2013 07:45 zed Note Added: 0012710
31-08-2013 08:10 vasketsov Note Added: 0012711
31-08-2013 08:25 zed Note Added: 0012712
31-08-2013 08:44 vasketsov Note Added: 0012713
31-08-2013 08:47 zed Note Added: 0012714
31-08-2013 08:48 zed Note Edited: 0012714
31-08-2013 09:25 vasketsov Note Added: 0012715
31-08-2013 09:40 zed Note Added: 0012716
31-08-2013 10:09 vasketsov Note Added: 0012717
31-08-2013 12:50 vasketsov Note Added: 0012724
04-11-2013 13:56 vdemidov Target Version 131111 => 41xxxx
22-11-2013 22:33 vdemidov Product Version .Nightly => 131111
11-11-2014 19:43 zed Relationship added child of 0002538
11-11-2014 19:44 zed Target Version 41xxxx => 150915
11-11-2014 19:45 zed Relationship added child of 0002539
21-01-2015 10:39 vdemidov Target Version 150915 => 151010
02-02-2015 08:46 vdemidov Relationship replaced related to 0002539
04-10-2015 15:30 vdemidov Target Version 151010 => 151111
06-11-2015 08:20 vdemidov Target Version 151111 => 191221
16-03-2016 10:10 zed Tag Attached: google earth
16-03-2016 10:10 zed Tag Attached: VIP
16-03-2016 10:11 zed Note Added: 0017081
21-04-2016 18:52 zed Status assigned => resolved
21-04-2016 18:52 zed Fixed in Version => 160606
21-04-2016 18:52 zed Resolution open => fixed
21-04-2016 18:52 zed Target Version 191221 => 160606
08-08-2025 13:25 zed Category Рефакторинг => Рефакторинг / Refactoring