pátek 28. března 2008

MapGen v2 - konečně univerzál

Po delší době jsem měl kreativní náladu a rozhodl jsem se konečně zkusit vytvořit univerzální stahovadlo map. A softwárek MapGen v2 je na světě a jako vždy volně ke stažení zde. Jedná se obět o konzolovou aplikaci, která převážně generuje tuny příkazových skriptů. Pro veškeré operace s grafikou se využívá balík NetPbm, který je nutné nainstalovat. Pro závěrečný převod je využitý klasický prohlížeč IrfanView, který si lépe poradí s kompresí u některých formátů.

Konfigurace programu MapGen_v2.exe tentokrát neprobíhá z příkazové řádky, ale zápisem jednotlivých údajů do INI souboru mapgen.ini. Nejdůležitější je sekce [Main]. Uroveň mapy (MapLevel) je jasná, souřadnice (StartX, StopX, StartY, StopY) lze určit programem MapCoord (StartX/Y je levý dolní roh, StopX/Y je pravý horní). Upozorňuji, že souřadnice musí být správně zaokrouhleny, proto je nutné v MapCoordu nastavit stejnou úroveň detailu mapy, jaká bude použita v MapGenu.

Dále se vybírají aktivní mapy (ActiveMaps). Jedná se o indexy v souboru dále definovaných vrstev, oddělené čárkou. První mapa je vždy podkladová, případné následující (nepovinné) jsou overlay vrstvy, tj. překryvné. Overlay vrstvy musí být "průhledné", je tedy možné použít jen turistické značky, cyklotrasy a popisy, ne skládat např. fotomapy s historickými, ale to je snad jasné. Následuje název výsledné mapy (bez přípon), případné parametry konverze pro IrfanView a výstupní grafický formát map. Pro turistické a základní mapy doporučuji formát png, položku IrfanViewParams je vhodné ponechat, aby se snížila barevná hloubka. Pro ortofotomapy a historické je vhodnější formát jpeg, položka IrfanViewParams se zakomentuje středníkem na začátku řádku, příp. zcela smaže.

V sekci [Config] se nastavuje server, ze kterého se mapy stahují, a dále cesty do adresáře NetPbm (musí končit lomítkem) a IrfanView (přímo na aplikaci). Následují sekce popisující jednotlivé vrstvy map, název a formát záleží na formátu dat, uložených na serverech Seznamu.

Program MapGen vygeneruje čtyři příkazové skripty a MAP soubor pro OziExplorer. Skripty se spouštějí v pořadí podle jejich čísel. Vše je možné ještě více automatizovat spuštěním skriptu mapgen_start.cmd, který zavolá MapGen a následně jednotlivé skripty.

Tato nová verze by měla v plné míře nahradit všechen můj stávající software s výjimkou MapCoordu. Nadále platí, že posledním krokem by mělo být otevření vzniklého dílka v OziExploreru a znovuuložení MAP souboru - tím se dopočítají chybějící parametry (Moving Map) nezbytné mj. pro správné zobrazování oblasti mapy v náhledovém okně. Z mnoha souborů, které jsou po dokončení v adresáři programu, je důležitá výsledná mapa (přípona png nebo jpeg) a soubor kalibrace OziExploreru (přípona map).



Edit 1.4.2008: Byl jsem upozorněn na chybnou kalibraci v OziExploreru, správně fungovala jen úroveň 13. Chyba je opravená, v balíku je nyní MapGen v2.1. Dále jsem do INI souboru přidal definici reliéfu (stínování), která mi minule nějak unikla. A nakonec ještě upozornění, při tvorbě fotomap do formátu JPEG se v INI souboru v položce ResultFormat musí zadat jpg, nikoliv jpeg. Přinejmenším má verze Oziho to nepřekousla.

14 komentářů:

Anonymní řekl(a)...

jenom bych se chtěl zeptat .. jak je to s tím otevřením a uložením v OziExploreru ... nějak sem nepřišel na to jak to udělat - prosím asi o helo pro totálního analfabeta ;) . teda jestli je to co to hází za hlášku "This map file is missing information, it may have been recently imported using just a TFW file. Same the map after it is loaded to save the information required." věc ohledně tohodle

alpov řekl(a)...

Ano, to je tenhle problém. Po otevření mapy (tlačítko Load - Load Map File) se mapa normálně otevře a vyplivne to tuhle hlášku. Pak je potřeba dát znovu uložit mapu (tlačítko Save - Save Map File), klidně se může přepsat původní (ukládá se jen MAP soubor s kalibrací). Tím se doplní chybějící informace a při příštím otevření už to tu hlášku nebude házet.

Anonymní řekl(a)...

