2011. július 19., kedd

Részterületek területének kiszámítása

Alapállapot:Zöld átlátszó poligon az erdőterület, szürke poligon zártkert.
Feladat: mekkora területet fed erdő a zártkert tömbből?

Lépések:
1. Közös területek megvágása (ST_INTERSECTION), ügyelve az esri és az ogc eltérő poligon értelmezésére (ST_BUFFER):
SELECT ST_INTERSECTION(ST_BUFFER(e.the_geom,0),ST_BUFFER(z.the_geom,0)) as the_geom,z.hrsz INTO zartkert_erdo FROM erdoreszlet.egyesitett as e,zartkert as z;
2. Az újonnan létrehozott táblához a terület oszlop hozzáadása, kitöltése és a méreten aluli (~20 m2) poligonok kivágása:
ALTER TABLE zartkert_erdo ADD COLUMN terulet double precision;
UPDATE zartkert_erdo SET terulet=ST_AREA(the_geom);
DELETE FROM zartkert_erdo WHERE terulet <20;

3. Az eredeti táblához a megfelelő területek összegeinek hozzáadása, az eredeti poligonok méretének kiszámítása és végül a kapott értékek osztása:
SELECT * INTO zartkert_modositott FROM zartkert LEFT JOIN (SELECT hrsz as h,sum(terulet) as er_t FROM zartkert_erdo GROUP BY h) as t ON t.h=zartkert.hrsz;
ALTER TABLE zartkert_modositott DROP COLUMN h;
UPDATE zartkert_modositott SET er_t=0 WHERE er_t IS NULL;
ALTER TABLE zartkert_modositott ADD COLUMN osszter double_precision;
UPDATE zartkert_erdo SET osszter=ST_AREA(the_geom);
ALTER TABLE zartkert_modositott ADD COLUMN er_t_szk integer;
UPDATE zartkert_modositott SET er_t_szk =er_t/osszter*100;


Az eredmény: A szürke poligonok területének ennyi százalékát teszik ki a beleérő zöld poligonok.


Nincsenek megjegyzések:

Megjegyzés küldése