neděle 10. května 2009

MapGen v2.3 - změny uvnitř a GUI

Po dlouhé době jsem si našel den volna a dal dohromady novou verzi MapGenu. Obsahuje dvě zásadní změny: přechod z knihovny NetPbm distribuované v rámci GnuWin32 na distribuci v rámci CygWin a konečně vytvoření alespoň jednoduchého klikacího grafického rozhraní.

Knihovna NetPbm distribuovaná v rámci projektu CygWin je aktuální a řeší řadu problémů, s kterými jsem se potýkal (zejm. nefunkční pnmcolormap a chyba s dialogovým oknem u jpegtopnm). Na druhou stranu instalace CygWinu je mnohem větší kolos.

Takže kompletní postup instalace MapGenu verze 2.3:

  • stáhnout a spustit setup.exe knihovny CygWin (vyžaduje připojení k internetu)
  • proklikat k výběru balíčků (doporučuji ponechat i instalační cestu c:\cygwin\)
  • vybrat Graphics/netpbm a Web/wget (automaticky se vyberou i závislé balíčky), dokončit instalaci
  • stáhnout a rozbalit MapGen v2.3b (288 kB) (již neaktuální - pokračuj zde)
Samotný MapGen nedoznal interně nijak zásadních změn, bylo odstraněno omezení na 100x100 čtverců a přidána možnost spuštění s názvem INI souboru jako parametrem. Důležité změny jsou však v testování ErrorLevelu konverzí (nyní by měl být program funkční pro všechny možné varianty okrajů map) a ve finální konverzi na PNG nebo JPEG. Aktuální verze již nepoužívá paměťově náročnou metodu s IrfanViewem, nýbrž implementuje snížení barevné hloubky (u PNG/GIF, turistických map) na úrovní PBM a taktéž poslední konverze je zajištěna balíkem NetPbm. Výběr výstupního formátu mapy a případného snížení barevné hloubky je prováděn automaticky.

Nové je grafické rozhraní (GUI) pro MapGen. Je doufám relativně intuitivní, takže jen několik slov. Hranice mapy je možno zadat odkazy na rohy, tradičně souřadnicemi a nově též odkazem na střed a velikostí výsledné mapy, a to buď ve čtvercích 256px nebo v kilometrech dle aktuálního měřítka. Všechny výpočty souřadnic jsou zaokrouhlované, takže výsledek je plus mínus pár čtverců. Výběr aktivních vrstev zůstává, pomocí parametrů Wgetu lze specifikovat speciality jako Proxy server na místní síti. Tlačítkem Uložit INI soubor se vytvoří INI pro Mapgen, tlačítkem Spustit MapGen dojde k vygenerování INI a přímo k zavolání skriptu mapgen_start.cmd v aktuálním adresáři. U názvu mapy se nesmí použít diakritika a mezery.

Snad jen pro úplnost doplním dva časté dotazy. Odkazem na mapu je míněna adresa zobrazovaná při prohlížení na www.mapy.cz. A vygenerovaná kalibrace pro OziExplorer neobsahuje Moving Map parametry, nezbytné mj. pro správné zobrazení oblasti mapy v náhledovém okně. Proto je po vytvoření mapy nutné ji otevřít v OziExploreru, odklepnout varování a MAP soubor znovu uložit - tím se MM parametry dopočítají.

Veškeré připomínky piště prosím do diskuze, zejména GUI je první betaverze a bude nejspíš obsahovat nějaké chybičky, které opravím co nejdříve poté, kdy je testeři najdou :-). GUI prozatím neumí jednu poměrně zásadní a žádanou věc, a to dělení velké mapy na díly s přesahem. K tomu se dostanu snad zase někdy příště.



Edit 18.5.2009: A máme tu opravy prvních drobností. Verzi 2.3 nahrazuje verze 2.3b, jsou přidány nové vrstvy map (base-n, relief-h), funguje generování správné přípony fotomap pro Oziho (musí být jpg, ne jpeg) a přibylo zaškrtávátko Resamplovat PNG na 256 barev - to bylo doteď vždy automatické, nyní je to volitelné. Resamplováním vznikne podstatně menší obrázek, takže se lépe nahrává a lépe se s ním manipuluje. Na druhou stranu při proložení reliéfů to už dopadne s barvami docela zle, takže teď je možnost volby.



