wiki:PostNASMapbender3

Version 46 (modified by thekla.wirkus, 4 years ago) (diff)

--

PostNAS und Mapbender

Der ALKIS WMS mit Auskunft kann ebenfalls in Mapbender integriert werden.


Infoabfrage

Hierzu muss ein angepasstes Infotemplate in der Mapdatei verwendet werden:

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');
})();


Mapbender


info-Verzeichnis mit den Auskunftsskripten

mapbender/web/info


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");



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
  1. SearchRouter? als Element in die Anwendung einbinden


  1. Views für die Suchen mit der aktuellen NorGIS Version Stand 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 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;
         



  1. 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));

Sicht für 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;

neue Tabelle für die 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;

         



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



Attachments