2011. július 19., kedd

dxf linestring poligonizálása

Autocad hiányában nehéz kezelni a dxf fájlokat, az arcgis vagy az open source programok dxf olvasója meg nem azt az eredményt adja amit elvártak. A cél az, hogy a külterületi telkeket, helyrajzi számmal ellátva poligon shape formátumba kerüljenek.

UPDATE: Az első három lépés ogr2ogr paranccsal is valószínű elvégezhető (itt találtam leírást). (2011 07.23.)

Lépések:
1.) ogrinfo -al valami.dxf > valami.txt (ogrinfo parancs kimenetének fájlba írása)

2.) iso8859-2 formátumú text fájl átkonvertálása utf-8 formátumba (pl gedit mentés másként vagy iconv)

3.) text fájl feldolgozása, a rétegek külön text fájlokba iratása
Erre írtam egy egyszerű python scriptet

4.) feldolgozott txt fájlok adatbázis kezelőbe olvasása

5.) figyelve a Point és a LineString elemek különválogatására (ezek a shape fájlban nem lehetnek együtt), hozzáadom a postgis geometriát

6.) poligont hozok létre a földrészlet határból
SELECT (ST_DUMP(ST_POLYGONIZE(the_geom))).geom INTO poligon FROM linestring;

7.) ahol a helyrajziszám point feature van, ez alatt kell lenni egy poligonnak, ezt a kettőt összefűzöm
SELECT n.the_geom,t.hrsz INTO kesz FROM poligon as n,point as t WHERE ST_INTERSECTS(n.the_geom,t.the_geom)='t';

És elvileg kész is! Valójában nem ennyi, mert a helyrajzi szám pont shape több helyen 'elkószált', így nem jött létre poligon, illetve a dxf-ben szigorúan figyelembe kell(ene) venni a földrészlet határ mellett pl az alrészlethatár stb vonalait is, mert így egy poligonra több pont jut, ami miatt egy poligon több helyrajzi számon fog megjelenni.

Nincsenek megjegyzések:

Megjegyzés küldése