Locus Map - forum

Support => [CZ&SK] - diskuze o Locusu => Topic started by: Krakonos23 on August 26, 2012, 22:56:52

Title: Souřadnice v sqlite databázi?
Post by: Krakonos23 on August 26, 2012, 22:56:52
V sqlitedb RMaps souboru jsou souřadnice x, y, a zoom. Nepodařilo se mi přijít na to, co jsou x a y za souřadnice, resp. jak k těmto číslům dojít např. z Universal Transverse Mercator či Transverse Mercator či Mercator projekcí. Tak nějak předpokládám, že čísla vycházejí z latitude a longitude za užití WGS-84, ale ne a ne se jich dopočítat. Můžete mě někdo nasměrovat? Díky.
Title: Re: Souřadnice v sqlite databázi?
Post by: Menion on August 27, 2012, 08:58:20
ahoj,
  myslím že tady najdeš vše co potřebuješ http://wiki.openstreetmap.org/wiki/Slippy_map_tilenames (http://wiki.openstreetmap.org/wiki/Slippy_map_tilenames)
Title: Re: Souřadnice v sqlite databázi?
Post by: Krakonos23 on August 27, 2012, 09:39:45
Myslíš výborně, děkuji pane.

Ještě mám jeden dotaz. Mám různé mapy v tar, je u nich soubor *.map a v něm buď záznam "Map Projection,(UTM) Universal Transverse Mercator,..." nebo "Map Projection,Mercator,..." a čísla souřadnic rohů. Je nějaký přepočet (konverze, transformace) těch souřadnic mezi oběma typy projekce?
Title: Re: Souřadnice v sqlite databázi?
Post by: Menion on August 28, 2012, 22:00:14
konverze mezi souřadnicemi samozřejmě existuje nicméně pokud máš mapy v TARu tak je jen s jednoduchým přepočtem do SQLite databáze nedáš. Ten formát v SQLite databázi je dost specifický a je třeba dodržovat přesná měřítka a rozměry dlaždic jinak to nebude fungovat. Pro to by jsi musel i samotné dlaždice přerastrovávat (zmenšovat/zvětšovat) podle potřeby, což pokud vysloveně nepotřebuješ, doporučoval bych ponechat mapy ve formátu TAR. Jinak ti můžu něco najít ale určitě najdeš spoustu informací o konverzi UTM do Mercatora nebo sférických souřadnic. Nicméně počítej že už to není tak snadné jako v případě prvním
Title: Re: Souřadnice v sqlite databázi?
Post by: Krakonos23 on August 28, 2012, 23:06:28
Hmm, já myslel, že bych je právě přeházel z TARu do SQLite, protože jedny mně jdou přeházet a ty druhé ne; teda jdou naskládat, ale už se mi je nedaří umístit, jsou jako celek posunuté...
Locus ty TAR načítá dost dlouho a SQLite hned a to si nemyslím, že bych měl pomalej telefon (SGS2). Byl jsem na tom, že ta SQLite slouží jen jako databáze, kvůli snazšímu čtení dlaždic. A taky jsem si myslel, že když se ty TAR mapy liší v podstatě jen tím číslováním souřadnic, jinak jsou dlaždice stejně velké a Locus oba typy přesně zobrazuje, tak bude stačit jen jiné číslování dlaždic.
Budu hledat odkazy, kdybys měl nějakej odkaz, tak ho přivítám. Nepotěšil jsi mě, přesto děkuji :-)
Title: Re: Souřadnice v sqlite databázi?
Post by: Menion on August 29, 2012, 00:46:28
no Locus by měl načítat dlouho jen první inicializaci mapy. Ta trvá protože je třeba oindexovat všechny dlaždičky v souboru (na jaké pozici se nachází a jak je veliká). Nicméně veškeré další načítání by mělo být snad i rychlejší než v SQLite databáze.

