GPS navigace svépomocí - 1. část - "hackování" mapového serveru
Aktualizováno - Už mě nebaví brát si s sebou na výlety obrovské papírové trhací mapy a u každé křižovatky je rozbalovat. Tak mě napadlo, že si vytvořím vlastní navigační systém. Hardware na to mám (GP2X), teď jen stačí spustit vývojové prostředí a v C++ něco vytvořit.
První problém je sehnání map, aby ta moje navigace měla co chroustat. Nehodlám nic kupovat a potom pro to vytvářet nějaký parser, který mi to zobrazí na displeji, a tak jsem sáhnul po zdroji map zdarma – internetu. Váhal jsem, co použít, ale nakonec vyhrál Seznam, protože na serveru www.mapy.cz kromě normálních map nabízí i satelitní snímky. To (myslím) žádný jiný český mapserver nenabízí.
A jak ty mapy z něj získat? Klikáním na mapu pravým tlačítkem a mačkat na Uložit obrázek jako... je strašná práce. Musí se na to trochu jinak. Po krátkém zkoumání jsem zjistil, že mapa je složená z dlaždic o velikosti 256 x 256 pixelů. Každá dlaždice má nějakou URL, takže například:
http://mS.mapserver.mapy.cz/-typ-/zz_xxxx000_yyyy000
Ano, je to bez přípony, ta není potřeba. Místo S je vepsáno číslo od 1 do 4 (Seznam.cz nyní rozložil zátěž na 4 servery), místo -typ- je v adrese vepsán typ mapy:
- base - základní
- ophoto – aktuální satelitní snímky
- ophoto0203 – satelitní snímky z roku 2002/2003
- hybrid – hybridní (průhledné obrázky s vyznačenými cestami pro překrytí satelitních snímků)
- turist – turistická mapa
- army2 – historická mapa
- relief-l – průhledný reliéf (stínování) pro překrytí
Jak je vidět, je typů hodně, ovšem některé (turistické, historické) nemusí být dostupné ve všech regionech. Vyzkoušejte.
Název dlaždice je složen ze tří částí oddělenými podtržítky. První část (zz) označuje zvětšení, jednička je nejmenší (nejméně podrobností), šestnáctka největší (jsou vidět i auta stojící na ulicích). Druhá (xxxx) a třetí (yyyy) část označuje souřadnice. Zde je nulový bod vlevo dole a od něj se určují souřadnice jednotlivých dlaždic. Číslo x-ové i y-ové souřadnice je v šestnáctkovém formátu, aby byla snížena délka URL pro stažení přísušné dlaždice.
U obou souřadnic jsou poslední tři místa nepoužitá (jsou tam tři nuly, které se nemění) a jsou nejspíše rezervovaná pro větší zvětšení (už se těším :-)). Při zvětšení šestnáct mají dlaždice ve vodorvném směru například tyto názvy:
16_8085000_6f30000 16_8086000_6f30000 16_8087000_6f30000 16_8088000_6f30000 16_8089000_6f30000 16_808a000_6f30000 16_808b000_6f30000 16_808c000_6f30000
Při menších zvětšeních jsou skoky už větší, poslední číslice (poslední tři nuly se nepočítají) se nezvětšuje o jednu, ale o dvě, čtyři, osm, šestnáct a tak dále (podle rovnice 2^(16 – zvětšení) ), například při zvětšení třináct budou adresy dvou dlaždic vedle sebe mít rozdíl podle rovnice 2^(16-13) = 8, takže takto:
13_8080000_6f30000 13_8088000_6f30000 13_8090000_6f30000 13_8098000_6f30000 13_80a0000_6f30000
To znamená, že každá dlaždice pokryje osm jednotek při zvětšení třináct a jednu jednotku při zvětšení šestnáct. Takže při dotázání na tuto dlaždici dostaneme krásnou historickou mapu:
http://m1.mapserver.mapy.cz/army2/13_8050000_7e70000

Napoak při dotázání na tuto dlaždici dostaneme prázdnou dlaždici:
http://m1.mapserver.mapy.cz/army2/13_8051000_7e70000

V x-ové souřadnici na místě jednotek (čtvrté místo) je číslo 1, které sem nepatří, protože zde jsou skoky o 8 jednotek – viz vzorec 2^(16-13) výše, takže zde může být (v 16tkové soustavě) jen znak 0 nebo 8.
Teď už je tedy systém mapového serveru na seznamu vysvětlen a proto nic nebrání tomu, aby se pomocí skriptu vygenerovaly názvy dlaždic a ty pomocí nějakého programu dávkově stáhly.
V příští části rozeberu základní myšlenku pro zobrazování dlaždic a posun po mapě.
Související články
Pod štítkem .
» Přidat komentářDiskuze: 10 komentářů
GPS přijímač... zjišťoval jsem ceny, ale na mé poměry trochu moc (6000) :-(
Mi to prijde celkem jako frajerinka :-)
Jestli me neco na PDA vadi, tak je to nechutna spotreba pri zaplem GPS. Ci-li neco takoveho, co dela log prubezne a autonome, jenom obcas by se z toho sosli data, zkontrolovat poloha a smer a zase PDA vypnout. Tak bych si to predstavoval.
No nic, preji uspech. Kdyby te zajimal ten GPS modul, tak pisni mejla.
Pokud te nezajima zaznam trasy, tak staci cist aktualni informace na vystupu GPS. Nekde bych mozna vystrachal popis NMEA packetu. Teda, mel bych to nekde mit.
Tady ti poslou dva vzorky zdarma: http://www.maxim-ic.com/...sheet/index.mvp/id/1252
Krom toho menice tam maji hromadu jinych zajimavych vecicek :-)


Co GPS prijimac, SDIO, USB, rs232?