SASGIS

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

Чего вы хотите?

программа для загрузки и просмотра спутниковых снимков Земли, Луны, Марса предоставленных сервисами Google Maps и Космоснимки. Возможность работы с GPS приёмником.

Модератор: Tolik

Re: Чего вы хотите?

Сообщение feya » 05 янв 2010, 23:27

Papazol
Треки автоматом пишутся в папку TrackLog
AdBlock
Да надо сделать чтоб клеила то что отображается на экране, но это не совсем просто в плане скорости склейки, и другие есть проблемы. Когданить надеюсь будет.
Jenner
Такое предложение как то уже звучало, может быть и сделаем такое.
shturm

Нет. Разве что работать в режиме интернет и поставить в zmp удаление тайлов после отображения, как у пробок.
samsomus

Нет, пока нельзя.
http://sasgis.org | SAS.Планета | SASPlanet
Аватара пользователя
feya
Гуру
 
Сообщения: 2034
Зарегистрирован: 13 июл 2008, 10:45
Благодарил (а): 5 раз.
Поблагодарили: 56 раз.

Re: Чего вы хотите?

Сообщение Papazol » 06 янв 2010, 02:27

feya писал(а):Papazol
Треки автоматом пишутся в папку TrackLog


Спасибо, обнаружил. А вот как отобразить сохранённый трек? И по какому принципу программа начинает и заканчивает запись трека? Дело в том, что у меня за одну поездку записалось три трека. Программа работала непрерывно, компьютер, разумеется, не выключался.
Аватара пользователя
Papazol
Гуру
 
Сообщения: 2069
Зарегистрирован: 04 дек 2009, 01:39
Откуда: Рязань
Благодарил (а): 74 раз.
Поблагодарили: 647 раз.

Re: Чего вы хотите?

Сообщение DDoc » 06 янв 2010, 13:40

Очень хочется иметь возможность подключать свои внешние модули к SAS.Планета. Зачем это всё нужно. А это нужно чтобы:
1. Это позволит на лету подключать поддержку новых видов кэша. Например, Базу Беркли.
2. Это позволит создавать виртуальные карты. Например, можно будет создать карту, источником которой будет кэш из нескольких карт. Компиляция карт на лету, заполнение дыр одной карты из другой.
3. Легко можно будет реализовать конвертацию кэша карты на лету из одной проекции в другую
4. Можно будет на лету корректировать геометрические искажения кэша

Для этого нужно добавить каталог MODULE для внешних DLL. При старте SAS.Планета следует просматривать этот каталог и все DLL файлы пытаться подключить. Все подключенные DLL нужно будет отсортировать по алфавиту, и имена используемых DLL использовать как дополнительные форматы кэша.

У DLL требуется поддержка функций:

int __stdcall Format(void);
Возвращает формат кэша по умолчанию:
0-"raw", 1-"jpeg", 2-"png", 3-"gif"

bool __stdcall Read(int Scale, int X, int Y, char **Image, int *ImageSize, int *Format);
Эта функция читает файл из кэша и передаёт его в SAS.Планета.
Функция возвращает указатель на тайл в памяти в переменной Image.
В переменной ImageSize возвращается размер тайла в байтах
В переменной Format возвращается формат файла: 0-"raw", 1-"jpeg", 2-"png", 3-"gif"
"raw" обозначает сохранение тайла как битмап в памяти - char[256][256][3]
Функция возвращает TRUE, если произошла ошибка при загрузке.
SAS следует самостоятельно удалить блок памяти в Image, когда он будет обработан

bool __stdcall Write(int Scale, int X, int Y, char *Image, int ImageSize);
Эта функция сохраняет тайл в кэш. Тайл должен быть в формате, указанном в функции Format.
Функция возвращает TRUE, если произошла ошибка при сохранении.
DDoc
Новичок
 
Сообщения: 4
Зарегистрирован: 06 янв 2010, 12:01
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: Чего вы хотите?

Сообщение vdemidov » 06 янв 2010, 14:08

