-
Notifications
You must be signed in to change notification settings - Fork 16
Kwaliteits controle kadastrale kaart
Een aantal ruimtelijke controles die uitgevoerd kunnen worden op de kadastrale percelen in de RSGB database. NB in deze voorbeelden gaan we uit van een Postgis versie van het RSGB schema.
Resultaten lijstjes uit onderstaande queries kunnen in bijvoorbeeld QGIS worden gevisualiseerd met een filter op de attribuutlijst:
Bijvoorbeeld:
"sc_kad_identif" in (
16250196370000,
16250196470000,
16250198170000,
16250219470000,
16250285670000,
16250295870000,
16250295970000,
16250316670000,
16250348070000,
16250354770000,
16250383670000,
16250383770000 )
-- check voor niet "well formed" perceel geometrie
-- resultaat: een lijst met percelen met een ongeldige geometrie
SELECT
sc_kad_identif
FROM
kad_perceel
WHERE NOT
ST_IsValid(begrenzing_perceel);
-- test of de punt geometrie van een perceel binnen de vlak geometrie valt
SELECT
sc_kad_identif
FROM
kad_perceel
WHERE NOT
ST_Within(plaatscoordinaten_perceel, begrenzing_perceel);
In de kadastrale kaart mogen geen overlappen voorkomen; de meest interessante resultaten zijn de significate overlappen.
-- zoek overlappende percelen, sorteer op overlappende oppervlakte
SELECT
k1.sc_kad_identif,k2.sc_kad_identif AS "overlapt met",
ST_Area(ST_Intersection(k1.begrenzing_perceel, k2.begrenzing_perceel)) "overlap oppervlakte m2"
FROM
kad_perceel k1,kad_perceel k2
WHERE
k1.sc_kad_identif < k2.sc_kad_identif AND
ST_Overlaps(k1.begrenzing_perceel, k2.begrenzing_perceel)
ORDER BY
"overlap oppervlakte m2" DESC;
Binnen het leveringsgebied mogen geen gaten in de kadastrale kaart voorkomen.
-- zoek percelen die raken aan een gat in de kaart
SELECT
sc_kad_identif
FROM
kad_perceel,
(SELECT ST_Difference(
(SELECT ST_ConcaveHull(ST_Union(begrenzing_perceel), 0.99, false) FROM kad_perceel),
(SELECT ST_Union(begrenzing_perceel) FROM kad_perceel)
) AS geom) AS "raakt aan gat"
WHERE
ST_Touches("raakt aan gat".geom, kad_perceel.begrenzing_perceel);
Het is mogelijk dat bovenstaande query te zwaar is, in dat geval kunnen stapsgewijs het omhullende, bevattende en verschil/gaten vlak worden uitgerekend. Deze zijn ook handig voor de visualisatie.
-- schema+tabel aanmaken voor de tussen resultaten
CREATE SCHEMA test AUTHORIZATION brmo;
GRANT ALL ON SCHEMA test TO brmo;
GRANT ALL ON SCHEMA test TO public;
CREATE TABLE test.testresultaat
(
descr character varying(255),
geom geometry(MultiPolygon,28992),
CONSTRAINT testresultaat_descr_key UNIQUE (descr)
)
WITH (
OIDS=TRUE
);
ALTER TABLE test.testresultaat OWNER TO brmo;
INSERT INTO
test.testresultaat(descr, geom)
VALUES (
'bevattende',
(SELECT ST_Multi(ST_Union(begrenzing_perceel)) FROM kad_perceel)
);
INSERT INTO
test.testresultaat(descr, geom)
VALUES (
'omhullende',
(SELECT ST_Multi(ST_ConcaveHull(ST_Union(begrenzing_perceel),.99,false)) FROM kad_perceel)
);
INSERT INTO
test.testresultaat(descr, geom)
VALUES (
'gaten',
(SELECT ST_Difference(
(SELECT ST_ConcaveHull(ST_Union(begrenzing_perceel),0.99,false) FROM kad_perceel),
(SELECT ST_Union(begrenzing_perceel) FROM kad_perceel)
))
);
of
INSERT INTO
test.testresultaat(descr, geom)
VALUES (
'gaten',
(SELECT ST_Difference(
(SELECT geom FROM test.testresultaat WHERE descr='omhullende'),
(SELECT geom FROM test.testresultaat WHERE descr='bevattende')
))
);
Dit werk valt onder een Creative Commons Naamsvermelding-GelijkDelen 2.0 Nederland-licentie.