GLE-Postgis-Interne-Flurstückslisten: Unterschied zwischen den Versionen
(→View Eigentümer mit Anschrift) |
(→View Flurstück) |
||
Zeile 167: | Zeile 167: | ||
=== View Flurstück === | === View Flurstück === | ||
+ | |||
+ | Der View verknüpft Flurstück, Gemeinde und Gemarkung und sammelt alle relevanten Informationen für das Flurstück. | ||
+ | |||
+ | Die Zeilenumbrüche müssen unbedingt mitgenommen werden. | ||
+ | |||
+ | CREATE VIEW alkis_eigen.fstauszug_flurstueck AS | ||
+ | SELECT f.oid, | ||
+ | f.gml_id AS flurstueck_gml_id, | ||
+ | f.flurstueckskennzeichen, | ||
+ | CASE | ||
+ | WHEN f.abweichenderrechtszustand::text = 'true'::text THEN 'Abweichender Rechtszustand: | ||
+ | Durch ein Verfahren der Bodenordnung ist ein neuer Rechtszustand eingetreten, das amtliche Verzeichnis der ausführenden Stelle ist maßgebend. Dieser Nachweis entspricht nicht dem aktuellen Stand!'::text | ||
+ | ELSE ''::text | ||
+ | END AS abweichenderrechtszustand, | ||
+ | CASE | ||
+ | WHEN f.rechtsbehelfsverfahren::text = 'true'::text THEN 'Rechtsbehelfsverfahren: | ||
+ | Ein Rechtsbehelfsverfahren ist anhängig!'::text | ||
+ | ELSE ''::text | ||
+ | END AS rechtsbehelfsverfahren, | ||
+ | CASE | ||
+ | WHEN f.amtlicheflaeche < 1::double precision THEN round(f.amtlicheflaeche::numeric, 2)::text | ||
+ | ELSE ltrim(to_char(f.amtlicheflaeche, 'FM999G999G999'::text)) | ||
+ | END || ' m²'::text AS amtlicheflaeche, | ||
+ | gm.schluesselgesamt AS gemeinde_schluessel, | ||
+ | gm.bezeichnung AS gemeinde_name, | ||
+ | gk.schluesselgesamt AS gemarkung_schluessel, | ||
+ | gk.bezeichnung AS gemarkung_name, | ||
+ | f.flurnummer, | ||
+ | f.zaehler::text || COALESCE('/'::text || f.nenner::text, ''::text) AS flurstuecksnummer, | ||
+ | f.wkb_geometry | ||
+ | FROM alkis.ax_flurstueck f, | ||
+ | alkis.ax_gemeinde gm, | ||
+ | alkis.ax_gemarkung gk | ||
+ | WHERE f.endet IS NULL AND gm.endet IS NULL AND gk.endet IS NULL AND f.gemeindezugehoerigkeit_gemeinde::text = gm.gemeinde::text AND f.gemarkungsnummer::text = gk.gemarkungsnummer::text; | ||
=== View Grundbuchbezirk === | === View Grundbuchbezirk === |
Version vom 20. März 2020, 14:46 Uhr
Die Views werden in ein LK-eigenes Schema "alkis_eigen" gespeichert. Bei Bedarf ändern!
Inhaltsverzeichnis
View Buchung mit Eigentum
Der View verknüpft Flurstück, Buchungsstelle und Buchungsblatt und sammelt alle relevanten Informationen für die Buchung.
Die Zeilenumbrüche müssen unbedingt mitgenommen werden.
CREATE VIEW alkis_eigen.fstauszug_buchung_mit_eigentum AS SELECT foo.flurstueck_gml_id, foo.buchungsblatt_gml_id, regexp_replace(((foo.buchung || COALESCE(foo.anteil || ' '::text, ::text)) || COALESCE(foo.nraufteilungsplan || ' '::text, ::text)) || COALESCE(foo.buchungstext || ' '::text, ::text), '(^[\n\r]+)|([\n\r]+$)'::text, ::text, 'g'::text) AS buchung FROM ( SELECT f.gml_id AS flurstueck_gml_id, g.gml_id AS buchungsblatt_gml_id, ((((((((art.beschreibung::text || ': '::text) || b.bezeichnung::text) || ' '::text) || g.land::text) || g.bezirk::text) || '-'::text) || ltrim(g.buchungsblattnummermitbuchstabenerweiterung::text, '0'::text)) || ', Laufende Nummer '::text) || ltrim(s.laufendenummer::text, '0'::text) AS buchung, CASE WHEN s.zaehler <> 0::double precision THEN ( CASE WHEN s.zaehler = s.nenner THEN '(Anteil nicht ermittelbar)'::text ELSE ( CASE WHEN mod(s.zaehler::numeric, ceil(s.zaehler::numeric)) = 0::numeric THEN to_char(s.zaehler::integer, 'FM999G999G999'::text) ELSE replace(s.zaehler::text, '.'::text, ','::text) END || '/'::text) || CASE WHEN mod(s.nenner::numeric, ceil(s.nenner::numeric)) = 0::numeric THEN to_char(s.nenner::numeric, 'FM999G999G999G999'::text) ELSE replace(s.nenner::text, '.'::text, ','::text) END END || ' Miteigentumsanteil am Grundstück'::text) || COALESCE(' verbunden mit dem Sondereigentum an '::text || s.beschreibungdessondereigentums::text, ::text) ELSE ::text END AS anteil, ('Nr. '::text || s.nummerimaufteilungsplan::text) || ' laut Aufteilungsplan'::text AS nraufteilungsplan, 'Buchungstext: '::text || s.buchungstext::text AS buchungstext FROM alkis.ax_buchungsblatt g LEFT JOIN alkis.ax_buchungsblattbezirk b ON g.land::text = b.land::text AND g.bezirk::text = b.bezirk::text LEFT JOIN alkis.ax_buchungsstelle s ON s.istbestandteilvon = g.gml_id LEFT JOIN alkis.ax_flurstueck f ON f.istgebucht = s.gml_id OR (f.gml_id = ANY (s.verweistauf)) OR (f.istgebucht = ANY (s.an)) LEFT JOIN alkis.ax_buchungsart_buchungsstelle art ON s.buchungsart = art.wert WHERE g.blattart = 1000 AND f.endet IS NULL AND g.endet IS NULL AND b.endet IS NULL AND s.endet IS NULL ORDER BY g.bezirk::integer, g.buchungsblattnummermitbuchstabenerweiterung::integer, s.laufendenummer::integer) foo;
View Buchung ohne Eigentum
Der View verknüpft Flurstück, Buchungsstelle und Buchungsblatt und sammelt alle relevanten Informationen für die Buchung, wobei eigentumsrelevante Inhalte weggelassen werden.
Die Zeilenumbrüche müssen unbedingt mitgenommen werden.
CREATE VIEW alkis_eigen.fstauszug_buchung_ohne_eigentum AS SELECT f.gml_id AS flurstueck_gml_id, g.gml_id AS buchungsblatt_gml_id, ((((((((art.beschreibung::text || ': '::text) || b.bezeichnung::text) || ' '::text) || g.land::text) || g.bezirk::text) || '-'::text) || ltrim(g.buchungsblattnummermitbuchstabenerweiterung::text, '0'::text)) || ' Laufende Nummer '::text) || ltrim(s.laufendenummer::text, '0'::text) AS buchung FROM alkis.ax_buchungsblatt g LEFT JOIN alkis.ax_buchungsblattbezirk b ON g.land::text = b.land::text AND g.bezirk::text = b.bezirk::text LEFT JOIN alkis.ax_buchungsstelle s ON s.istbestandteilvon = g.gml_id LEFT JOIN alkis.ax_flurstueck f ON f.istgebucht = s.gml_id OR (f.gml_id = ANY (s.verweistauf)) OR (f.istgebucht = ANY (s.an)) LEFT JOIN alkis.ax_buchungsart_buchungsstelle art ON s.buchungsart = art.wert WHERE g.blattart = 1000 AND f.endet IS NULL AND g.endet IS NULL AND b.endet IS NULL AND s.endet IS NULL ORDER BY g.bezirk::integer, g.buchungsblattnummermitbuchstabenerweiterung::integer, s.laufendenummer::integer;
View Eigentümer mit Anschrift
Der View verknüpft Buchungsblatt, Namensnummer, Person und Anschrift und sammelt alle relevanten Informationen für das Eigentum. Ab der dritten belegten Stelle in der laufenden Namensnummer wird für jede belegte Stelle eine weitere Einrückung berechnet. Laufende Namensnummern können in der APK irrtümlich falsch geschrieben werden, z.B. "2,1". Die Abfrage versucht das abzufangen.
Die Zeilenumbrüche müssen unbedingt mitgenommen werden.
CREATE VIEW alkis_eigen.fstauszug_eigentuemer_anschrift AS SELECT foo2.buchungsblatt_gml_id, foo2.lfd || CASE WHEN foo2.eigentuemer IS NULL THEN ::text ELSE ' '::text || foo2.eigentuemer END AS eigentuemer FROM ( SELECT foo.buchungsblatt_gml_id, (foo.whitespace || foo.lfd) || COALESCE((' zu '::text || foo.anteil) || CASE WHEN foo.beschrieb IS NULL THEN ::text ELSE ':'::text END, ::text) AS lfd, ((((((((foo.whitespace || COALESCE(foo.akademischergrad::text || ' '::text, ::text)) || COALESCE(foo.vorname::text || ' '::text, ::text)) || foo.nachnameoderfirma::text) || COALESCE(foo.namensbestandteil, ::text)) || COALESCE(', '::text || foo.geburtsdaten, ::text)) || CASE WHEN foo.strasse IS NULL THEN ::text ELSE ' '::text END) || foo.whitespace) || COALESCE(foo.strasse::text || COALESCE(' '::text || foo.hausnummer::text, ::text), ::text)) || COALESCE(((((', '::text || foo.postleitzahlpostzustellung::text) || ' '::text) || foo.ort_post::text) || COALESCE(foo.ortsteil, ::text)) || COALESCE(', '::text || foo.bestimmungsland::text, ::text), ::text) AS eigentuemer FROM ( SELECT DISTINCT g.gml_id AS buchungsblatt_gml_id, COALESCE(n.laufendenummernachdin1421, '0'::character varying) AS order1, COALESCE(n.bestehtausrechtsverhaeltnissenzu, '0'::bpchar) AS order2, CASE WHEN COALESCE(NULLIF(n.beschriebderrechtsgemeinschaft::text, ::text), n.artderrechtsgemeinschaft::text) IS NULL OR n.bestehtausrechtsverhaeltnissenzu IS NULL THEN ::text ELSE ' '::text END || repeat(' '::text, ( CASE split_part(replace(n.laufendenummernachdin1421::text, ','::text, '.'::text), '.'::text, 3) WHEN '00'::text THEN 0 WHEN ::text THEN 0 ELSE 1 END + CASE split_part(replace(n.laufendenummernachdin1421::text, ','::text, '.'::text), '.'::text, 4) WHEN '00'::text THEN 0 WHEN ::text THEN 0 ELSE 1 END + CASE split_part(replace(n.laufendenummernachdin1421::text, ','::text, '.'::text), '.'::text, 5) WHEN '00'::text THEN 0 WHEN ::text THEN 0 ELSE 1 END + CASE split_part(replace(n.laufendenummernachdin1421::text, ','::text, '.'::text), '.'::text, 6) WHEN '00'::text THEN 0 WHEN ::text THEN 0 ELSE 1 END + CASE split_part(replace(n.laufendenummernachdin1421::text, ','::text, '.'::text), '.'::text, 7) WHEN '00'::text THEN 0 WHEN ::text THEN 0 ELSE 1 END + CASE split_part(replace(n.laufendenummernachdin1421::text, ','::text, '.'::text), '.'::text, 8) WHEN '00'::text THEN 0 WHEN ::text THEN 0 ELSE 1 END + CASE split_part(replace(n.laufendenummernachdin1421::text, ','::text, '.'::text), '.'::text, 9) WHEN '00'::text THEN 0 WHEN ::text THEN 0 ELSE 1 END) * 4) AS whitespace, COALESCE(NULLIF(n.beschriebderrechtsgemeinschaft::text, ::text), na.beschreibung::text) AS beschrieb, COALESCE(COALESCE(NULLIF(n.beschriebderrechtsgemeinschaft::text, ::text), na.beschreibung::text), CASE WHEN n.beschriebderrechtsgemeinschaft IS NULL AND n.artderrechtsgemeinschaft IS NULL THEN rtrim((((((((COALESCE(ltrim(split_part(n.laufendenummernachdin1421::text, '.'::text, 1), '0'::text), ::text) || COALESCE('.'::text || ltrim(split_part(n.laufendenummernachdin1421::text, '.'::text, 2), '0'::text), ::text)) || COALESCE('.'::text || ltrim(split_part(n.laufendenummernachdin1421::text, '.'::text, 3), '0'::text), ::text)) || COALESCE('.'::text || ltrim(split_part(n.laufendenummernachdin1421::text, '.'::text, 4), '0'::text), ::text)) || COALESCE('.'::text || ltrim(split_part(n.laufendenummernachdin1421::text, '.'::text, 5), '0'::text), ::text)) || COALESCE('.'::text || ltrim(split_part(n.laufendenummernachdin1421::text, '.'::text, 6), '0'::text), ::text)) || COALESCE('.'::text || ltrim(split_part(n.laufendenummernachdin1421::text, '.'::text, 7), '0'::text), ::text)) || COALESCE('.'::text || ltrim(split_part(n.laufendenummernachdin1421::text, '.'::text, 8), '0'::text), ::text)) || COALESCE('.'::text || ltrim(split_part(n.laufendenummernachdin1421::text, '.'::text, 9), '0'::text), ::text), '.'::text) ELSE NULL::text END) AS lfd, p.akademischergrad, p.vorname, p.nachnameoderfirma, COALESCE(', '::text || p.namensbestandteil::text, ::text) AS namensbestandteil, a.strasse, a.hausnummer, a.postleitzahlpostzustellung, a.ort_post, COALESCE(', OT '::text || a.ortsteil::text, ::text) AS ortsteil, a.bestimmungsland, COALESCE(('geb. '::text || p.geburtsname::text) || ' '::text, ::text) || to_char(p.geburtsdatum::timestamp with time zone, 'DD.MM.YYYY'::text) AS geburtsdaten, (( CASE WHEN mod(n.zaehler::numeric, ceil(n.zaehler::numeric)) = 0::numeric THEN to_char(n.zaehler::integer, 'FM999G999G999'::text) ELSE replace(n.zaehler::text, '.'::text, ','::text) END || '/'::text) || CASE WHEN mod(n.nenner::numeric, ceil(n.nenner::numeric)) = 0::numeric THEN to_char(n.nenner::numeric, 'FM999G999G999G999'::text) ELSE replace(n.nenner::text, '.'::text, ','::text) END) || ' Anteil'::text AS anteil FROM alkis.ax_buchungsblatt g LEFT JOIN alkis.ax_namensnummer n ON g.gml_id = n.istbestandteilvon LEFT JOIN alkis.ax_artderrechtsgemeinschaft_namensnummer na ON n.artderrechtsgemeinschaft = na.wert LEFT JOIN alkis.ax_person p ON n.benennt = p.gml_id LEFT JOIN alkis.ax_anschrift a ON a.gml_id = p.hat[1] WHERE g.blattart = 1000 AND g.endet IS NULL AND n.endet IS NULL AND p.endet IS NULL AND a.endet IS NULL ORDER BY COALESCE(n.laufendenummernachdin1421, '0'::character varying), COALESCE(n.bestehtausrechtsverhaeltnissenzu, '0'::bpchar)) foo) foo2;
View Flurstück
Der View verknüpft Flurstück, Gemeinde und Gemarkung und sammelt alle relevanten Informationen für das Flurstück.
Die Zeilenumbrüche müssen unbedingt mitgenommen werden.
CREATE VIEW alkis_eigen.fstauszug_flurstueck AS SELECT f.oid, f.gml_id AS flurstueck_gml_id, f.flurstueckskennzeichen, CASE WHEN f.abweichenderrechtszustand::text = 'true'::text THEN 'Abweichender Rechtszustand: Durch ein Verfahren der Bodenordnung ist ein neuer Rechtszustand eingetreten, das amtliche Verzeichnis der ausführenden Stelle ist maßgebend. Dieser Nachweis entspricht nicht dem aktuellen Stand!'::text ELSE ::text END AS abweichenderrechtszustand, CASE WHEN f.rechtsbehelfsverfahren::text = 'true'::text THEN 'Rechtsbehelfsverfahren: Ein Rechtsbehelfsverfahren ist anhängig!'::text ELSE ::text END AS rechtsbehelfsverfahren, CASE WHEN f.amtlicheflaeche < 1::double precision THEN round(f.amtlicheflaeche::numeric, 2)::text ELSE ltrim(to_char(f.amtlicheflaeche, 'FM999G999G999'::text)) END || ' m²'::text AS amtlicheflaeche, gm.schluesselgesamt AS gemeinde_schluessel, gm.bezeichnung AS gemeinde_name, gk.schluesselgesamt AS gemarkung_schluessel, gk.bezeichnung AS gemarkung_name, f.flurnummer, f.zaehler::text || COALESCE('/'::text || f.nenner::text, ::text) AS flurstuecksnummer, f.wkb_geometry FROM alkis.ax_flurstueck f, alkis.ax_gemeinde gm, alkis.ax_gemarkung gk WHERE f.endet IS NULL AND gm.endet IS NULL AND gk.endet IS NULL AND f.gemeindezugehoerigkeit_gemeinde::text = gm.gemeinde::text AND f.gemarkungsnummer::text = gk.gemarkungsnummer::text;