wiki:PostNASMapbender3

Version 41 (modified by thekla.wirkus, 3 months ago) (diff)

--

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

Einbinden der ALKIS Datenbank in Mapbender siehe https://doc.mapbender.org/en/customization/database.html

  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