SASGIS - SAS.Планета
View Issue Details
0001320SAS.Планета[All Projects] Хотелкаpublic01-06-2012 12:2210-10-2012 11:46
Garl 
Garl 
normalminorhave not tried
closedfixed 
110418 
120808120808 
0001320: Хочется иметь полностью офлайновый поиск
Собственно для этого нужно иметь базу с метками и координатами
поиск
related to 0001539resolved Dima2000 Улучшение офлайн поиска по файлам *.mp 
png Image.png (32,768) 08-06-2012 19:12
http://bugtracker.sasgis.org/file_download.php?file_id=843&type=bug
png
Issue History
01-06-2012 12:22GarlNew Issue
01-06-2012 12:22GarlStatusnew => assigned
01-06-2012 12:22GarlAssigned To => Garl
01-06-2012 12:23GarlTag Attached: поиск
01-06-2012 17:34vasketsovNote Added: 0007278
01-06-2012 17:45vasketsovNote Edited: 0007278bug_revision_view_page.php?bugnote_id=7278#r3612
02-06-2012 09:09gpsMaxNote Added: 0007281
04-06-2012 15:05vdemidovNote Added: 0007313
04-06-2012 15:14GarlNote Added: 0007314
05-06-2012 15:08vdemidovProduct Version.Nightly => 110418
05-06-2012 15:08vdemidovTarget Version => 24xxxx
05-06-2012 17:58GarlNote Added: 0007319
06-06-2012 14:33GarlNote Added: 0007324
06-06-2012 16:30zedNote Added: 0007325
06-06-2012 16:34zedNote Edited: 0007325bug_revision_view_page.php?bugnote_id=7325#r3643
06-06-2012 18:24vdemidovNote Added: 0007326
06-06-2012 18:27GarlNote Added: 0007327
06-06-2012 18:28GarlNote Edited: 0007327bug_revision_view_page.php?bugnote_id=7327#r3645
07-06-2012 08:16zedNote Added: 0007328
07-06-2012 08:19GarlNote Added: 0007329
07-06-2012 08:25zedNote Added: 0007330
07-06-2012 08:29GarlNote Added: 0007331
07-06-2012 08:49zedNote Added: 0007332
07-06-2012 08:58zedNote Added: 0007333
07-06-2012 09:05GarlNote Added: 0007334
07-06-2012 12:59TolikNote Added: 0007345
07-06-2012 13:07GarlNote Added: 0007347
07-06-2012 13:27zedNote Added: 0007349
07-06-2012 13:35GarlNote Added: 0007350
07-06-2012 13:43zedNote Added: 0007351
08-06-2012 16:20GarlNote Added: 0007359
08-06-2012 16:39GarlNote Added: 0007360
08-06-2012 19:11zedNote Added: 0007362
08-06-2012 19:12zedFile Added: Image.png
08-06-2012 19:30zedNote Edited: 0007362bug_revision_view_page.php?bugnote_id=7362#r3653
09-06-2012 02:51GarlNote Added: 0007363
09-06-2012 04:11GarlNote Added: 0007365
09-06-2012 07:41zedNote Added: 0007367
09-06-2012 09:39GarlNote Added: 0007369
22-06-2012 15:22vdemidovStatusassigned => resolved
22-06-2012 15:22vdemidovFixed in Version => 120808
22-06-2012 15:22vdemidovResolutionopen => fixed
22-06-2012 15:22vdemidovTarget Version24xxxx => 120808
22-06-2012 18:41TolikNote Added: 0007596
22-06-2012 18:52GarlNote Added: 0007597
03-09-2012 16:18Dima2000Relationship addedrelated to 0001539
10-10-2012 11:46TolikStatusresolved => closed

Notes
(0007278)
vasketsov   
01-06-2012 17:34   
(edited on: 01-06-2012 17:45)
Или сохранять локально запросы и ответы на них.
Короче говоря, кэшировать поиск.
О чём уже давно писали большевики, ещё на заре поиска )))

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

