View Issue Details

IDProjectCategoryView StatusLast Update
0001320SAS.ПланетаХотелка / Feature requestpublic10-10-2012 11:46
ReporterGarl Assigned ToGarl  
PrioritynormalSeverityminorReproducibilityhave not tried
Status closedResolutionfixed 
Product Version110418 
Target Version120808Fixed in Version120808 
Summary0001320: Хочется иметь полностью офлайновый поиск
DescriptionСобственно для этого нужно иметь базу с метками и координатами
Tagsпоиск
Attached Files
Image.png (32,768 bytes)   
Image.png (32,768 bytes)   

Relationships

related to 0001539 resolvedDima2000 Улучшение офлайн поиска по файлам *.mp 

Activities

vasketsov

01-06-2012 17:34

manager   ~0007278

Last edited: 01-06-2012 17:45

Или сохранять локально запросы и ответы на них.
Короче говоря, кэшировать поиск.
О чём уже давно писали большевики, ещё на заре поиска )))

Или имеется в виду поиск по меткам в программе?

gpsMax

02-06-2012 09:09

manager   ~0007281

Судя по всему, имеется в виду кэширование разных географических объектов. Очень круто, только слабо представляю, как это должно работать-то вообще. А уж с опережающим кэшированием совсем непонятно. Разве что базу осмопоиска выкачивать целиком.

vdemidov

04-06-2012 15:05

manager   ~0007313

Имеется тупой офлайновый поиск по какой-нибудь локальной базе, например, с названиями и координатами населенных пунктов. По примеру как это сделано в OziExplorer.

Garl

04-06-2012 15:14

manager   ~0007314

ну вариантов ровно несколько:
http://earth-info.nga.mil/gns/html/cntry_files.html
http://download.geonames.org/export/dump/

как вариант ещё искать в
*.mp полькие карты
*.wpt точки озика
*.kml треки и точки GoogkeEarth
*.gpx просто треки и точки

Garl

05-06-2012 17:58

manager   ~0007319

промежуточные итоги:
имею
userdata\mp\*.mp
4 .mp файла на 138 мeгабайт общего веса
поиск по слову "красная" (слово ходовое) выдал 151 результат (это уже после отброса совпадений)
но! поиск на ноуте длился 5 минут 25 секунд.

в то же время поиск по слову "спартак" выдал 10 результатов за 20 секунд

тут нужно ещё учитывать специфику польского формата в том что одна улица может быть нарисована разными линиями и соответственно на её фильтрацию тратится время...

нужен ли нам адресный поиск типа: село Кукуево улица Мира или "Кукуево Мира 15" ? или пока и так сойдёт ?

Garl

06-06-2012 14:33

manager   ~0007324

прилепил сегодня поиск по нескольким словам
и если по файлам 5-8 мб город улца дом ущутся на ура, то в файле весом 156мб оно ковыряется уже 15 минут ...
оно нам надо?
с другой стороны полной адресации типа город\улица\дом + координаты больше нигде не достать...

zed

06-06-2012 16:30

manager   ~0007325

Last edited: 06-06-2012 16:34

>в файле весом 156мб оно ковыряется уже 15 минут
Как вариант: заранее конвертиовать *.mp в SQLite и выполнять поиск уже средствами БД. Должно быть на порядок-два быстрее. А так, в лоб, да - медленно и малопригодно.

Т.е. делается некая отдельная утилита по конвертации различных форматов в единообразный SQLite, а в САСе уже прикручивается поиск по этой БД.

vdemidov

06-06-2012 18:24

manager   ~0007326

Не. 15 минут никуда не годится. Значит нужна предобработка данных.

Garl

06-06-2012 18:27

manager   ~0007327

Last edited: 06-06-2012 18:28

как вариант забить на адресный поиск и искать только
города\улицы\POI без подробностей и адресов тупо перебором в лоб.
тогда будет быстрее и предобработка будет не нужна.
з.ы. ждал 25 минут потом задачу снял...

zed

07-06-2012 08:16

manager   ~0007328

>тогда будет быстрее и предобработка будет не нужна.
Ага, вместо 25 минут будет 5. Да, быстрее, но проблемы-то это не решает. Любой поиск, занимающий больше пары секунд - мучение для юзера.

Имхо, смотри в сторону SQLite.

Garl

07-06-2012 08:19

manager   ~0007329

если делать "ленивый" поиск только по названию - он думаю уложится в секунды.
да что тут рассуждать. к вечеру переделаю и на живом примере проверю.

zed

07-06-2012 08:25

manager   ~0007330

