= PostNAS und Mapbender = Der ALKIS WMS mit Auskunft kann ebenfalls in Mapbender integriert werden. [[BR]] [[Image(postnas_mb_demo_admin.png, 400px, right, link=https://demo.postnas.org/)]] [[BR]] [[Image(mb3_alkis_demo.png, 500px, right, link=https://demo.postnas.org/application/alkis_demo)]] [[BR]] == Infoabfrage == Hierzu muss ein angepasstes Infotemplate in der Mapdatei verwendet werden: * LAYER ax_flurstueck: * http://trac.wheregroup.com/PostNAS/export/297/trunk/umn/alkis/templates/alkis_fs_mb3.html * Verwendung ohne HEADER und FOOTER {{{ TEMPLATE './template/alkis_fs_mb3.html' }}} In der Funktion wird auf das Skript alkisausk.php verwiesen, das im gewohnten Verzeichnis '''/info''' im Webverzeichnis liegt. Beispiel: {{{ (function() { var selParcel = "[gml_id]"; var link = "http://alkis.mapbender3.org/mapbender3/web/info/alkis/alkisausk.php?gkz=xxx&gmlid=" + encodeURI(selParcel); window.open(link,'','left=0,top=20,width=600,height=800,resizable=yes,menubar=no,toolbar=no, location=no,status=no,scrollbar=yes'); })(); }}} [[BR]] == Mapbender == [[BR]] === info-Verzeichnis mit den Auskunftsskripten === * Verzeichnis info liegt im Verzeichnis web in Mapbender (http://trac.wheregroup.com/PostNAS/browser/trunk/info) {{{ mapbender/web/info }}} [[BR]] === Konfigurations-Dateien === * können in Mapbender unter mapbender/app/config abgelegt werden Verweis in der Datei alkis_conf_location.php über: {{{ require_once(dirname(__FILE__)."/../../../app/config/alkis_www_conf.php"); }}} [[BR]] [[BR]] === Suche über den SQL-Search-Router === * über das Element SearchRouter können in Mapbender Suchen definiert werden * die ALKIS-Suchen nach Flurstück, Eigentümer und Adresse können so angeboten werden 1. Datenbank einbinden * Einbinden der ALKIS Datenbank in Mapbender siehe https://doc.mapbender.org/en/customization/database.html 2. SearchRouter als Element in die Anwendung einbinden * siehe https://doc.mapbender.org/en/functions/search/search_router.html [[BR]] 3. Views für die Suchen mit der aktuellen NorGIS '''Version Stand September 2019''' erzeugen [[BR]] ''' View Flurstückssuche''' {{{ Drop view qry_mb3_ax_flurstueck_suche; CREATE OR REPLACE VIEW public.qry_mb3_ax_flurstueck_suche AS SELECT f.gml_id, ge.gemeinde, ge.gemeindename, f.gemarkungsnummer::text AS gemarkungsnummer, f.beginnt, f.endet, g.gemarkung, g.gemarkungsname, g.land, g.regierungsbezirk, g.kreis, f.flurnummer::text AS flurnummer, f.zaehler::text AS zaehler, f.nenner::text AS nenner, replace(f.flurstueckskennzeichen::text, '_'::text, ''::text) AS flurstueckskennzeichen, f.wkb_geometry AS the_geom_etrs FROM ax_flurstueck f LEFT JOIN pp_gemarkung g ON f.gemarkungsnummer::text = g.gemarkung::text LEFT JOIN pp_gemeinde ge ON g.kreis::text = ge.kreis::text AND g.gemeinde::text = ge.gemeinde::text WHERE f.endet IS NULL AND NOT (f.flurstueckskennzeichen IN ( SELECT ax_historischesflurstueck.flurstueckskennzeichen FROM ax_historischesflurstueck)); }}} '''View Adresssuche''' {{{ Drop view qry_mb3_adresse_suche; CREATE OR REPLACE VIEW public.qry_mb3_adresse_suche AS SELECT h.ogc_fid,replace(h.hausnummer::text, ' '::text, ''::text) AS hausnummer,h.gemeinde::text AS gemeinde,c.bezeichnung as gemeindename, h.kreis::text AS kreis, g.wkb_geometry AS the_geom_etrs ,h.gml_id, h.lage, k.bezeichnung as strasse, c.regierungsbezirk FROM ax_lagebezeichnungmithausnummer h JOIN ax_gebaeude g ON ARRAY[h.gml_id] <@ g.zeigtauf AND g.endet IS NULL JOIN ax_lagebezeichnungkatalogeintrag k ON h.lage::text =k.lage::text AND h.gemeinde = k.gemeinde and h.regierungsbezirk =k.regierungsbezirk AND h.kreis = k.kreis JOIN ax_gemeinde c ON h.regierungsbezirk = c.regierungsbezirk and h.gemeinde = c.gemeinde AND h.kreis = c.kreis; }}} '''View Eigentümersuche''' {{{ -- DROP VIEW public.qry_mb3_eigentuemer_suche_union; CREATE OR REPLACE VIEW public.qry_mb3_eigentuemer_suche_union AS SELECT foo.flurstueckskennzeichen, foo.flur, foo.fs_zaehler, foo.fs_nenner, foo.flaeche, foo.bezirkname, foo.gb_blatt,foo.blattart, foo.bvnr, foo.buchgsartwert, foo.buchgsart, foo.name_num, foo.nachname, foo.vorname , foo.geom FROM ( SELECT f.flurstueckskennzeichen, f.flurnummer AS flur, f.zaehler AS fs_zaehler, f.nenner AS fs_nenner, f.amtlicheflaeche AS flaeche, b.bezeichnung AS bezirkname, g.buchungsblattnummermitbuchstabenerweiterung AS gb_blatt, g.blattart, s.laufendenummer AS bvnr, art.wert AS buchgsartwert, art.bezeichner AS buchgsart, n.laufendenummernachdin1421 AS name_num, p.nachnameoderfirma AS nachname, p.vorname, f.wkb_geometry AS geom FROM ax_person p JOIN ax_namensnummer n ON p.gml_id = n.benennt AND n.endet IS NULL JOIN ax_buchungsblatt g ON n.istbestandteilvon = g.gml_id AND g.endet IS NULL JOIN ax_buchungsblattbezirk b ON g.land::text = b.land::text AND g.bezirk::text = b.bezirk::text AND b.endet IS NULL JOIN ax_buchungsstelle s ON s.istbestandteilvon = g.gml_id JOIN v_bs_buchungsart art ON s.buchungsart = art.wert AND s.endet IS NULL JOIN ax_flurstueck f ON f.istgebucht = s.gml_id AND f.endet IS NULL UNION SELECT f.flurstueckskennzeichen, f.flurnummer AS flur, f.zaehler AS fs_zaehler, f.nenner AS fs_nenner, f.amtlicheflaeche AS flaeche, b.bezeichnung AS bezirkname, g.buchungsblattnummermitbuchstabenerweiterung AS gb_blatt, g.blattart, s.laufendenummer AS bvnr, art.wert AS buchgsartwert, art.bezeichner AS buchgsart, n.laufendenummernachdin1421 AS name_num, p.nachnameoderfirma AS nachname, p.vorname, f.wkb_geometry AS geom FROM ax_person p JOIN ax_namensnummer n ON p.gml_id = n.benennt AND n.endet IS NULL JOIN ax_buchungsblatt g ON n.istbestandteilvon = g.gml_id AND g.endet IS NULL JOIN ax_buchungsblattbezirk b ON g.land::text = b.land::text AND g.bezirk::text = b.bezirk::text AND b.endet IS NULL JOIN ax_buchungsstelle s ON s.istbestandteilvon = g.gml_id JOIN v_bs_buchungsart art ON s.buchungsart = art.wert AND s.endet IS NULL JOIN ax_buchungsstelle bs ON (bs.gml_id=ANY(s.an) OR bs.gml_id=ANY(s.zu)) JOIN ax_flurstueck f ON f.istgebucht = bs.gml_id AND f.endet IS NULL ) foo; }}} '''View Grundbuchsuche''' {{{ -- DROP VIEW qry_mb3_grundbuch_suche; CREATE OR REPLACE VIEW public.qry_mb3_grundbuch_suche AS SELECT foo.buchungsart, foo.bezirkname, foo.bezirk, foo.gb_blatt, foo.blattart, foo.flurstueckskennzeichen, foo.geom, foo.endet FROM ( SELECT s.buchungsart, b.bezeichnung AS bezirkname, b.bezirk, g.buchungsblattnummermitbuchstabenerweiterung AS gb_blatt, g.blattart, f.flurstueckskennzeichen, f.wkb_geometry AS geom, f.endet FROM ax_buchungsblatt g JOIN ax_buchungsblattbezirk b ON g.land::text = b.land::text AND g.bezirk::text = b.bezirk::text AND b.endet IS NULL JOIN ax_buchungsstelle s ON s.istbestandteilvon = g.gml_id JOIN v_bs_buchungsart art ON s.buchungsart = art.wert AND s.endet IS NULL JOIN ax_flurstueck f ON f.istgebucht = s.gml_id AND f.endet IS NULL UNION SELECT s.buchungsart, b.bezeichnung AS bezirkname, b.bezirk, g.buchungsblattnummermitbuchstabenerweiterung AS gb_blatt, g.blattart, f.flurstueckskennzeichen, f.wkb_geometry AS geom, f.endet FROM ax_buchungsblatt g JOIN ax_buchungsblattbezirk b ON g.land::text = b.land::text AND g.bezirk::text = b.bezirk::text AND b.endet IS NULL JOIN ax_buchungsstelle s ON s.istbestandteilvon = g.gml_id JOIN v_bs_buchungsart art ON s.buchungsart = art.wert AND s.endet IS NULL JOIN ax_buchungsstelle bs ON (bs.gml_id=ANY(s.an) OR bs.gml_id=ANY(s.zu)) JOIN ax_flurstueck f ON f.istgebucht = bs.gml_id AND f.endet IS NULL) foo; }}} [[BR]] [[BR]] 3. Views für die Suchen mit''' älterer NorGIS Version vor September 2019''' erzeugen * View Flurstückssuche {{{ Drop view qry_mb3_ax_flurstueck_suche; CREATE OR REPLACE VIEW public.qry_mb3_ax_flurstueck_suche AS SELECT f.gml_id, ge.gemeinde, ge.gemeindename, f.gemarkungsnummer::text AS gemarkungsnummer, f.beginnt, f.endet, g.gemarkung, g.gemarkungsname, g.land, g.regierungsbezirk, g.kreis, f.flurnummer::text AS flurnummer, f.zaehler::text AS zaehler, f.nenner::text AS nenner, replace(f.flurstueckskennzeichen::text, '_'::text, ''::text) AS flurstueckskennzeichen, f.wkb_geometry AS the_geom_etrs FROM ax_flurstueck f LEFT JOIN pp_gemarkung g ON f.gemarkungsnummer::text = g.gemarkung::text LEFT JOIN pp_gemeinde ge ON g.kreis::text = ge.kreis::text AND g.gemeinde::text = ge.gemeinde::text WHERE f.endet IS NULL AND NOT (f.flurstueckskennzeichen IN ( SELECT ax_historischesflurstueck.flurstueckskennzeichen FROM ax_historischesflurstueck)); }}} '''View Adresssuche''' {{{ Drop view qry_mb3_adresse_suche; CREATE OR REPLACE VIEW qry_mb3_adresse_suche AS SELECT p.ogc_fid, p.drehwinkel * 57.296::double precision AS drehwinkel, l.hausnummer as hausnummer, m.gemeinde::text AS gemeinde, m.bezeichnung AS gemeindename, k.bezeichnung AS strasse, l.lage AS strschl, m.kreis::text AS kreis, p.wkb_geometry AS the_geom_etrs FROM ap_pto p JOIN alkis_beziehungen v ON p.gml_id = v.beziehung_von JOIN ax_lagebezeichnungmithausnummer l ON v.beziehung_zu = l.gml_id JOIN ax_lagebezeichnungkatalogeintrag k ON l.kreis::text = k.kreis::text AND l.gemeinde::text = k.gemeinde::text AND l.lage::text = k.lage::text JOIN ax_gemeinde m ON l.gemeinde::text = m.gemeinde::text AND l.kreis::text = m.kreis::text WHERE p.art::text = 'HNR'::text AND v.beziehungsart::text ='dientZurDarstellungVon'::text AND p.endet IS NULL AND l.endet IS NULL; }}} '''View Eigentümersuche''' {{{ -- DROP VIEW public.qry_mb3_eigentuemer_suche_union; CREATE OR REPLACE VIEW public.qry_mb3_eigentuemer_suche_union AS SELECT foo.flurstueckskennzeichen, foo.flur, foo.fs_zaehler, foo.fs_nenner, foo.flaeche, foo.geom, foo.bezirkname, foo.gb_blatt, foo.blattart, foo.bvnr, foo.buchgsartwert, foo.buchgsart, foo.name_num, foo.nachname, foo.vorname FROM ( SELECT f.flurstueckskennzeichen, f.flurnummer AS flur, f.zaehler AS fs_zaehler, f.nenner AS fs_nenner, f.amtlicheflaeche AS flaeche, f.wkb_geometry AS geom, b.bezeichnung AS bezirkname, g.buchungsblattnummermitbuchstabenerweiterung AS gb_blatt, g.blattart, s.laufendenummer AS bvnr, art.wert AS buchgsartwert, art.bezeichner AS buchgsart, n.laufendenummernachdin1421 AS name_num, p.nachnameoderfirma AS nachname, p.vorname FROM ax_person p JOIN alkis_beziehungen bpn ON bpn.beziehung_zu = p.gml_id JOIN ax_namensnummer n ON bpn.beziehung_von = n.gml_id JOIN alkis_beziehungen bng ON n.gml_id = bng.beziehung_von JOIN ax_buchungsblatt g ON bng.beziehung_zu = g.gml_id JOIN ax_buchungsblattbezirk b ON g.land::text = b.land::text AND g.bezirk::text = b.bezirk::text JOIN alkis_beziehungen bgs ON bgs.beziehung_zu = g.gml_id JOIN ax_buchungsstelle s ON s.gml_id = bgs.beziehung_von JOIN v_bs_buchungsart art ON s.buchungsart = art.wert JOIN alkis_beziehungen bf ON s.gml_id = bf.beziehung_zu JOIN ax_flurstueck f ON f.gml_id = bf.beziehung_von WHERE n.endet IS NULL AND g.endet IS NULL AND b.endet IS NULL AND s.endet IS NULL AND f.endet IS NULL UNION SELECT f.flurstueckskennzeichen, f.flurnummer AS flur,f.zaehler AS fs_zaehler, f.nenner AS fs_nenner, f.amtlicheflaeche AS flaeche, f.wkb_geometry AS geom, b.bezeichnung AS bezirkname, g.buchungsblattnummermitbuchstabenerweiterung AS gb_blatt, g.blattart, s.laufendenummer AS bvnr, art.wert AS buchgsartwert, art.bezeichner AS buchgsart, n.laufendenummernachdin1421 AS name_num, p.nachnameoderfirma AS nachname, p.vorname FROM ax_person p JOIN alkis_beziehungen bpn ON bpn.beziehung_zu = p.gml_id JOIN ax_namensnummer n ON bpn.beziehung_von = n.gml_id JOIN alkis_beziehungen bng ON n.gml_id = bng.beziehung_von JOIN ax_buchungsblatt g ON bng.beziehung_zu = g.gml_id JOIN ax_buchungsblattbezirk b ON g.land::text = b.land::text AND g.bezirk::text = b.bezirk::text JOIN alkis_beziehungen bgs ON bgs.beziehung_zu = g.gml_id JOIN ax_buchungsstelle s ON s.gml_id = bgs.beziehung_von JOIN v_bs_buchungsart art ON s.buchungsart = art.wert JOIN alkis_beziehungen bg ON s.gml_id = bg.beziehung_von JOIN ax_buchungsstelle bs ON bs.gml_id = bg.beziehung_zu JOIN alkis_beziehungen bf ON bs.gml_id = bf.beziehung_zu JOIN ax_flurstueck f ON f.gml_id = bf.beziehung_von WHERE n.endet IS NULL AND g.endet IS NULL AND b.endet IS NULL AND s.endet IS NULL AND f.endet IS NULL) foo; }}} '''View Grundbuchsuche''' {{{ -- DROP VIEW qry_mb3_grundbuch_suche; CREATE OR REPLACE VIEW qry_mb3_grundbuch_suche AS SELECT foo.buchungsart, foo.bezirkname, foo.bezirk, foo.gb_blatt, foo.blattart, foo.flurstueckskennzeichen, foo.geom, foo.endet FROM ( SELECT s.buchungsart, b.bezeichnung AS bezirkname, b.bezirk,g.buchungsblattnummermitbuchstabenerweiterung AS gb_blatt, g.blattart, f.flurstueckskennzeichen,f.wkb_geometry AS geom, f.endet FROM ax_buchungsblatt g JOIN ax_buchungsblattbezirk b ON g.land::text = b.land::text AND g.bezirk::text = b.bezirk::text JOIN alkis_beziehungen bgs ON bgs.beziehung_zu = g.gml_id JOIN ax_buchungsstelle s ON s.gml_id = bgs.beziehung_von JOIN v_bs_buchungsart art ON s.buchungsart = art.wert JOIN alkis_beziehungen bf ON s.gml_id = bf.beziehung_zu JOIN ax_flurstueck f ON f.gml_id = bf.beziehung_von WHERE g.endet IS NULL AND b.endet IS NULL AND s.endet IS NULL AND f.endet IS NULL UNION SELECT s.buchungsart, b.bezeichnung AS bezirkname, b.bezirk, g.buchungsblattnummermitbuchstabenerweiterung AS gb_blatt, g.blattart, f.flurstueckskennzeichen, f.wkb_geometry AS geom, f.endet FROM ax_buchungsblatt g JOIN ax_buchungsblattbezirk b ON g.land::text = b.land::text AND g.bezirk::text = b.bezirk::text JOIN alkis_beziehungen bgs ON bgs.beziehung_zu = g.gml_id JOIN ax_buchungsstelle s ON s.gml_id = bgs.beziehung_von JOIN v_bs_buchungsart art ON s.buchungsart = art.wert JOIN alkis_beziehungen bg ON s.gml_id = bg.beziehung_von JOIN ax_buchungsstelle bs ON bs.gml_id = bg.beziehung_zu JOIN alkis_beziehungen bf ON bs.gml_id = bf.beziehung_zu JOIN ax_flurstueck f ON f.gml_id = bf.beziehung_von WHERE g.endet IS NULL AND s.endet IS NULL AND b.endet IS NULL AND s.endet IS NULL AND f.endet IS NULL) foo; }}} [[BR]] [[BR]] ==== 4. Konfiguration des Search-Routers ==== '''Flurstückssuche''' {{{ class: Mapbender\CoreBundle\Component\SQLSearchEngine class_options: connection: alkis relation: qry_mb3_ax_flurstueck_suche attributes: - gml_id - gemarkungsnummer - gemarkungsname - flurnummer - zaehler - nenner - flurstueckskennzeichen geometry_attribute: the_geom_etrs form: gemarkungsnummer: type: text options: required: false compare: exact flurnummer: type: text options: label: Flur required: false attr: data-autocomplete: 'on' data-autocomplete-distinct: 'on' data-autocomplete-using: gemarkungsname zaehler: type: text options: label: Zähler required: true attr: data-autocomplete: 'on' data-autocomplete-distinct: 'on' data-autocomplete-using: gemarkungsname nenner: type: text options: label: Nenner required: false attr: data-autocomplete: 'on' data-autocomplete-distinct: 'on' data-autocomplete-using: gemarkungsname results: view: table headers: flurnummer: Flur zaehler: Zähler nenner: Nenner gemarkungsnummer: Gemarkung callback: event: click options: buffer: 50 }}} '''Konfiguration Adressuche''' {{{ class: Mapbender\CoreBundle\Component\SQLSearchEngine class_options: connection: alkis relation: qry_mb3_adresse_suche attributes: - kreis - gemeindenummer - hausnummer - gemeindename - strasse geometry_attribute: the_geom_etrs form: gemeindename: type: text options: required: false strasse: type: text options: label: Straße required: false attr: data-autocomplete: 'on' data-autocomplete-distinct: 'on' data-autocomplete-using: gemeindename hausnummer: type: text options: label: Hausnummer required: false attr: data-autocomplete: 'on' data-autocomplete-distinct: 'on' data-autocomplete-using: bezeichnung results: view: table headers: strasse: Straße hausnummer: Hausnr. gemeindename: Ort callback: event: click options: buffer: 50 }}} Gemeinde mit Auswahlbox {{{ gemeinde: type: choice options: empty_value: ...bitte Gemeinde auswählen choices: 103: Osann-Monzel 104: Test }}} '''Konfiguration Eigentümersuche''' {{{ class: Mapbender\CoreBundle\Component\SQLSearchEngine class_options: connection: alkis relation: qry_mb3_eigentuemer_suche_union attributes: - gb_blatt - buchgsart - nachname - vorname - bezirkname - fs_zaehler - fs_nenner - flur - flurstueckskennzeichen geometry_attribute: geom form: nachname: type: text options: label: Nachname required: false compare: ilike vorname: type: text options: label: Vorname required: false compare: ilike gb_blatt: type: text options: label: 'Grundbuchblattnummer (GB-NR)' required: false compare: exact bezirkname: type: text options: label: Bezirk required: false attr: data-autocomplete: 'on' data-autocomplete-distinct: 'on' data-autocomplete-using: flur flur: type: text options: label: Flur required: false attr: data-autocomplete: 'on' data-autocomplete-distinct: 'on' data-autocomplete-using: flur fs_zaehler: type: text options: label: Zähler required: false attr: data-autocomplete: 'on' data-autocomplete-distinct: 'on' data-autocomplete-using: flur fs_nenner: type: text options: label: Nenner required: false attr: data-autocomplete: 'on' data-autocomplete-distinct: 'on' data-autocomplete-using: flur results: view: table headers: nachname: Nachname vorname: Vorname flurstueckskennzeichen: Flstk. gb_blatt: GB-NR bezirkname: Bezirk flur: Flur callback: event: click options: buffer: 40 minScale: null maxScale: null }}} '''Konfiguration Grundbuchsuche''' {{{ noch offen }}} [[BR]] [[Image(postnas_mb_demo_app_mobil.png, 500px, left,link=https://demo.postnas.org/)]] [[BR]] [[Image(postnas_mb_demo_app.png, 500px,link=https://demo.postnas.org/application/alkis_demo_mobil)]]