Edit 20.7.2009: Na mapy.cz trošku přeházeli obsah řádku se souřadnicemi, jako první rychlé řešení nefunkčnosti detekce souřadnic v odkazech v GUI je možné ve zkopírované adrese nahradit @x= za #x= (zavináč před x za křížek). V příští verzi GUI to opravím.

17 komentářů:

Anonymní řekl(a)...

Dobry den,
velice dekuji za program mapgen, je to presne to co jsem potreboval. Az na maly detail - mapy.cz maji aktualne nejvyssi detail az na urovni 18, vas program pracuje napevno s max. urovni 16.

alpov řekl(a)...

Zdravím, díky za upozornění, to museli na mapy.cz zavést poměrně nedávno. Až bude chvíle času, tak to opravím.

Alex řekl(a)...

Když vygeneruji mapu tímto SW tak ji v OZI exploreru v počítači načtu, ale v PPC ne. Čím by to mohlo bít. Obrázek je v PNG a MAP soubor je opraven a uložen v počítači.

alpov řekl(a)...

Nikdy jsem to nezkoušel, ale co jsem slyšel, tak OziExplorerCE vyžaduje vlastní formát OZF. Existuje na to utilita přímo od tvůrců, hledej program Img2ozf.

Anonymní řekl(a)...

Zdravím. Možná se zeptám hloupě, ale nějak nechápu, jak PŘESNĚ určit odkazy na levý dolní a pravý horní roh mapy pomocí funkce, která je na mapy.cz (Odkaz na zobrazenou mapu). Pokud se nepletu, tak tento odkaz určuje střed právě zobrazené mapy. Když tedy chci určit rohy, musím místo, které chci považovat za roh nastavit na střed zobrazené mapy? Nebo se pletu a dělám něco špatně. Jde mi o to, že chci stáhnout několik map, ale do více souborů tak, aby na sebe navazovali a tohle mi přijde nepřesné. Díky za odpověď, Marek.

alpov řekl(a)...

Je to tak, jak píšete, pokud chcete určit roh, je třeba ho natáhnout do středu obrazovky a použít tento odkaz. Je to krkolomné a hlavně pořád ještě nepřesné, protože MapGen to interně zaokrouhluje na nejbližší čtverec, takže přesně se strefit je celkem problém. Přesně se to dá tak, že si odečtete z vygenerovaného INI souboru patametry StartX, StopX atd. a budete je pak zadávat ručně s postupnou inkrementací. Zde je zase problém se zaokrouhlením, pokud se nestrefíte do existujícího kroku, generování mapy spadne.

Tuhle otázku jsem už řešil. Pokud si děláte větší mapu, není problém udělat větší okraje a nějaké drobné zaokrouhlení neřešit. Pokud chcete větší mapu rozdělit, tak to problém je. A toho se právě týká ta poslední připomínka v příspěvku, že v GUI chybí důležitá funkce na dělení mapy na díly s mírným přesahem. Snad si brzy najdu čas ji zapracovat, spolu s další připomínkou - totiž že na mapy.cz je nyní dostupné rozlišení někde až na úroveň 18, kdyžto současný MapGen podporuje detail jen do úrovně 16.

Bourvil řekl(a)...

Zdravím a moc děkuji za výdornou utilitku! Měl bych dotaz. šlo by Mapgen nějak jednoduše upravit tak aby byl schopen stáhnout a slepit i data z cykloserveru.cz? Uložení dat je na bázi googlu a je následující: http://services.tmapserver.cz/tiles/gm/shc/9/278/175.png - což znamená http://services.tmapserver.cz/tiles/gm/shc/*priblizeni - pokud je za cislem c pak jsou zobrazeny i cyklostezky*/*poloha na ose X*/*poloha na ose Y*.png Pocatek souradnic X,Y je vlevo nahore.

alpov řekl(a)...