(0007281)
gpsMax   
02-06-2012 09:09   
Судя по всему, имеется в виду кэширование разных географических объектов. Очень круто, только слабо представляю, как это должно работать-то вообще. А уж с опережающим кэшированием совсем непонятно. Разве что базу осмопоиска выкачивать целиком.
(0007313)
vdemidov   
04-06-2012 15:05   
Имеется тупой офлайновый поиск по какой-нибудь локальной базе, например, с названиями и координатами населенных пунктов. По примеру как это сделано в OziExplorer.
(0007314)
Garl   
04-06-2012 15:14   
ну вариантов ровно несколько:
http://earth-info.nga.mil/gns/html/cntry_files.html
http://download.geonames.org/export/dump/

как вариант ещё искать в
*.mp полькие карты
*.wpt точки озика
*.kml треки и точки GoogkeEarth
*.gpx просто треки и точки
(0007319)
Garl   
05-06-2012 17:58   
промежуточные итоги:
имею
userdata\mp\*.mp
4 .mp файла на 138 мeгабайт общего веса
поиск по слову "красная" (слово ходовое) выдал 151 результат (это уже после отброса совпадений)
но! поиск на ноуте длился 5 минут 25 секунд.

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

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

нужен ли нам адресный поиск типа: село Кукуево улица Мира или "Кукуево Мира 15" ? или пока и так сойдёт ?
(0007324)
Garl   
06-06-2012 14:33   
прилепил сегодня поиск по нескольким словам
и если по файлам 5-8 мб город улца дом ущутся на ура, то в файле весом 156мб оно ковыряется уже 15 минут ...
оно нам надо?
с другой стороны полной адресации типа город\улица\дом + координаты больше нигде не достать...
(0007325)
zed   
06-06-2012 16:30   
(edited on: 06-06-2012 16:34)
>в файле весом 156мб оно ковыряется уже 15 минут
Как вариант: заранее конвертиовать *.mp в SQLite и выполнять поиск уже средствами БД. Должно быть на порядок-два быстрее. А так, в лоб, да - медленно и малопригодно.

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

(0007326)
vdemidov   
06-06-2012 18:24   
Не. 15 минут никуда не годится. Значит нужна предобработка данных.
(0007327)
Garl   
06-06-2012 18:27   
(edited on: 06-06-2012 18:28)
как вариант забить на адресный поиск и искать только
города\улицы\POI без подробностей и адресов тупо перебором в лоб.
тогда будет быстрее и предобработка будет не нужна.
з.ы. ждал 25 минут потом задачу снял...

(0007328)
zed   
07-06-2012 08:16   
>тогда будет быстрее и предобработка будет не нужна.
Ага, вместо 25 минут будет 5. Да, быстрее, но проблемы-то это не решает. Любой поиск, занимающий больше пары секунд - мучение для юзера.

Имхо, смотри в сторону SQLite.
(0007329)
Garl   
07-06-2012 08:19   
если делать "ленивый" поиск только по названию - он думаю уложится в секунды.
да что тут рассуждать. к вечеру переделаю и на живом примере проверю.
(0007330)
zed   
07-06-2012 08:25   
>он думаю уложится в секунды
Это на тестовом размере данных. А если этих данных будет раза в 2 больше. Или в 4?
(0007331)
Garl   
07-06-2012 08:29   
тогда надо делать "своё" offline-хранилище и импорт данных в него из произвольных форматов.
мне такое "скил" не позволяет реализовать :)
да и хочется как проще для юзера: накидал файлов - получил результат...
(0007332)
zed   
07-06-2012 08:49   
>тогда надо делать "своё" offline-хранилище и импорт данных в него из произвольных форматов
Я понимаю, что задача может показаться неподъёмной, но смотри:
1. Делаешь конвертер *.mp -> SQLite (для начала можно ограничиться одним mp форматом, далее, по аналогии можно накидать сколь угодно много дополнительных)
2. делаешь геокодер в САСе по подобию существующих, который умеет искать в SQLite из п.1
3. тестируешь/доводишь конвертер до ума, добавляя все необходимые форматы и фичи
4. интегрируешь свой конвертер в САС. Т.е. где-то в интерфейме САСа добавляешь кнопочку "Импортировать POI" и вставляешь туда весь свой код, который раньше работал в конвертере. (Главное, чтобы у твоего конвертера наружу смотрел некий класс, которому на вход можно подавать тот или иной файл, а на выходе он отдаст БД, тогда интеграция его в САС должна пройти достаточно гладко.)

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