>он думаю уложится в секунды
Это на тестовом размере данных. А если этих данных будет раза в 2 больше. Или в 4?

Garl

07-06-2012 08:29

manager   ~0007331

тогда надо делать "своё" offline-хранилище и импорт данных в него из произвольных форматов.
мне такое "скил" не позволяет реализовать :)
да и хочется как проще для юзера: накидал файлов - получил результат...

zed

07-06-2012 08:49

manager   ~0007332

>тогда надо делать "своё" offline-хранилище и импорт данных в него из произвольных форматов
Я понимаю, что задача может показаться неподъёмной, но смотри:
1. Делаешь конвертер *.mp -> SQLite (для начала можно ограничиться одним mp форматом, далее, по аналогии можно накидать сколь угодно много дополнительных)
2. делаешь геокодер в САСе по подобию существующих, который умеет искать в SQLite из п.1
3. тестируешь/доводишь конвертер до ума, добавляя все необходимые форматы и фичи
4. интегрируешь свой конвертер в САС. Т.е. где-то в интерфейме САСа добавляешь кнопочку "Импортировать POI" и вставляешь туда весь свой код, который раньше работал в конвертере. (Главное, чтобы у твоего конвертера наружу смотрел некий класс, которому на вход можно подавать тот или иной файл, а на выходе он отдаст БД, тогда интеграция его в САС должна пройти достаточно гладко.)

Таким образом, тебе нужно поднять свой "скил" до уровня "разобраться как работать с SQLite" - и пункты 1-3 ты реализуешь на ура.

Естественно, что это долгоиграющая хотелка и делается это не за один вечер.

zed

07-06-2012 08:58

manager   ~0007333

>да и хочется как проще для юзера: накидал файлов - получил результат...
Лучше один раз подождать, пока данные импортируются в БД, но получить быстрый поиск, чем получить "простой" импорт, но ловить лаги при каждом(!) поисковом запросе.

Garl

07-06-2012 09:05

manager   ~0007334

хранить такую базу где? ( всмысле путь )
нужен ли поиск страна\область\город\улица\дом ?
если есть полигон. как его лучше находить\отдавать ? полигоном или точкой?
и вообще очень много вопросов...
чистка базы?
улицы разбитые на много частей?

а как я захочу найти все улицы ленина по всей базе! так САС только выводить их в список будет минут несколько...

и вообще : что то мне оно сильно напоминает работу с метками.

Tolik

07-06-2012 12:59

manager   ~0007345

Ну а если сильно упростить - искать только город? Или (2) город+улицу? Сколько займёт времени и какого размера будет база?

Garl

07-06-2012 13:07

manager   ~0007347

база населённых пунктов по России http://download.geonames.org/export/dump/RU.zip
44Mb в распакованном виде
по ней будет искаться за секундУ, но там нет улиц. только города\посёлки и координаты.

zed

07-06-2012 13:27

manager   ~0007349

А если по всему миру? http://download.geonames.org/export/dump/allCountries.zip

Garl

07-06-2012 13:35

manager   ~0007350

работу с SQLite можно подсмотреть в u_ThreadExportIPhone.pas ?
или брать другую компоненту?

zed

07-06-2012 13:43

manager   ~0007351

Можно подсмотреть. Но я там делал практически на чистом API, из-за отсутствия поддержки blob полей во враппере. Т.е. можно ещё сильнее облегчить жизнь, используя класс TalSqlite3Client (см. демку в alcinoe\demo\ALSqlite3ClientDemo).

Garl

08-06-2012 16:20

manager   ~0007359

я всё ещё про старое:
3 файла общим весом 177 Мб
переделал по ленивому: тупо ищем совпадения в названии и всё!
если название редкое - ищется 5-7 секунд (даже на моём тормозе)
если название распространённое (красная) то:
ищется 50 секунд
а выводит результаты в окошко 2 минуты 30 секунд!!!

в таком виде внедряем?

Garl

08-06-2012 16:39

manager   ~0007360