Chtěl jsem si udělat podrobnou mapu Č.Budějovic po různých experimentech mám tento ini soubor. Vše proběhne, ale mám bílou mapu. Píše to že nemůže najít server. Co dělám špatně, chtěl bych mít detail 15, protože obsahuje názvy ulic.
(http://mapserver/mapy.cz/base/..... failed unknow host )
Zde výpis INI souboru
[Main]
; uroven detailu mapy a souradnice rohu
MapLevel=15
StartX=0
StopX=0
StartY=0
StopY=0
; nebo odkazy na levy dolni a pravy horni roh z mapy.cz (souradnice vyse nastavit 0)
; priorita vyberu urovne mapy: nastaveni MapLevel, pokud je 0, tak se vezme z LinkBottomLeft
LinkBottomLeft=http://www.mapy.cz/#x=132963296@y=131829472@z=15@mm=ZP
LinkTopRight=http://www.mapy.cz/#x=133426944@y=132143488@z=15@mm=ZP
; aktivni vrstvy mapy; prvni je podklad, ostatni jsou overlay
ActiveMaps=5,,
; nazev mapy
MapName=CBUDEJOVICE
; parametry konverze prohlizece IrfanView
IrfanViewParams=/bpp=8
; vystupni format mapy, PNG nebo JPEG (zde musi byt zadan jako jpg, ne jpeg)
ResultFormat=png

[Config]
Server=http://mapserver/mapy.cz/
NetPbmPath=C:\Program Files\GnuWin32\bin\
IrfanViewPath=C:\Program Files\IrfanView\i_view32.exe
WGetPath=..\wget.exe

-zkráceno-

Díky
ZdeněkJ

alpov řekl(a)...

Ahoj, problém je v nastavení serveru, správně má být "Server=http://mapserver.mapy.cz/". V defaultním INI souboru je to dobře. A pak ještě nevím, jestli se MapGenu budou líbit čárky v definici map ("ActiveMaps=5,,"), raději bych to napsal jen jako "ActiveMaps=5".

online_R řekl(a)...

Není lepší tvořit mapy pro projekt Openstreetmap.org a tyto mapy si pak přetvářet pro své navigace ? Než si stahovat nějaké neměnné obrázky ?

Anonymní řekl(a)...

zdravím, mám dotaz zda je stále ověřena funkčnost - dostávám pro server http://mapserver.mapy.cz hlášení connection refused?

alpov řekl(a)...

Mně stahování funguje, teď jsem to zkušel s testovacím nastavením. Možná měli výpadek. Nebo je v tvé síti povinné použití proxy serveru, to by se pak muselo přidat k parametrům wgetu.

Anonymní řekl(a)...

Děkuji, ano, ano - proxinou to bylo

Anonymní řekl(a)...

Zdravím. Funguje to jak má a jak málokdy co funguje. Ale měl bych prosbu - kdykoliv se pokusím o vytvoření nějaké mapy pro širší oblast, narazím na velikost. Merge pro oziho najít jde, ale rozřezávátko zkalibrovaných map ne. Pokusit se o "ruční" čtvercování vyžaduje neomylnost a trpělivost jaké nejsem mocen. Nešlo by pro Mapgen vyrobit "windows" interface, kde by se zadaly url rohů -> ajta! je to 150x40 km!-> chtěl bych to po listech max. 15x10 km s 1 km přesahem, tyhle vrstvy a tenhle zoom.... Šlo by něco takového? MapGrabber pracuje u turistického overlaye jen do zoom 13 a má chybu v generování kalibračního souboru (prohození rohů)

alpov řekl(a)...

Souhlasím, u mapových podkladů se to ještě snese, ale pro ortofotomapy je rozřezání na malé čtverce s přesahem téměř nezbytné. Pokud by se někdo chtěl úkolu tvorby nějakého rozumného GUI pro Windows zhostit, budu jedině rád, ale já teď fakt nestíhám vůbec nic. Budu mít čas nejdříve po státnicích, čili někdy v létě, do té doby bohužel nelze žádná vylepšení očekávat.

Paja řekl(a)...

Dal by se MapGen vyuzit i ke stazeni map ze serveru EDB? Prijde mi pracne mapu stahovat snimanim obsahu obrazovky. Ukazka na http://www.edb.cz/tMap.aspx?L=CZ&crc=139835

alpov řekl(a)...

Bez zásadních změn ne. Sice to vypadá, že jsou mapy děleny na čtverce (125x125px), ale názvy se nedají nijak snadno generovat, skládají se asi náhodně. Kostra MapGenu na stahování a sklad by použít šla, ale někdo by musel vytvořit postup pro získání seznamu potřebných čtverců.

Fraktišek řekl(a)...

Ahoj, díky za skvělej prográmek. Moc mi pomáhá při prácis dětmi, protože jsem měl stále problém sehnat mapový podklady.

Anonymní řekl(a)...

Díky za skvělej prográmek, dlouho ho používám, bohužel mapy.cz už pár dní používají jiné schéma URL, takže už neumím zadat do GUI co chci stáhnout :(
Nešlo by to nějak jednoduše opravit, případně poradit, jak "přeložit" novou URL do staré.

PS: Nové mapy.cz už jsou dlouho, ale ještě nedávno běžela jejich stará verze na old.mapy.cz (s tou to šlo), jenže už tam není :(