Естественно, что это долгоиграющая хотелка и делается это не за один вечер.
(0007333)
zed   
07-06-2012 08:58   
>да и хочется как проще для юзера: накидал файлов - получил результат...
Лучше один раз подождать, пока данные импортируются в БД, но получить быстрый поиск, чем получить "простой" импорт, но ловить лаги при каждом(!) поисковом запросе.
(0007334)
Garl   
07-06-2012 09:05   
хранить такую базу где? ( всмысле путь )
нужен ли поиск страна\область\город\улица\дом ?
если есть полигон. как его лучше находить\отдавать ? полигоном или точкой?
и вообще очень много вопросов...
чистка базы?
улицы разбитые на много частей?

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

и вообще : что то мне оно сильно напоминает работу с метками.
(0007345)
Tolik   
07-06-2012 12:59   
Ну а если сильно упростить - искать только город? Или (2) город+улицу? Сколько займёт времени и какого размера будет база?
(0007347)
Garl   
07-06-2012 13:07   
база населённых пунктов по России http://download.geonames.org/export/dump/RU.zip
44Mb в распакованном виде
по ней будет искаться за секундУ, но там нет улиц. только города\посёлки и координаты.
(0007349)
zed   
07-06-2012 13:27   
А если по всему миру? http://download.geonames.org/export/dump/allCountries.zip
(0007350)
Garl   
07-06-2012 13:35   
работу с SQLite можно подсмотреть в u_ThreadExportIPhone.pas ?
или брать другую компоненту?
(0007351)
zed   
07-06-2012 13:43   
Можно подсмотреть. Но я там делал практически на чистом API, из-за отсутствия поддержки blob полей во враппере. Т.е. можно ещё сильнее облегчить жизнь, используя класс TalSqlite3Client (см. демку в alcinoe\demo\ALSqlite3ClientDemo).
(0007359)
Garl   
08-06-2012 16:20   
я всё ещё про старое:
3 файла общим весом 177 Мб
переделал по ленивому: тупо ищем совпадения в названии и всё!
если название редкое - ищется 5-7 секунд (даже на моём тормозе)
если название распространённое (красная) то:
ищется 50 секунд
а выводит результаты в окошко 2 минуты 30 секунд!!!

в таком виде внедряем?
(0007360)
Garl   
08-06-2012 16:39   
если перед очисткой спрятать панельку, а после вывода в неё результатов - показать, то:
2 с половиной минуты ждать ненужно, но форматирование результатов по высоте в панельке пропадает насовсем :(
(0007362)
zed   
08-06-2012 19:11   
(edited on: 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."

(0007363)
Garl   
09-06-2012 02:51   
так не сравнивай базу в .txt и базу в .mp
я поиск по RU.txt так же с результатом близким к geoknife забаццаю...(что там искать по тексту то)
Только это отдельный гео-кодер будет и там "эталонные" базы , а здесь пользовательские, в которых больше вкусностей...
(0007365)
Garl   
09-06-2012 04:11   
вот щас приделал поиск по этой базе. без конвертации в UNICODE!!!
так вот слово красный ищется 10 секунд + 5 секунд на открытие файла.
но дождаться вывода 1155 результатов в окошко поиска я так и не смог!!!

может рубить на 50..100 ???
(0007367)
zed   
09-06-2012 07:41   
Слишком тормозной поиск у тебя получается. С другой стороны, с файлом allCountries.zip (960Мб в распакованном виде) даже этот GeoKnife не справился - вылетел с out of memory, что как бы намекает.
(0007369)
Garl   
09-06-2012 09:39   
залил к себе в репо.
если есть желание - можно протетстить и вынести вердикт.
(0007596)
Tolik   
22-06-2012 18:41   
А чем кончилось-то? Ищет, что ли? А БД где взять?
(0007597)
Garl   
22-06-2012 18:52   
http://sasgis.org/wikisasiya/doku.php/поиск_по_локальной_базе_geonames