если перед очисткой спрятать панельку, а после вывода в неё результатов - показать, то:
2 с половиной минуты ждать ненужно, но форматирование результатов по высоте в панельке пропадает насовсем :(

zed

08-06-2012 19:11

manager   ~0007362

Last edited: 08-06-2012 19:30

Сравни свои результаты с прожкой http://www.burekbrigada.com/geoknife.html
У меня она загружает файл RU.txt за 0,7 сек (при этом, файл в UTF-8), а слово Красный находит практически мгновенно (и выводит тысячу с лишним строчек с результатом).

Кстати, можешь попробовать постучаться к этому челу, может его заинтересует эта хотелка и поможет чем: "You can reach me via [email protected]. You can write in Russian, English or Serbian but I can reply only in English or Serbian."

Garl

09-06-2012 02:51

manager   ~0007363

так не сравнивай базу в .txt и базу в .mp
я поиск по RU.txt так же с результатом близким к geoknife забаццаю...(что там искать по тексту то)
Только это отдельный гео-кодер будет и там "эталонные" базы , а здесь пользовательские, в которых больше вкусностей...

Garl

09-06-2012 04:11

manager   ~0007365

вот щас приделал поиск по этой базе. без конвертации в UNICODE!!!
так вот слово красный ищется 10 секунд + 5 секунд на открытие файла.
но дождаться вывода 1155 результатов в окошко поиска я так и не смог!!!

может рубить на 50..100 ???

zed

09-06-2012 07:41

manager   ~0007367

Слишком тормозной поиск у тебя получается. С другой стороны, с файлом allCountries.zip (960Мб в распакованном виде) даже этот GeoKnife не справился - вылетел с out of memory, что как бы намекает.

Garl

09-06-2012 09:39

manager   ~0007369

залил к себе в репо.
если есть желание - можно протетстить и вынести вердикт.

Tolik

22-06-2012 18:41

manager   ~0007596

А чем кончилось-то? Ищет, что ли? А БД где взять?

Garl

22-06-2012 18:52

manager   ~0007597

http://sasgis.org/wikisasiya/doku.php/поиск_по_локальной_базе_geonames

Issue History

Date Modified Username Field Change
01-06-2012 12:22 Garl New Issue
01-06-2012 12:22 Garl Status new => assigned
01-06-2012 12:22 Garl Assigned To => Garl
01-06-2012 12:23 Garl Tag Attached: поиск
01-06-2012 17:34 vasketsov Note Added: 0007278
01-06-2012 17:45 vasketsov Note Edited: 0007278
02-06-2012 09:09 gpsMax Note Added: 0007281
04-06-2012 15:05 vdemidov Note Added: 0007313
04-06-2012 15:14 Garl Note Added: 0007314
05-06-2012 15:08 vdemidov Product Version .Nightly => 110418
05-06-2012 15:08 vdemidov Target Version => 41xxxx
05-06-2012 17:58 Garl Note Added: 0007319
06-06-2012 14:33 Garl Note Added: 0007324
06-06-2012 16:30 zed Note Added: 0007325
06-06-2012 16:34 zed Note Edited: 0007325
06-06-2012 18:24 vdemidov Note Added: 0007326
06-06-2012 18:27 Garl Note Added: 0007327
06-06-2012 18:28 Garl Note Edited: 0007327
07-06-2012 08:16 zed Note Added: 0007328
07-06-2012 08:19 Garl Note Added: 0007329
07-06-2012 08:25 zed Note Added: 0007330
07-06-2012 08:29 Garl Note Added: 0007331
07-06-2012 08:49 zed Note Added: 0007332
07-06-2012 08:58 zed Note Added: 0007333
07-06-2012 09:05 Garl Note Added: 0007334
07-06-2012 12:59 Tolik Note Added: 0007345
07-06-2012 13:07 Garl Note Added: 0007347
07-06-2012 13:27 zed Note Added: 0007349
07-06-2012 13:35 Garl Note Added: 0007350
07-06-2012 13:43 zed Note Added: 0007351
08-06-2012 16:20 Garl Note Added: 0007359
08-06-2012 16:39 Garl Note Added: 0007360
08-06-2012 19:11 zed Note Added: 0007362
08-06-2012 19:12 zed File Added: Image.png
08-06-2012 19:30 zed Note Edited: 0007362
09-06-2012 02:51 Garl Note Added: 0007363
09-06-2012 04:11 Garl Note Added: 0007365
09-06-2012 07:41 zed Note Added: 0007367
09-06-2012 09:39 Garl Note Added: 0007369
22-06-2012 15:22 vdemidov Status assigned => resolved
22-06-2012 15:22 vdemidov Fixed in Version => 120808
22-06-2012 15:22 vdemidov Resolution open => fixed
22-06-2012 15:22 vdemidov Target Version 41xxxx => 120808
22-06-2012 18:41 Tolik Note Added: 0007596
22-06-2012 18:52 Garl Note Added: 0007597
03-09-2012 16:18 Dima2000 Relationship added related to 0001539
10-10-2012 11:46 Tolik Status resolved => closed
08-08-2025 13:24 zed Category Хотелка => Хотелка / Feature request