DDoc писал(а):Очень хочется иметь возможность подключать свои внешние модули к SAS.Планета. Зачем это всё нужно. А это нужно чтобы:
1. Это позволит на лету подключать поддержку новых видов кэша. Например, Базу Беркли.
2. Это позволит создавать виртуальные карты. Например, можно будет создать карту, источником которой будет кэш из нескольких карт. Компиляция карт на лету, заполнение дыр одной карты из другой.
3. Легко можно будет реализовать конвертацию кэша карты на лету из одной проекции в другую
4. Можно будет на лету корректировать геометрические искажения кэша

А еще можно будет "грабить корованы".
Я уже пол года ковыряю код, что бы можно было добавить поддержку внешних модулей. И конец этого ковыряния хоть уже и виден, но все еще далеко.
Чтобы понять программу, вы должны стать одновременно и машиной, и программой.
Аватара пользователя
vdemidov
Гуру
 
Сообщения: 1687
Зарегистрирован: 12 дек 2008, 13:10
Откуда: Киев
Благодарил (а): 191 раз.
Поблагодарили: 157 раз.

Re: Чего вы хотите?

Сообщение DDoc » 06 янв 2010, 14:29

vdemidov писал(а):Я уже пол года ковыряю код, что бы можно было добавить поддержку внешних модулей. И конец этого ковыряния хоть уже и виден, но все еще далеко.

А не надо пытаться сделать универсальный внешний модуль для всего на свете. Как бы ни было написан код SAS.Планета, всё равно должна быть одна функция для загрузки битмапа тайла из файла. В неё и нужно подключиться. В принципе работы на день максимум. Сложность только с переделкой интерфейса, где будет выбираться какой модуль какой тип кэша обозначает.

P.S. Также просто решается проблема с модулями отвечающим за загрузку из интернета. Но это уже другая история.
DDoc
Новичок
 
Сообщения: 4
Зарегистрирован: 06 янв 2010, 12:01
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: Чего вы хотите?

Сообщение vdemidov » 06 янв 2010, 14:39

DDoc писал(а): Как бы ни было написан код SAS.Планета, всё равно должна быть одна функция для загрузки битмапа тайла. В неё и нужно подключиться. В принципе работы на день максимум. Сложность только с переделкой интерфейса, где будет выбираться какой модуль какой тип кэша обозначает.

Да что вы говорите? Когда я начал ковырять, была функция, которая выдавала имя файла по координатам и каждый кусок кода это имя файла пользовал как хотел. И куда здесь вставлять вашу длл?
Но даже сейчас, есть некоторые функции SAS.Планеты, которые жестко завязаны на имена файлов и что прикажете с ними делать? Просто избавиться от них?
А вы вообще когда-нибудь разрабатывали Plugin-API? Думаете все так просто? Даже в том примере с тремя функциями, что вы привели, уже есть ошибка. Кто будет выделять память для операции Read? Если внешняя программа, то как она размер узнает, если dll, то кто и как будет освобождать?
Чтобы понять программу, вы должны стать одновременно и машиной, и программой.
Аватара пользователя
vdemidov
Гуру
 
Сообщения: 1687
Зарегистрирован: 12 дек 2008, 13:10
Откуда: Киев
Благодарил (а): 191 раз.
Поблагодарили: 157 раз.

Re: Чего вы хотите?

Сообщение DDoc » 06 янв 2010, 15:12

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

Если всё так мутно и переделывать лень, то достаточно сделать вставку в функцию выдающую имя файла по координатам. В эту функцию вставить запрос к внешней DLL имени файла. DLL придётся генерить файл и давать на него линк. Не слишком элегантное решение. И ещё, хорошо бы посылать сигнал DLL что этот файл уже не нужен. Это легко привязать к функции Close файла.

vdemidov писал(а):Но даже сейчас, есть некоторые функции SAS.Планеты, которые жестко завязаны на имена файлов и что прикажете с ними делать? Просто избавиться от них?

Ну почему-же. Достаточно связку "XY->имя файла"+"открытие файла"+"чтение файла" заменить на единую функцию. Но это в идеале.

vdemidov писал(а):А вы вообще когда-нибудь разрабатывали Plugin-API?

Да

vdemidov писал(а):Думаете все так просто?

Да

Просто чтобы понятно было, SAS.Warp я сделал с нуля за неделю.
http://forum.ru-board.com/topic.cgi?for ... &start=920

