SELECT ... ORDER BY Druh, Vzdálenost
#1
Publikováno 18 únor 2011 - 23:21
#2
Publikováno 18 únor 2011 - 23:23
#3
Publikováno 18 únor 2011 - 23:47
#5
Publikováno 19 únor 2011 - 1:13
Obecnou vzdálenost dvou bodů (byť by jeden byl jako konstanta v selectu) pomocí SQLite selectovat nejde, protože pro vzdálenost na kouli (nemluvě o geoidu) jsou zapotřebí siny a cosiny a na to je její SQL příliš lite.
Přes GUI GeoGetu lze velmi pokročile filtrovat, zato řadit lze jen jednodušše - podle jednoho sloupce. Takže podle druhu a vzdálenosti nelze. V selectu takovéhle omezení není, zase tam ale chybí zrovna ta vzdálenost.
Řešení by bylo vlastním skriptem naplnit vlastní tag ve, kterém by ve vhodném formátu byly potřebné údaje v jednom textu. A pak podle sloupce s tímto tagem seznam setřídit.
Je to tady děsná skládačka ze spousty malých kousků
#7
Publikováno 19 únor 2011 - 8:56
SELECT id FROM geocache WHERE ... ORDER BY ((`x`-refX)*(`x`-refX)+(`y`-refY)*(`y`-refY))
Odmocnina už není nutná, ta ti pořadí nezmění. Může se stát, že se ti někde pořadí přehodí, ale asi to nebude nic fatálního. Přesnou vzdálenost si musíš přepočítat z načtených dat.
a : Drake - vše potřebné pro (offline) geocaching na Android
Stránka projektu na GitHubu - požadavky a reklamace
PocketDrake - vše potřebné pro (offline) geocaching na PDA (WindowsMobile)
#8
Publikováno 19 únor 2011 - 9:39
#9
Publikováno 19 únor 2011 - 10:22
Viz http://www.sqlite.or...dableExtensions
#10
Publikováno 19 únor 2011 - 11:25
Pridat ale funkci primo ze skriptu nejde a je otazka, jestli to vubec nekdy pujde. Nicmene pokud mas extension DLL, ktera v sbe tu funkcima, pak by to zavedeni pres SELECT load_extension('filename'); melo fungovat.
#11
Publikováno 19 únor 2011 - 13:27
#12
Publikováno 19 únor 2011 - 16:28
#13
Publikováno 19 únor 2011 - 20:50
HaLuMa napsal/a:
Samozrejmne, ze do SQLite jsou pridavat funkce. Uz ted tam ma geoget pridane funkce ....
Tak jsem se vzepjal k výkonu a vlastní fci na spočítání vzdálenosti mám hotovou.
Z SQLite shellu ji nalouduji, jak jsi psal - díky. Ještě by mě zajímalo jak to má GG s těmi vlastními přidanými fcemi - to je taky louduje při každém startu GG?
Jo, a ještě by mě zajímal ten 'subselect na dvourozmerny souradnicovy index' jak jsi psal o pár příspěvků výše. Byl by nějaký praktický příklad?
#14
Publikováno 19 únor 2011 - 21:48
ANo. Ty funkce nejsou ulzoeny v databazi, po kazdem otevreni databaze se tam musi zaregistrovat.ToRo61 napsal/a:
Ještě by mě zajímalo jak to má GG s těmi vlastními přidanými fcemi - to je taky louduje při každém startu GG?
ToRo61 napsal/a:
Jo, a ještě by mě zajímal ten 'subselect na dvourozmerny souradnicovy index' jak jsi psal o pár příspěvků výše. Byl by nějaký praktický příklad?
SELECT key FROM coord_index WHERE minx>=:minx AND maxx<=:maxx AND miny>=:miny AND maxy<=:maxy
kde :minx :maxx :miny :maxy urcuji pozadovane rozsahy soyradnic Vlastne tak specifikujes obdelnik, a ono ti to vrati klice z tabulky Geocache tech kesi, ktere jsou uvnitr toho obdelniku.
#15
Publikováno 22 únor 2011 - 21:48
Nenašel jsem tu o tom žádné zmínky, jen popis na http://www.sqlite.org/rtree.html. Nicmeně to je jen pro výběr, pro řazení, což byl původní dotaz, to asi moc použít nejde.
S řazením dle vzdálenosti, které se běžně používá i na gc.com, je ještě jiný praktický problém: Čím dále od počátku, tím více je nepěkné, že po sobě následují od sebe hodně vzdálené keše. Např. po keši vzdálené 5 km je keš vzdálená 5,1 km, ale protože je na zcela opačné straně, je od předešlé keše vzdálená 10 km.
Pro praktické použití by bylo lepší keše v seznamech řadit tak, že by nemusela strikně narůstat jejich vzdálenost od referenčního bodu, ale zato by platilo, že keše blízko u sebe ve výpisu, jsou i blízko ve skutečnosti. Řešit by to šlo procházením po nějaké vhodné spirále:
např. logaritmické:
nebo dokonce Daisy:
Jak to ale provést prakticky je trochu oříšek.
#16
Publikováno 23 únor 2011 - 8:09
#17
Publikováno 23 únor 2011 - 8:34
#18
Publikováno 23 únor 2011 - 8:40
HaLuMa napsal/a:
Aha, zapomnel jsem, ze tenhle druh nahravani musim nejdrive povolit. Takze by to melo jit. Zkusim do pristi verze nezapomenout.
To by bylo skvělé! Tím se otevírají netušené možnosti
#19
Publikováno 23 únor 2011 - 10:14
#20
Publikováno 23 únor 2011 - 10:18
2 uživatel(ů) prochází toto téma
0 uživatelů, 2 návštěvníků 0 anonymních uživatelů