TARy se hlavně liší tím, že díky kalibraci mapy zapsané v externím map souboru, může mít TAR mapa naprosto jakékoliv kartografické zobrazení. Což je velkáá výhoda protože to v SQLite prostě nejde. Tam je to mercator, zoomy jsou mocniny dvou a žádná variabilita není možná
Title: Re: Souřadnice v sqlite databázi?
Post by: Krakonos23 on August 29, 2012, 09:15:45
Tak mě napadlo, zda by Locus vzal už hotový indexový soubor, který by byl vytvořen v počítači k té TAR mapě? Pokud jo, tak jak je složité ho vytvořit? Jakou má strukturu? Že bych jako měl TAR mapy a k nim ty indexy, a ty bych na katu dle potřeby nahrál... Pokud to tedy není tajné know how...
Title: Re: Souřadnice v sqlite databázi?
Post by: Menion on August 29, 2012, 18:09:49
tajné know-how to není, nicméně přijde mi to skoro zbytečné. Děláš těch TAR map hodně a často je měníš/obměnuješ? Jinak to totiž nemá moc smysl když Locus to dělá a dělá to jen jednou pro každou novou mapu, více ne.

jinak soubor s indexy je jen za sebou nasekaný "long (8bit)" pozice v tar souboru a "int (4bit) délka souboru". Soubory jsou v indexu řazené po řádcích tuším a celý soubor je uložnen v cache adresáři. Nicméně před tím indexem je v tam ještě pár informací které bych ti musel říci. Navíc je možné že se to v blízké budoucnosti bude měnit. Ale pokud o to vysloveně budeš stát, tak to můžu rozepsat
Title: Re: Souřadnice v sqlite databázi?
Post by: Krakonos23 on August 29, 2012, 19:39:37
O zbytečnosti máš asi pravdu. Měl jsem asijský státeček v 0-18 a bylo toho cca 20GB na 64GB kartě (hledání akvarijních rybiček), takže jsem je tam dával, když bylo třeba a ta inicializace trvala hodiny a někdy asi došla paměť či co, protože Locus spadl a jelo se znova. Index v cache pak k tomu byl kolem 10MB pro necelých 4GB TAR. Možná to spadlo proto, že TAR má mít menší velikost, nevím. Mapy, co jdou udělat v MOBACu není problém vytvořit v SQLite, ale něco má UTM a ty mi nejdou předělat do SQLite, viz výše.
Ale napadlo mně, zda Locus kontroluje, že ta TAR mapa ve složce nebyla a pak se tam vrátila. Pokud ne, tak by stačilo index z cache vytvořený Locusem schovat do PC a pak, když vracím mapu, tak jej se souborem vrátit do stejně pojmenované složky, protože ta je v indexu obsažena. Bude to fungovat?
O to indexování zas tolik nestojím, spíš bych byl raději, kdybys věděl nějaký odkaz na ten přepočet projekce, abych si udělal představu o náročnosti a zkusil to nebo ne. Říkám si, možná laicky a nesmyslně, že když umí obě projekce Locus zobrazit, tak musí jít udělat i zpětný výpočet na správné souřadnice, protože z GPS také dostává jen souřadnice...
Title: Re: Souřadnice v sqlite databázi?
Post by: Menion on August 30, 2012, 22:06:12
4GB TAR je pro Locus šílený. Mám ozkoušeno že velikost TARu je ideální do 1-1.5GB. Více už je hodně pomalé. HLavně teda inicializace které se zpomaluje exponeciálně nad ten 1GB. 1GB TAR mapa kdyby trvala minutu, 2GB budou trvat tak tři, 4GB tak půl hodiny. Nevíc proč je to pak pomalejší, nepříšel jsem na to, ale Android prostě ve velkých souborech hledá a postupuje mnohem pomaleji, čím déle je od počátku

jinak převod, stačí trošku zagooglit. Hned mi to našlo třeba toto http://www.ai.sri.com/geotransform/index.html (http://www.ai.sri.com/geotransform/index.html)
Title: Re: Souřadnice v sqlite databázi?
Post by: Krakonos23 on September 08, 2012, 00:45:47
Děkuji za odkaz, jdu zkoumat.

