Index: trunk/data/konvert/postnas_0.6/sichten.sql =================================================================== --- trunk/data/konvert/postnas_0.6/sichten.sql (revision 139) +++ trunk/data/konvert/postnas_0.6/sichten.sql (revision 140) @@ -6,4 +6,6 @@ -- 2011-07-25 PostNAS 06, Umbenennung +-- 2011-10-20 Nummer NebengebÀude und Zuordnungspfeile fuer GebÀude ##### IN ARBEIT +-- 2011-12-08 umbenannt "gemeinde_in_gemarkung" -> "gemarkung_in_gemeinde" -- ----------------------------------------- @@ -27,6 +29,4 @@ -- Die FlurstÃŒcksnummer fehlt dann im WMS. -- Die Bedingung vorÃŒbergehend heraus nehmen. Ursache klÀren! - --- 4.11.2011 Sichten fÃŒr die Grenzen aus der Tabelle ax_besondereflurstuecksgrenze Astrid Emde @@ -78,4 +78,27 @@ +-- Layer "ag_t_nebengeb" +-- --------------------- + +CREATE OR REPLACE VIEW s_nummer_nebengebaeude +AS + SELECT ap_pto.ogc_fid, + ap_pto.wkb_geometry, + ap_pto.drehwinkel * 57.296 AS drehwinkel, -- umn: ANGLE [drehwinkel] + -- alkis_beziehungen.beziehungsart, -- TEST + -- ax_lagebezeichnungmitpseudonummer.pseudonummer, -- die HsNr des zugehoerigen Hauptgebaeudes + ax_lagebezeichnungmitpseudonummer.laufendenummer -- umn: LABELITEM - die laufende Nummer des Nebengebaeudes + FROM ap_pto + JOIN alkis_beziehungen + ON ap_pto.gml_id = alkis_beziehungen.beziehung_von + JOIN ax_lagebezeichnungmitpseudonummer + ON alkis_beziehungen.beziehung_zu = ax_lagebezeichnungmitpseudonummer.gml_id + WHERE alkis_beziehungen.beziehungsart = 'dientZurDarstellungVon' +; + +COMMENT ON VIEW s_nummer_nebengebaeude IS 'fuer Kartendarstellung: Hausnummern NebengebÀude'; + +-- ToDo: Die Zahl in Klammern setzen ? (in Map oder View?) + -- Layer "ag_p_flurstueck" @@ -140,4 +163,86 @@ COMMENT ON VIEW s_beschriftung IS 'ap_pto, die noch nicht in anderen Layern angezeigt werden'; + + +BAUSTELLE + + +-- Layer "s_zuordungspfeil_gebaeude" +-- ----------------------------------- + +CREATE OR REPLACE VIEW s_zuordungspfeil_gebaeude +AS + SELECT ap_lpo.ogc_fid, + -- alkis_beziehungen.beziehungsart, -- TEST + -- ap_lpo.art, -- TEST + ap_lpo.wkb_geometry + FROM ap_lpo + JOIN alkis_beziehungen + ON ap_lpo.gml_id = alkis_beziehungen.beziehung_von + JOIN ax_gebaeude + ON alkis_beziehungen.beziehung_zu = ax_gebaeude.gml_id + WHERE ap_lpo.art = 'Pfeil' + AND alkis_beziehungen.beziehungsart = 'dientZurDarstellungVon'; + +COMMENT ON VIEW s_zuordungspfeil_gebaeude IS 'fuer Kartendarstellung'; + + +-- Sichten vom OBK (Oberbergischer Kreis) zu "Grenzen" +-- --------------------------------------------------- +-- Schema "alkis" daraus entfernt. + +-- Feld "ax_besondereflurstuecksgrenze.artderflurstuecksgrenze" als Array "integer[]" ! +-- Anpassung Schema 18.09.2011 + +CREATE OR REPLACE VIEW sk2022_gemeindegrenze +AS + SELECT gemg.ogc_fid, gemg.wkb_geometry + FROM ax_besondereflurstuecksgrenze gemg + WHERE (7106 = ANY (gemg.artderflurstuecksgrenze)) + AND gemg.advstandardmodell ~~ 'DLKM'::text; + + +CREATE OR REPLACE VIEW sk2020_regierungsbezirksgrenze +AS + SELECT rbg.ogc_fid, rbg.wkb_geometry + FROM ax_besondereflurstuecksgrenze rbg + WHERE (7103 = ANY (rbg.artderflurstuecksgrenze)) + AND rbg.advstandardmodell ~~ 'DLKM'::text; + + +CREATE OR REPLACE VIEW sk2018_bundeslandgrenze +AS + SELECT blg.ogc_fid, blg.wkb_geometry + FROM ax_besondereflurstuecksgrenze blg + WHERE (7102 = ANY (blg.artderflurstuecksgrenze)) + AND blg.advstandardmodell ~~ 'DLKM'::text; + + +CREATE OR REPLACE VIEW sk2014_gemarkungsgrenze +AS + SELECT gemag.ogc_fid, gemag.wkb_geometry + FROM ax_besondereflurstuecksgrenze gemag + WHERE (7003 = ANY (gemag.artderflurstuecksgrenze)) + AND gemag.advstandardmodell ~~ 'DLKM'::text; + + +--CREATE OR REPLACE VIEW sk2012_flurgrenze +--AS +-- SELECT fg.ogc_fid, fg.wkb_geometry +-- FROM ax_besondereflurstuecksgrenze fg +-- WHERE (3000 = ANY (fg.artderflurstuecksgrenze)) +-- AND fg.advstandardmodell ~~ 'DLKM'::text; + +-- Vorlaeufig, bis Schema umgestellt ist + +CREATE OR REPLACE VIEW sk2012_flurgrenze +AS + SELECT fg.ogc_fid, fg.wkb_geometry + FROM ax_besondereflurstuecksgrenze fg + WHERE (3000 = fg.artderflurstuecksgrenze) + AND fg.advstandardmodell ~~ 'DLKM'::text; + +-- comment .... + -- ------------------------------------------ @@ -240,5 +345,7 @@ -- Nur durch Auswertung der FlurstÃŒcke kann man ermitteln, in welcher Gemeinde eine Gemarkung liegt. -CREATE OR REPLACE VIEW gemeinde_in_gemarkung +-- 2011-12-08 umbenannt + +CREATE OR REPLACE VIEW gemarkung_in_gemeinde AS SELECT DISTINCT land, regierungsbezirk, kreis, gemeinde, gemarkungsnummer @@ -247,5 +354,5 @@ ; -COMMENT ON VIEW gemeinde_in_gemarkung IS 'Welche Gemarkung liegt in welcher Gemeinde? Durch Verweise aus FlurstÃŒck.'; +COMMENT ON VIEW gemarkung_in_gemeinde IS 'Welche Gemarkung liegt in welcher Gemeinde? Durch Verweise aus FlurstÃŒck.'; @@ -481,30 +588,4 @@ ; --- --- Sichten fÃŒr Grenzen aus ax_besondereflurstuecksgrenze --- --- Select distinct artderflurstuecksgrenze from ax_besondereflurstuecksgrenze -Create view grenze_flur_3000 as -Select ogc_fid, artderflurstuecksgrenze, wkb_geometry from ax_besondereflurstuecksgrenze -where 3000 = ANY(artderflurstuecksgrenze); - -Create view grenze_gemarkung_7003 as -Select ogc_fid, artderflurstuecksgrenze, wkb_geometry from ax_besondereflurstuecksgrenze -where 7003 = ANY(artderflurstuecksgrenze); - - -Create view grenze_regierungsbezirk_7103 as -Select ogc_fid, artderflurstuecksgrenze, wkb_geometry from ax_besondereflurstuecksgrenze -where 7103 = ANY(artderflurstuecksgrenze); - -Create view grenze_landkreisgrenze_7104 as -Select ogc_fid, artderflurstuecksgrenze, wkb_geometry from ax_besondereflurstuecksgrenze -where 7104 = ANY(artderflurstuecksgrenze); - - -Create view grenze_gemeinde_7106 as -Select ogc_fid, artderflurstuecksgrenze, wkb_geometry from ax_besondereflurstuecksgrenze -where 7106 = ANY(artderflurstuecksgrenze); - -- END -- Index: trunk/data/konvert/postnas_0.6/gemeinden_laden.sql =================================================================== --- trunk/data/konvert/postnas_0.6/gemeinden_laden.sql (revision 139) +++ trunk/data/konvert/postnas_0.6/gemeinden_laden.sql (revision 140) @@ -14,9 +14,11 @@ --- Teil 2: Laden der Tabelle +-- Teil 2: Laden der Tabellen -- Stand -- 2011-07-25 PostNAS 06, Umbenennung +-- 2011-12-08 Person -> Gemeinde + SET client_encoding = 'UTF-8'; @@ -58,3 +60,36 @@ + +-- ======================================================= +-- Tabelle fuer die Zuordnung vom Eigentümern zu Gemeinden +-- ======================================================= + + +-- erst mal sauber machen +DELETE FROM gemeinde_person; + +-- alle direkten Buchungen mit View ermitteln und in Tabelle speichern +-- Für eine Stadt: ca. 20 Sekunden +INSERT INTO gemeinde_person + (land, regierungsbezirk, kreis, gemeinde, person, buchtyp) + SELECT land, regierungsbezirk, kreis, gemeinde, person, 1 + FROM gemeinde_person_typ1; + + +-- noch die komplexeren Buchungen ergänzen (Recht an ..) +-- Mit View ermitteln und in Tabelle speichern +-- Für eine Stadt: ca. 10 Sekunden +INSERT INTO gemeinde_person + ( land, regierungsbezirk, kreis, gemeinde, person, buchtyp) + SELECT q.land, q.regierungsbezirk, q.kreis, q.gemeinde, q.person, 2 + FROM gemeinde_person_typ2 q -- Quelle + LEFT JOIN gemeinde_person z -- Ziel + ON q.person = z.person -- Aber nur, wenn dieser Fall im Ziel + AND q.land = z.land + AND q.regierungsbezirk = z.regierungsbezirk + AND q.kreis = z.kreis + AND q.gemeinde = z.gemeinde + WHERE z.gemeinde is Null; -- .. noch nicht vorhanden ist + + -- ENDE -- Index: trunk/data/konvert/postnas_0.6/gemeinden_definition.sql =================================================================== --- trunk/data/konvert/postnas_0.6/gemeinden_definition.sql (revision 139) +++ trunk/data/konvert/postnas_0.6/gemeinden_definition.sql (revision 140) @@ -1,4 +1,23 @@ -- ALKIS PostNAS 0.6 + + +-- Teil 1: Anlegen der Tabellen + + +-- Stand + +-- 2011-07-25 PostNAS 06, Umbenennung +-- 2011-12-08 Person -> Gemeinde + +SET client_encoding = 'UTF-8'; + +-- Alles auf Anfang! + +-- DROP VIEW gemeinde_person_typ1; +-- DROP VIEW gemeinde_person_typ2; + +-- DROP TABLE gemeinde_gemarkung; + -- ======================================================= @@ -12,18 +31,4 @@ -- Da nicht stÀndig mit 'SELECT DISTINCT' sÀmtliche FlurstÃŒcke durchsucht werden können, -- muss diese Information als (redundante) Tabelle nach dem Laden zwischengespeichert werden. - - --- Teil 1: Anlegen der Tabelle - --- Stand - --- 2011-07-25 PostNAS 06, Umbenennung - - -SET client_encoding = 'UTF-8'; - --- Alles auf Anfang! - -DROP TABLE gemeinde_gemarkung; CREATE TABLE gemeinde_gemarkung ( @@ -45,2 +50,148 @@ COMMENT ON COLUMN gemeinde_gemarkung.gkz IS 'Gemeindekennziffer fÃŒr Mandant'; + + +-- ======================================================= +-- Tabelle fuer die Zuordnung vom EigentÃŒmern zu Gemeinden +-- ======================================================= + +-- Die Feststellung, ob eine Person (Mit-) EigentÃŒmer von mindestens einem +-- FlurstÃŒck in einer Gemeinde ist, geht ÃŒber viele Relationen. +-- Dabei kann es mehrere Varianten geben. +-- Dies sollte nach dem Laden ermittelt und gespeichert werden, damit dies in +-- der Navigation auf einfache Art verwendet werden kann. + + +-- DROP TABLE gemeinde_person; + +CREATE TABLE gemeinde_person ( + land integer, + regierungsbezirk integer, + kreis integer, + gemeinde integer, + person character varying(16), + buchtyp integer, + CONSTRAINT gemeinde_person_pk PRIMARY KEY (gemeinde, person) +); + + +COMMENT ON TABLE gemeinde_person IS 'Person ist EigentÃŒmer von mindestens einem FlurstÃŒck in der Gemeinde'; +COMMENT ON COLUMN gemeinde_person.gemeinde IS 'Gemeindenummer'; +COMMENT ON COLUMN gemeinde_person.buchtyp IS 'Typ der Buchung 1=direkt, 2=Recht einer Buchungsstele an andere Buchungsstelle'; +COMMENT ON COLUMN gemeinde_person.person IS 'gml_id von Person'; + +-- Index zum Filtern in der Buchauskunft +CREATE INDEX person_gemeinde ON gemeinde_person (person, gemeinde); + + +-- ======================================================= +-- VIEWs fuer die Zuordnung vom EigentÃŒmern zu Gemeinden +-- ======================================================= + +-- "Normale" Buchungen + +CREATE VIEW gemeinde_person_typ1 +AS + SELECT DISTINCT + p.gml_id AS person, + g.land, g.regierungsbezirk, g.kreis, g.gemeinde + + FROM ax_person p + +-- Person < benennt < Namensnummer + JOIN alkis_beziehungen bpn ON bpn.beziehung_zu = p.gml_id -- Bez. Person - Nummer + JOIN ax_namensnummer n ON bpn.beziehung_von = n.gml_id + +-- Namensnummer > istBestandteilVon > Blatt + JOIN alkis_beziehungen bnb ON bnb.beziehung_von = n.gml_id -- Bez. Nummer - Blatt + JOIN ax_buchungsblatt b ON bnb.beziehung_zu = b.gml_id + +-- Blatt < istBestandteilVon < buchungsStelle + JOIN alkis_beziehungen bbg ON bbg.beziehung_zu = b.gml_id -- Bez. Blatt - Stelle + JOIN ax_buchungsstelle s ON bbg.beziehung_von = s.gml_id + +-- buchungsStelle < istGebucht < flurstÃŒck + JOIN alkis_beziehungen bsf ON bsf.beziehung_zu = s.gml_id -- Bez. Stelle - FlurstÃŒck + JOIN ax_flurstueck f ON bsf.beziehung_von = f.gml_id + + JOIN ax_gemarkung k ON f.land = k.land + AND f.gemarkungsnummer = k.gemarkungsnummer + JOIN gemeinde_gemarkung g ON k.gemarkungsnummer = g.gemarkung + + WHERE bpn.beziehungsart = 'benennt' + AND bnb.beziehungsart = 'istBestandteilVon' + AND bbg.beziehungsart = 'istBestandteilVon' + AND bsf.beziehungsart = 'istGebucht' +; + +COMMENT ON VIEW gemeinde_person_typ1 IS 'Personen die EigentÃŒmer vom FlurstÃŒcken in einer Gemeinde sind. Typ1 = nomale Buchungen mit direkter Beziehung.'; + + +-- "Komplexe" Buchungen mit Rechten von Buchungen an Buchungen + +CREATE VIEW gemeinde_person_typ2 +AS + SELECT DISTINCT + p.gml_id AS person, + --bpn.beziehungsart AS bpnbez, + --bnb.beziehungsart AS bnbbez, + --bbg.beziehungsart AS bbgbez, + --bsf.beziehungsart AS bsfbez, + --k.gemarkungsnummer, + g.land, g.regierungsbezirk, g.kreis, g.gemeinde + + FROM ax_person p + +-- Person < benennt < Namensnummer + JOIN alkis_beziehungen bpn ON bpn.beziehung_zu = p.gml_id -- Bez. Person - Nummer + JOIN ax_namensnummer n ON bpn.beziehung_von = n.gml_id + +-- Namensnummer > istBestandteilVon > Blatt + JOIN alkis_beziehungen bnb ON bnb.beziehung_von = n.gml_id -- Bez. Nummer - Blatt + JOIN ax_buchungsblatt b ON bnb.beziehung_zu = b.gml_id + +-- Blatt < istBestandteilVon < buchungsStelle1 + JOIN alkis_beziehungen bbg ON bbg.beziehung_zu = b.gml_id -- Bez. Blatt - Stelle + JOIN ax_buchungsstelle s1 ON bbg.beziehung_von = s1.gml_id + +-- buchungsStelle2 < an < buchungsStelle1 + JOIN alkis_beziehungen bss ON bss.beziehung_von = s1.gml_id -- Bez. Stelle - Stelle + JOIN ax_buchungsstelle s2 ON bss.beziehung_zu = s2.gml_id + +-- buchungsStelle2 < istGebucht < flurstÃŒck + JOIN alkis_beziehungen bsf ON bsf.beziehung_zu = s2.gml_id -- Bez. Stelle - FlurstÃŒck + JOIN ax_flurstueck f ON bsf.beziehung_von = f.gml_id + + JOIN ax_gemarkung k ON f.land = k.land + AND f.gemarkungsnummer = k.gemarkungsnummer + JOIN gemeinde_gemarkung g ON k.gemarkungsnummer = g.gemarkung + + WHERE bpn.beziehungsart = 'benennt' + AND bnb.beziehungsart = 'istBestandteilVon' + AND bbg.beziehungsart = 'istBestandteilVon' + AND bss.beziehungsart = 'an' + AND bsf.beziehungsart = 'istGebucht' + -- LIMIT 100 -- Test-Option +; + +COMMENT ON VIEW gemeinde_person_typ2 IS 'Personen die EigentÃŒmer vom FlurstÃŒcken in einer Gemeinde sind. Typ2 = Buchungen mit Rechten einer Buchungssstelle an einer anderen.'; + + +-- Statistik ÃŒber die Buchungs-Typen je Gemeinde +CREATE VIEW gemeinde_person_statistik +AS + SELECT p.land, p.regierungsbezirk, p.kreis, p.gemeinde, g.gemeindename, p.buchtyp, count(p.person) as personen + FROM gemeinde_person p + JOIN gemeinde_gemarkung g + ON p.land = g.land + AND p.regierungsbezirk = g.regierungsbezirk + AND p.kreis = g.kreis + AND p.gemeinde = g.gemeinde + GROUP BY p.land, p.regierungsbezirk, p.kreis, p.gemeinde, g.gemeindename, p.buchtyp + ORDER BY p.land, p.regierungsbezirk, p.kreis, p.gemeinde, p.buchtyp +; + +COMMENT ON VIEW gemeinde_person_statistik IS 'ZÀhlen der Personen je Gemeinde und Buchungstyp'; + + +-- ENDE -- Index: trunk/data/konvert/postnas_0.6/gemeinde_person.sql =================================================================== --- trunk/data/konvert/postnas_0.6/gemeinde_person.sql (revision 140) +++ trunk/data/konvert/postnas_0.6/gemeinde_person.sql (revision 140) @@ -0,0 +1,197 @@ + +-- Neue Tabelle "gemeinde_person" definieren UND laden. +-- +-- Zusammenfassung der neuen Teile aus 2 Dateien zum Nachtragen in vorhandene Datenbanken +-- +-- Laufzeit +-- für eine Stadt ca. 1 Minute +-- für ein Kreisgebiet ca. 10 Minuten + + +-- ** aus gemeinden_definition.sql + +-- ======================================================= +-- Tabelle fuer die Zuordnung vom Eigentümern zu Gemeinden +-- ======================================================= + +-- Die Feststellung, ob eine Person (Mit-) Eigentümer von mindestens einem +-- Flurstück in einer Gemeinde ist, geht über viele Relationen. +-- Dabei kann es mehrere Varianten geben. +-- Dies sollte nach dem Laden ermittelt und gespeichert werden, damit dies in +-- der Navigation auf einfache Art verwendet werden kann. + + +-- DROP TABLE gemeinde_person; + +CREATE TABLE gemeinde_person ( + land integer, + regierungsbezirk integer, + kreis integer, + gemeinde integer, + person character varying(16), + buchtyp integer, + CONSTRAINT gemeinde_person_pk PRIMARY KEY (gemeinde, person) +); + + +COMMENT ON TABLE gemeinde_person IS 'Person ist Eigentümer von mindestens einem Flurstück in der Gemeinde'; +COMMENT ON COLUMN gemeinde_person.gemeinde IS 'Gemeindenummer'; +COMMENT ON COLUMN gemeinde_person.buchtyp IS 'Typ der Buchung 1=direkt, 2=Recht einer Buchungsstele an andere Buchungsstelle'; +COMMENT ON COLUMN gemeinde_person.person IS 'gml_id von Person'; + +-- Index zum Filtern in der Buchauskunft +CREATE INDEX person_gemeinde ON gemeinde_person (person, gemeinde); + + +-- ======================================================= +-- VIEWs fuer die Zuordnung vom Eigentümern zu Gemeinden +-- ======================================================= + +-- "Normale" Buchungen + +CREATE VIEW gemeinde_person_typ1 +AS + SELECT DISTINCT + p.gml_id AS person, + g.land, g.regierungsbezirk, g.kreis, g.gemeinde + + FROM ax_person p + +-- Person < benennt < Namensnummer + JOIN alkis_beziehungen bpn ON bpn.beziehung_zu = p.gml_id -- Bez. Person - Nummer + JOIN ax_namensnummer n ON bpn.beziehung_von = n.gml_id + +-- Namensnummer > istBestandteilVon > Blatt + JOIN alkis_beziehungen bnb ON bnb.beziehung_von = n.gml_id -- Bez. Nummer - Blatt + JOIN ax_buchungsblatt b ON bnb.beziehung_zu = b.gml_id + +-- Blatt < istBestandteilVon < buchungsStelle + JOIN alkis_beziehungen bbg ON bbg.beziehung_zu = b.gml_id -- Bez. Blatt - Stelle + JOIN ax_buchungsstelle s ON bbg.beziehung_von = s.gml_id + +-- buchungsStelle < istGebucht < flurstück + JOIN alkis_beziehungen bsf ON bsf.beziehung_zu = s.gml_id -- Bez. Stelle - Flurstück + JOIN ax_flurstueck f ON bsf.beziehung_von = f.gml_id + + JOIN ax_gemarkung k ON f.land = k.land + AND f.gemarkungsnummer = k.gemarkungsnummer + JOIN gemeinde_gemarkung g ON k.gemarkungsnummer = g.gemarkung + + WHERE bpn.beziehungsart = 'benennt' + AND bnb.beziehungsart = 'istBestandteilVon' + AND bbg.beziehungsart = 'istBestandteilVon' + AND bsf.beziehungsart = 'istGebucht' +; + +COMMENT ON VIEW gemeinde_person_typ1 IS 'Personen die Eigentümer vom Flurstücken in einer Gemeinde sind. Typ1 = nomale Buchungen mit direkter Beziehung.'; + + +-- "Komplexe" Buchungen mit Rechten von Buchungen an Buchungen + +CREATE VIEW gemeinde_person_typ2 +AS + SELECT DISTINCT + p.gml_id AS person, + --bpn.beziehungsart AS bpnbez, + --bnb.beziehungsart AS bnbbez, + --bbg.beziehungsart AS bbgbez, + --bsf.beziehungsart AS bsfbez, + --k.gemarkungsnummer, + g.land, g.regierungsbezirk, g.kreis, g.gemeinde + + FROM ax_person p + +-- Person < benennt < Namensnummer + JOIN alkis_beziehungen bpn ON bpn.beziehung_zu = p.gml_id -- Bez. Person - Nummer + JOIN ax_namensnummer n ON bpn.beziehung_von = n.gml_id + +-- Namensnummer > istBestandteilVon > Blatt + JOIN alkis_beziehungen bnb ON bnb.beziehung_von = n.gml_id -- Bez. Nummer - Blatt + JOIN ax_buchungsblatt b ON bnb.beziehung_zu = b.gml_id + +-- Blatt < istBestandteilVon < buchungsStelle1 + JOIN alkis_beziehungen bbg ON bbg.beziehung_zu = b.gml_id -- Bez. Blatt - Stelle + JOIN ax_buchungsstelle s1 ON bbg.beziehung_von = s1.gml_id + +-- buchungsStelle2 < an < buchungsStelle1 + JOIN alkis_beziehungen bss ON bss.beziehung_von = s1.gml_id -- Bez. Stelle - Stelle + JOIN ax_buchungsstelle s2 ON bss.beziehung_zu = s2.gml_id + +-- buchungsStelle2 < istGebucht < flurstück + JOIN alkis_beziehungen bsf ON bsf.beziehung_zu = s2.gml_id -- Bez. Stelle - Flurstück + JOIN ax_flurstueck f ON bsf.beziehung_von = f.gml_id + + JOIN ax_gemarkung k ON f.land = k.land + AND f.gemarkungsnummer = k.gemarkungsnummer + JOIN gemeinde_gemarkung g ON k.gemarkungsnummer = g.gemarkung + + WHERE bpn.beziehungsart = 'benennt' + AND bnb.beziehungsart = 'istBestandteilVon' + AND bbg.beziehungsart = 'istBestandteilVon' + AND bss.beziehungsart = 'an' + AND bsf.beziehungsart = 'istGebucht' + -- LIMIT 100 -- Test-Option +; + +COMMENT ON VIEW gemeinde_person_typ2 IS 'Personen die Eigentümer vom Flurstücken in einer Gemeinde sind. Typ2 = Buchungen mit Rechten einer Buchungssstelle an einer anderen.'; + + +-- Statistik über die Buchungs-Typen je Gemeinde +CREATE VIEW gemeinde_person_statistik +AS + SELECT p.land, p.regierungsbezirk, p.kreis, p.gemeinde, g.gemeindename, p.buchtyp, count(p.person) as personen + FROM gemeinde_person p + JOIN gemeinde_gemarkung g + ON p.land = g.land + AND p.regierungsbezirk = g.regierungsbezirk + AND p.kreis = g.kreis + AND p.gemeinde = g.gemeinde + GROUP BY p.land, p.regierungsbezirk, p.kreis, p.gemeinde, g.gemeindename, p.buchtyp + ORDER BY p.land, p.regierungsbezirk, p.kreis, p.gemeinde, p.buchtyp +; + +COMMENT ON VIEW gemeinde_person_statistik IS 'Zählen der Personen je Gemeinde und Buchungstyp'; + + + +-- ** aus gemeinden_laden.sql + + +-- ======================================================= +-- Tabelle fuer die Zuordnung vom Eigentümern zu Gemeinden +-- ======================================================= + + +-- erst mal sauber machen +DELETE FROM gemeinde_person; + +-- alle direkten Buchungen mit View ermitteln und in Tabelle speichern +-- Für eine Stadt: ca. 20 Sekunden +INSERT INTO gemeinde_person + (land, regierungsbezirk, kreis, gemeinde, person, buchtyp) + SELECT land, regierungsbezirk, kreis, gemeinde, person, 1 + FROM gemeinde_person_typ1; + + +-- noch die komplexeren Buchungen ergänzen (Recht an ..) +-- Mit View ermitteln und in Tabelle speichern +-- Für eine Stadt: ca. 10 Sekunden +INSERT INTO gemeinde_person + ( land, regierungsbezirk, kreis, gemeinde, person, buchtyp) + SELECT q.land, q.regierungsbezirk, q.kreis, q.gemeinde, q.person, 2 + FROM gemeinde_person_typ2 q -- Quelle + LEFT JOIN gemeinde_person z -- Ziel + ON q.person = z.person -- Aber nur, wenn dieser Fall im Ziel + AND q.land = z.land + AND q.regierungsbezirk = z.regierungsbezirk + AND q.kreis = z.kreis + AND q.gemeinde = z.gemeinde + WHERE z.gemeinde is Null; -- .. noch nicht vorhanden ist + + +-- Berechtigungen + +-- GRANT SELECT ON TABLE ... + + +-- ENDE -- Index: trunk/data/mapbender/conf/alkisnav_conf.php =================================================================== --- trunk/data/mapbender/conf/alkisnav_conf.php (revision 139) +++ trunk/data/mapbender/conf/alkisnav_conf.php (revision 140) @@ -1,8 +1,9 @@ = PostNAS 0.6 - $nr=$row["lage"]; - } + $nr=$row["lage"]; if ($showParent) { Index: trunk/data/mapbender/http/nav/alkisnav_grd.php =================================================================== --- trunk/data/mapbender/http/nav/alkisnav_grd.php (revision 139) +++ trunk/data/mapbender/http/nav/alkisnav_grd.php (revision 140) @@ -1,12 +1,8 @@ Anwender */ p.dbg {font-size: 10px; color: gray;} /* Debug -> Entwickler */ @@ -21,5 +22,5 @@ div {margin: 0px; padding: 0px;} div.back {font-size: 10px; color: gray; border-bottom: 1px dotted gray;} -div.nam {color: maroon;} /* Name */ +/* div.nam {color: maroon;} Name */ div.ga {color: fuchsia; margin-left: 0px; margin-top: 6px;} /* GB-Amtsgericht */ div.gm {color: green; margin-left: 0px; margin-top: 6px;} /* Gemeinde */ Index: trunk/data/mapbender/http/nav/alkisnav_fls.php =================================================================== --- trunk/data/mapbender/http/nav/alkisnav_fls.php (revision 139) +++ trunk/data/mapbender/http/nav/alkisnav_fls.php (revision 140) @@ -1,9 +1,4 @@ Fehler bei der Verbindung zur Datenbank
".$dbname.$dbvers.$gkz); -// ToDo: Buchung zwischen Blatt und Flst? ?> @@ -39,5 +39,5 @@ // Eigentuemer nach Name(-nsanfang) // =============================== - global $gkz, $gemeinde, $epsg, $con, $name, $person, $gb; + global $gkz, $gemeinde, $epsg, $con, $name, $person, $gb, $gfilter, $persfilter, $auskpath; $linelimit=120; $arr = explode(",", $name); @@ -49,5 +49,4 @@ $match = trim($name0)."%"; } - if(preg_match("/\*/",$name1)){ $match1 = trim(preg_replace("/\*/i","%", strtoupper($name1))); @@ -56,15 +55,26 @@ } - $sql ="SELECT p.nachnameoderfirma, p.vorname, p.gml_id FROM ax_person as p "; + $sql ="SELECT p.nachnameoderfirma, p.vorname, p.gml_id FROM ax_person p "; + + if ($persfilter and ($gfilter > 0)) { + $sql.="JOIN gemeinde_person g ON p.gml_id = g.person WHERE "; + switch ($gfilter) { + case 1: // Einzelwert + $sql.="g.gemeinde=".$gemeinde." AND "; break; + case 2: // Liste + $sql.="g.gemeinde in (".$gemeinde.") AND "; break; + } + } else { + $sql.="WHERE "; + } if($match1 != '%'){ - $sql.="WHERE nachnameoderfirma ILIKE $1 AND p.vorname ILIKE $2 "; + $sql.="nachnameoderfirma ILIKE $1 AND p.vorname ILIKE $2 "; $sql.="ORDER BY p.nachnameoderfirma, p.vorname LIMIT $3 ;"; $v=array($match, $match1, $linelimit); }else{ - $sql.="WHERE nachnameoderfirma ILIKE $1 "; + $sql.="nachnameoderfirma ILIKE $1 "; $sql.="ORDER BY p.nachnameoderfirma, p.vorname LIMIT $2 ;"; $v=array($match, $linelimit); } - // +++ Adresse der Person zur eindeutigen Bestimmung? $res=pg_prepare("", $sql); $res=pg_execute("", $v); @@ -74,12 +84,13 @@ } $cnt = 0; - // einfache Liste ohne div und Icon while($row = pg_fetch_array($res)) { $nnam=htmlentities($row["nachnameoderfirma"], ENT_QUOTES, "UTF-8"); $vnam=htmlentities($row["vorname"], ENT_QUOTES, "UTF-8"); $gml=$row["gml_id"]; - // +++ Icon mit Link auf Person-Auskunft, ÃŒber gml_id - // Zur Zeit siehe unten: erst nach Auswahl einer einzelnen Person - echo "\n".$nnam.", ".$vnam."\nFehler bei Name
\n";} // Daten der Person - echo "\n";
+ // Sp. 1: Icon, Link zur Auskunft Person
echo "\n\t";
echo "\n\t\t";
- echo "\n\t ";
- echo "\n\t "; + echo "\n\t | \n\t\t";
+ echo "\n\t "; // Sp. 2: Rahmen
if ($row = pg_fetch_array($res)) {
$namzeil=$row["nachnameoderfirma"].", ".$row["vorname"];
@@ -135,6 +146,5 @@
if (trim($namzeil) != "") {echo "\n\t |
Kein Flurstück.
"; - echo "\nHinweis: Sonderfälle wie 'Erbbaurecht' sind noch nicht umgesetzt.
"; + $zfs1++; + } + + // Zweite Abfrage (Variante) aus den Bausteinen zusammen bauen + // buchungsStelle2 < an < buchungsStelle1 + $sql=$sql1.$sqlz.$sqla2.$sql2; // Rechte an + + $v=array($gb, $linelimit); + $res=pg_prepare("", $sql); + $res=pg_execute("", $v); + if (!$res) { + echo "\nFehler bei Recht an Buchung.
"; + if ($debug >= 3) {echo "\n".$sql."
";} + return; + } + $zfs2=0; + while($row = pg_fetch_array($res)) { + $fs_gml=$row["gml_id"]; + $bvnr=$row["lfd"]; + if ($bvnr > 0) {$bvnr=str_pad($bvnr, 4, "0", STR_PAD_LEFT);} else {$bvnr="";} + $gmkg=$row["bezeichnung"]; + $flur=$row["flurnummer"]; + $fskenn=$row["zaehler"]; + if ($row["nenner"] != "") {$fskenn.="/".$row["nenner"];} // Bruchnummer + $x=$row["x"]; + $y=$row["y"]; + echo "\nKein Flurstück im berechtigten Bereich.
"; + // echo "\nHinweis: Sonderfälle wie 'Erbbaurecht' sind noch nicht umgesetzt.
"; } elseif($zfs >= $linelimit) { echo "\n... und weitere
"; @@ -277,4 +343,11 @@ } if ($debug >= 2) {echo "Filter Gemeinde = ".$gemeinde."
";} +if ($gemeinde == "") { + $gfilter = 0; // ungefiltert +} elseif(strpos($gemeinde, ",") === false) { + $gfilter = 1; // Einzelwert +} else { + $gfilter = 2; // Liste +} // Welche Parameter?