Určitě by to šlo, nevím jak s kalibrací pro Oziho, ale na samotné stažení a spojení by bylo možné většinu zdrojáku MapGenu použít. Ale spíš by to bylo na splácání jednoúčelové aplikace. Pokud by se do toho někdo s lehkou znalostí Delphi a příkazového řádku chtěl pustit, budu rád - mně se sice mapy z cykloserveru taky moc líbí, ale nějak už nemám moc čas se tím zabývat.

Parkis řekl(a)...

Ahoj, díky za GUI, vypadá pěkně. Moc ale nejsem nadšený z přechodu na cygwinovské balíčky. Doteď jsem měl mapgen včetně všech potřebných součástí (netpbm a irfana) na externím přenosném disku, ze kterého jsem ho mohl používat kdekoliv (třeba v práci ;). S cygwinem to asi tak snadné nebude, je to přecejen pořádný moloch. Nebylo by možné alespoň vydat gui i pro předchozí verzi mapgenu? Na její limity jsem zatím nikdy nenarazil a bohatě mi stačí.

alpov řekl(a)...

Zdravím, i když uznávám, že CygWin je hrozný kolos, vracet se zpět k NetPbm z GnuWin32 už nechci ani omylem, natrápil jsem se s tím dost. Můžeš zkusit z nainstalovaného CygWinu udělat "očesanou" verzi pro MapGen, podle mě by to jít mohlo. Na úpravu GUI pro starší verzi absolutně není čas, ještě jsem se nedostal ani k tomu detailu 18, mám teď bohužel práce nad hlavu, léto neléto.

Anonymní řekl(a)...

Předem chci poděkovat za bezvadný program. moc mi pomohl. Mám s ním však problém. Skončí s chybou c:\cygwin\bin\giftopnm.exe: Program takes zero or one argument (filename). You specified 3.
Nějaký nápad jak zprovoznit? Děkuji za každou radu.

alpov řekl(a)...

Ahoj, na mapy.cz trošku přeházeli obsah řádku se souřadnicemi, všimnul jsem si toho včera. Jako první rychlé řešení je možné ve zkopírované adrese nahradit @x= za #x= (zavináč před x za křížek). V příští verzi GUI to opravím, ale nevím, jak rychle se k tomu dostanu.

Anonymní řekl(a)...

Ahoj, nainstaloval jsem mapgen podle všech návodů ale nejak mi nefinguje. Žádnou chybu při spuštění neohlásí, map soubor se vytvoří ale jpg (nebo png) soubor má nulovou velikost :((. Kde dělám chybu?

alpov řekl(a)...

Ahoj, zkus zadávání pomocí adresy a nezapomeň zaměnit zavináč za křížek, viz edit z 20.7. u příspěvku, zatím jsem fakt neměl čas to opravit, nevím kam dřív skočit. Nulová velikost je známkou toho, že je něco špatně zadané. Stahování a spojování funguje, teď jsem to ověřoval.

Anonymní řekl(a)...

Ahoj, mapu zadávám pomocí souřadnic středu a velikosti. JPG soubor se vytvoří, ale je to pouze abstraktní čmáranice. Jestli jsem správně pochopil funkci, tak mapgen si nejdříve stáhne jednotlivé čtverce mapy do adresáře base_turist (nebo base_ophoto) pak další požadované vrstvy do dalších adresářů a pak to vše sloučí dohromady. Ve výše zmíněných adresářích jsou čtverce v pořádku (bit mapa je čitelná) ale konečný soubor je nanic. Jak jsem již psal JPG je sice čitelné, ale je to abstraktní čmáranice. PNG soubor je nečitelný, při pokusu o otevření v nějakém prohlížeči (IrfanView) ohlásí chybu v hlavičce souboru.

alpov řekl(a)...

A jak vypadá vygenerovaný složený PNM soubor? Jaký operační systém používáš? Kdyžtak mi na mail pošli vygenerovaný JPEG a příslušný vygenerovaný INI soubor, kouknu na to... už mi něco podobného před čtvrtrokem někdo zmiňoval, ale tehdy se mi problém nepodařilo najít.

alpov řekl(a)...

Takže problém byl v instalaci CygWinu - je nutné ponechat Default Text File Type na Unix / binary, jinak jsou všechny soubory poškozené. Vydal jsem novou verzi MapGenu, mj. s detailem 17 a 18 a s opravenými dalšími chybami, takže další viz blog.