Tak jsem to převedl. Nebylo to tak hrozný. Rozbalil jsem tar, rozházel na disk do dresářů z/x/y. Pak jsem podle x,y,z z sqlitedb souřadnice levého dolního rohu dlaždice převedl z mercatoru do lat lon, z toho do UTM, z UTM zjistitl 2x2 dlaždice, které to s přesahem pokrývají na všechny strany (výsledná se z nich vyřízne), pak jsem souřadnice čtyř rohů mercatorové dlaždice převedl na čtyři rohy lat,lon, a UTM z nich použil do convertu z imagemagicku pro funkci distort a resize na 256x256 a byla z toho krásná dlaždice do sqlite. Ty jsem do databáze naskládal a sedí to jak pr... na hrnci. Nějakých 150 řádek v perlu...
Ještě jednou děkuji za odkazy.
Title: Re: Souřadnice v sqlite databázi?
Post by: Menion on September 08, 2012, 16:04:46
jaj, koukám že opět skriptovací jazyk v praxi válcuje javu. Tohle bych psal minimálně na 1000 řádek a ještě bych se u toho pěkně potil. Gratulace :)
Title: Re: Souřadnice v sqlite databázi?
Post by: psuk on September 08, 2012, 19:36:17
Toz se podel krakonosi  ;-)
Title: Re: Souřadnice v sqlite databázi?
Post by: Krakonos23 on September 08, 2012, 20:46:02
O co? Vždyť jsem všechno napsal, kdyžtak dovysvětlím. Jen jsem na to dneska koukal a protože je mercator od UTM trošku natočený, což jsem věděl, tak pro jistotu jsem to předělal, aby byl obraz k výřezu 3x3 tile, ale musím proměřit, zda při extrémním natočení by nebyla jistota 5x5 tile s výřezem uprostřed kolem střední tile.
Zkoušel jsem to i na mapy.cz a sedí to, ale nesmí se to :-( Jen zoom není 1:1, takže beru o 2 menší, což ničemu nevadí, při 18 to bere 16, jako maximum třeba turistických map, výsledný zoom je samozřejmě přesný 1:1. Pro přepočet ala http://grass.fsv.cvut.cz/gwiki/S-JTSK#T ... Dch_geodat (http://grass.fsv.cvut.cz/gwiki/S-JTSK#Transformace_textov.C3.BDch_geodat) použito WGS84 → UTM 33N a zpět. Knihovny (CPAN) jsem použil tyto Getopt::Long; Math::Trig; Geo::Coordinates::UTM; Geo::Coordinates::DecimalDegrees.
Teorii klidně podrobně vysvětlím, skript ale zveřejňovat nebudu, snad jen kousky, kdyby někdo fakt nevěděl, jak dál.


Dotaz pro meniona. Když budou jednotlivé sqlite databáze celého podkladu po třeba 2GB v jednom adresáři s různými rozlišeními, nebo prostě rozdělené do více sqlite souborů, tak to Locus pochopí, že patří k sobě? Předpokládám, že ano.
Title: Re: Souřadnice v sqlite databázi?
Post by: psuk on September 08, 2012, 21:44:50
Myslel jsem podelit se o ten skript, ne kazdy si to dokaze naprgat. Ale nejspise k tomu mas sve duvody, takze respektuji.
Title: Re: Souřadnice v sqlite databázi?
Post by: Krakonos23 on October 08, 2012, 21:49:54
No, když to nedokáže člověk naprgat, tak mu to neni k ničemu, protože je to hodně jednoúčelový a bez rozhraní a blbovzdornosti. Proto, kdo něco sepsat dokáže, tak tomu poradím ideu.

Menione, tak jsem si mapy převedl do sqlitedb, abych zjistil, že v posledních verzích Locusu to načítá i ty sqlitedb mapy při jejich vložení do adresáře snad stejně dlouho jako ty tar. Jde to nějak vypnout, aby to zas tyto mapy načetlo ihned? Nepřijde mi to (laicky) jako cesta vpřed...