vdemidov писал(а):Даже в том примере с тремя функциями, что вы привели, уже есть ошибка. Кто будет выделять память для операции Read? Если внешняя программа, то как она размер узнает, если dll, то кто и как будет освобождать?

Никакой ошибки. Я в тексте сразу указал, что функция возвращает указатель на тайл. Из текста думал понятно, что память для тайла выделяет DLL.
Далее, "SAS следует самостоятельно удалить блок памяти в Image, когда он будет обработан". То есть SAS.Планета должна удалить блок, когда он будет не нужен.
DDoc
Новичок
 
Сообщения: 4
Зарегистрирован: 06 янв 2010, 12:01
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: Чего вы хотите?

Сообщение zed » 06 янв 2010, 15:15

А не надо пытаться сделать универсальный внешний модуль для всего на свете.

+1.
В SAS, на первое время, достаточно сделать поддержку единственного плагина чтения из кэша (который уже сможет сам и загружать из инета и сохранять в кэш в своём формате). Главное, чтоб сам SAS не пытался потом сохранять это изображение в кэш или при его отсутствии тянуть из инета.
zed
Гуру
 
Сообщения: 2888
Зарегистрирован: 16 авг 2008, 20:21
Благодарил (а): 89 раз.
Поблагодарили: 568 раз.

Re: Чего вы хотите?

Сообщение vdemidov » 06 янв 2010, 15:23

DDoc писал(а):Никакой ошибки. Я в тексте сразу указал, что функция возвращает указатель на тайл. Из текста думал понятно, что память для тайла выделяет DLL.
Далее, "SAS следует самостоятельно удалить блок памяти в Image, когда он будет обработан". То есть SAS.Планета должна удалить блок, когда он будет не нужен.

Ну теперь точно все ясно. Вы даже DLL никогда не писали, не то что PluginAPI не разрабатывали :))) Не может программа освободить память которую выделила DLL. Точнее может но для этого dll должна предоставить соответсвтующую функцию, а в вашем описании ее и близко нет.

Дальше. С именами файлов. Вы предсатвляете как станет вести себя программа при построениии карты заполнения тайлами? Или при экспорте в kml, когда генерится kml с вставленными ссылками на картинки? И таких мест еще дофига.

PS: Если вы все такие умные, то попросите Feya пусть даст вам доступ к репозиторию и помогите сделать. Но потом все глюки разргребать будете сами.
Чтобы понять программу, вы должны стать одновременно и машиной, и программой.
Аватара пользователя
vdemidov
Гуру
 
Сообщения: 1687
Зарегистрирован: 12 дек 2008, 13:10
Откуда: Киев
Благодарил (а): 191 раз.
Поблагодарили: 157 раз.

Re: Чего вы хотите?

Сообщение DDoc » 06 янв 2010, 16:00

vdemidov писал(а):Ну теперь точно все ясно. Вы даже DLL никогда не писали, не то что PluginAPI не разрабатывали :))) Не может программа освободить память которую выделила DLL. Точнее может но для этого dll должна предоставить соответсвтующую функцию, а в вашем описании ее и близко нет.

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

vdemidov писал(а):Дальше. С именами файлов. Вы предсатвляете как станет вести себя программа при построениии карты заполнения тайлами?

Ну очень долго.

vdemidov писал(а):Или при экспорте в kml, когда генерится kml с вставленными ссылками на картинки? И таких мест еще дофига.

Дык, в чём проблема. Включилась DLL, все сложные места просто отрубаем. Наставить if/return с проверкой булевой переменной во все эти места и проблема решена.
Либо всегда можно вместе с kml положить копии всех файлов тайлов, куда он ссылается.

vdemidov писал(а):PS: Если вы все такие умные, то попросите Feya пусть даст вам доступ к репозиторию и помогите сделать. Но потом все глюки разргребать будете сами.

Понял. Перспектива добавления плагинов поддерживающих разные форматы кэша крайне туманна.
DDoc
Новичок
 
Сообщения: 4
Зарегистрирован: 06 янв 2010, 12:01
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Пред.След.

Вернуться в SAS.Планета

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

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