CLC import alternatíva
Bevezető
Általános információ a módszerről
A legfontosabb különbség a másik módszerrel szemben, hogy a CLC adatok településenként lesznek beimportálva. Ennek előnye, hogy az adatok sokkal jobban kezelhetők és karbantarthatók. Hátránya, hogy az importálás lassabb. Az előnyök messze meghaladják a hátrányokat. Természetesen a területfelhasználási határok nem mindenhol követik a településhatárokat (sőt, többnyire nem). Ezt a problémát kezelni kell, attól függően, hogy a területfelhasználás nagyobb területű vagy kisebb. A fél megyényi területeket (főleg szántók, erdők) bekötjük a településhatárokba, ezek így válnak kezelhetővé. A két (esetleg három) településre nyúló területeknél azt csináljuk, hogy a nyitott részt (ami a még nem importált területre néz) kiegészítjük két ponttal a "szűz" területen. Amikor ezt a területet importáljuk, az ide eső részt egyszerűen összekötjük a már beimportált területtel.
Szükséges eszközök
(Alternatív eszközök használhatók, de a leírás ezeket feltételezi)
- Windows
- Osmosis
- ActivePerl
- JOSM
Osmosis
Batch fájlok
Az Osmosis futtatását az Osmosis bin könyvtárában elhelyezett batch fájlokkal oldottam meg. A call paranccsal kell meghívni az osmosis.bat fájlt. A REM (remark) paranccsal lehet megjegyzést hozzáírni és a pause paranccsal felfüggeszthetjük a végrehajtást. Például:
REM split
call osmosis.bat --read-pbf c:\osm\osmdata\hungary.osm.pbf --tag-filter accept-relations admin_level=6 --used-way --used-node --write-xml c:\osm\osmdata\county_boundaries\megye.osm
pause
Osmosis problémák
Sajnos e sorok írásakor az Osmosisban van egy hiba (nem kezeli az escape sequenceket, például %s = space karakter lenne) és nem tudtam megoldani az ékezetes karakterekre való szűrést sem. Ezért a space-t és az ékezetes karaktereket kézzel, a JOSM-ben eltávolítottam a határvonal kapcsolatokból. Az alábbiakban azonban a helyes működést feltételezve írtam a példákat.
Perl
Nem kell tudni programozni, csak az interpretert (ActivePerl) használni. Innen letölthető:
http://www.activestate.com/activeperl/downloads
Sajnos a poligon támogatás nincs benne a csomagban. Ez egy tar.gz fájlban innen letölthető:
http://search.cpan.org/dist/Math-Polygon/
Az ebben lévő lib\Math könyvtárat kell a Perl lib\Math könyvtárába másolni.
CLC Adatok méretre vágása
Letöltés
CLC adatok
http://w3m.hu/clc06_hu_resave.osm Ebből legutóbb hiányzott néhány version=1 paraméter. Ha még mindig ez a helyzet, notepaddel megnyitva pótolhatók a nem hibás bejegyzések alapján.
Magyarország a közigazgatási határokhoz
http://download.geofabrik.de/osm/europe/hungary.osm.pbf
Településhatárok kinyerése
Településhatárok kivágása
Osmosissal történik a pbf fájlból. Például:
call osmosis.bat --read-pbf c:\osm\osmdata\hungary.osm.pbf --tag-filter accept-relations admin_level=8 --used-way --used-node --write-xml c:\osm\osmdata\village_boundaries\villages.osm
call call osmosis.bat --read-xml c:\osm\osmdata\village_boundaries\villages.osm --tag-filter accept-relations name=Kisbodak --used-way --used-node --write-xml c:\osm\osmdata\village_boundaries\gyms\kisbodak.osm
Poligon fájl létrehozása a településhatárokból
az adatok darabolásához egy Perl szkript segítségével.
Perl szkript letöltése:
http://svn.ankh-morp.org:8080/osm/poly/osm2poly.pl
Az egyszerű szkriptet ki kellett javítani, hogy fájlba tudjon írni:
E helyett:
my $name = $file;
Ezt kell beírni:
open (MYFILE, '>>data.poly');
A végén pedig a megfelelő részbe ezt behelyettesíteni (lényegében print helyett print MYFILE, majd close (MYFILE)):
print MYFILE "$name\n";
foreach my $p (@poly) {
++$part_nr;
print MYFILE "", ($p->{outer} ? "" : "!"), "$part_nr\n";
foreach ($p->{poly}->points) {
printf MYFILE "\t%E\t%E\n", $_->[0], $_->[1];
}
print MYFILE "END\n";
}
print MYFILE "END\n";
close (MYFILE);
# END
Használata parancssoron történik:
osm2poly.pl c:\osm\osmdata\village_boundaries\kisbodak.osm
Ez egy data.poly nevű poligon fájlt hoz létre, amit még át kell nevezni kisbodak.poly-ra. Sajnos szerény tudásommal csak ennyit tudtam javítani a Perl szkripten.
CLC adatok kivágása
A fenti településhatárokkal történik. Példa:
call osmosis.bat --read-xml c:\osm\osmdata\clc\clc06_hu_resave.osm --bounding-polygon file=c:\osm\osmdata\village_boundaries\gyms\kisbodak.poly completeWays=no completeRelations=no
clipIncompleteEntities=true --write-xml c:\osm\osmdata\clc\gyms\kisbodak.osm
Importálás, Feldolgozás
Később
Utómunkálatok
Később