Changeset 303
- Timestamp:
- 01/20/14 14:51:46 (10 years ago)
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/import/sichten.sql
r301 r303 24 24 -- 2013-11-26 Neue Views (doppelverbindung) 25 25 -- 2014-01-17 View "exp_csv" fÃŒr den Export von CSV-Daten aus der Auskunft mit Modul alkisexport.php. 26 -- 2014-01-20 Erweiterung "exp_csv" fÃŒr alkisexport.php 26 27 27 28 … … 86 87 -- Diese Redundanzen mÃŒssen vom dem Programm gefiltert werden, das die Daten ÃŒber eine Schnittstelle einliest. 87 88 89 -- Durch LEFT-JOIN werden wahlweise Namennummern mit Person und Adresse erzeugt, 90 -- oder auch Namensnummern einer einem Beschrieb der Rechtsgemeinschaft oder leere Felder zu einem fiktiven Grundbuch. 91 -- Auch mit diesen Zeilen-Varianten muss das weiter verarbeitende Programm klar kommen. 92 88 93 -- Anwendungs-Beispiel: Abrechnung von AnliegerbeitrÀgen. 89 94 … … 92 97 AS 93 98 SELECT 94 -- **FlurstÃŒck95 f.gml_id AS fsgml,-- möglicher Filter FlurstÃŒcks-GML-ID99 -- FlurstÃŒck 100 f.gml_id AS fsgml, -- möglicher Filter FlurstÃŒcks-GML-ID 96 101 f.flurstueckskennzeichen AS fs_kennz, 97 102 f.gemarkungsnummer, -- Teile des FS-Kennz. noch mal einzeln 98 103 f.flurnummer, f.zaehler, f.nenner, 99 104 f.amtlicheflaeche AS fs_flae, 100 101 -- * Adressen des FS -- Nein, diese werden im Export-Modul ermitteln und nachtragen 102 -- k.bezeichnung AS strasse, -- StraÃennamen 103 -- split_part(l.hausnummer,' ',1) AS hausnr, -- Nummer 104 -- upper(split_part(l.hausnummer,' ',2)) AS hausnr_zs, -- Zusatz in GroÃschreibung 105 106 -- ** Grundbuch 105 g.bezeichnung AS gemarkung, 106 107 -- Grundbuch 107 108 gb.gml_id AS gbgml, -- möglicher Filter Grundbuch-GML-ID 108 109 gb.bezirk AS gb_bezirk, 109 110 gb.buchungsblattnummermitbuchstabenerweiterung AS gb_blatt, 110 111 -- ** Buchung 112 s.laufendenummer AS bu_lfd, 113 -- s.zaehler, s.nenner, -- Anteil des GB am FS 114 '=' || s.zaehler|| '/' || s.nenner AS bu_ant, -- als Excel-Formel (nur bei Wohnungsgrundbuch JOIN ÃŒber 'Recht an') 115 --s.buchungsart, -- verschlÃŒsselt 116 b.bezeichner AS bu_art, -- entschlÃŒsselt 117 118 -- Felder aus der Subquery "Namens-Zweig" 119 nz.nam_lfd, nz.nam_ant, nz.nam_bes, -- nn.* 120 nz.psgml, -- möglicher Filter Personen-GML-ID 121 nz.nachnameoderfirma, nz.vorname, nz.geburtsdatum -- p.* 111 z.bezeichnung AS beznam, -- GB-Bezirks-Name 112 113 -- Buchungsstelle (GrundstÃŒck) 114 s.laufendenummer AS bu_lfd, -- BVNR 115 --s.zaehler, s.nenner, -- Anteil des GB am FS, einzelne Felder 116 '=' || s.zaehler || '/' || s.nenner AS bu_ant, -- als Excel-Formel (nur bei Wohnungsgrundbuch JOIN ÃŒber 'Recht an') 117 s.buchungsart, -- verschlÃŒsselt 118 b.bezeichner AS bu_art, -- Buchungsart entschlÃŒsselt 119 120 --NamensNummer 121 nn.laufendenummernachdin1421 AS nam_lfd, 122 '=' || nn.zaehler|| '/' || nn.nenner AS nam_ant, -- als Excel-Formel 123 nn.artderrechtsgemeinschaft AS nam_adr, 124 nn.beschriebderrechtsgemeinschaft AS nam_bes, 125 126 -- Person 127 p.gml_id AS psgml, -- möglicher Filter Personen-GML-ID 128 p.anrede, 129 p.vorname, 130 p.namensbestandteil, 131 p.nachnameoderfirma, -- Familienname 132 p.geburtsdatum, 133 --p.geburtsname, p.akademischergrad 134 135 -- Adresse der Person 136 a.postleitzahlpostzustellung AS plz, 137 a.ort_post AS ort, -- Anschreifenzeile 1: PLZ+Ort 138 a.strasse, a.hausnummer, -- Anschriftenzeile 2: StraÃe+HsNr 139 a.bestimmungsland AS land 122 140 123 141 FROM ax_flurstueck f -- FlurstÃŒck 124 JOIN doppelverbindung d -- beide FÀlle ÃŒber Union-View: direkt und ÃŒber Recht von B S an BS142 JOIN doppelverbindung d -- beide FÀlle ÃŒber Union-View: direkt und ÃŒber Recht von Buchung an Buchung 125 143 ON d.fsgml = f.gml_id 144 145 JOIN ax_gemarkung g -- entschlÃŒsseln 146 ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer 126 147 127 148 JOIN ax_buchungsstelle s -- Buchungs-Stelle … … 130 151 ON s.buchungsart = b.wert 131 152 132 -- JOIN alkis_beziehungen v2 -- ax_flurstueck >weistAuf> AX_LagebezeichnungMitHausnummer 133 -- ON v2.beziehung_von = f.gml_id AND v2.beziehungsart = 'weistAuf' 134 -- JOIN ax_lagebezeichnungmithausnummer l 135 -- ON v2.beziehung_zu = l.gml_id 136 -- JOIN ax_lagebezeichnungkatalogeintrag k 137 -- ON l.kreis = k.kreis AND l.gemeinde = k.gemeinde AND l.lage = k.lage 138 139 JOIN alkis_beziehungen v3 -- Grundbuch (zur Buchungs-Stelle) 140 ON s.gml_id = v3.beziehung_von AND v3.beziehungsart = 'istBestandteilVon' -- Buchung --> Blatt 153 JOIN alkis_beziehungen v3 -- Buchung --> Grundbuchblatt 154 ON s.gml_id = v3.beziehung_von AND v3.beziehungsart = 'istBestandteilVon' 141 155 JOIN ax_buchungsblatt gb 142 156 ON v3.beziehung_zu = gb.gml_id 143 157 144 LEFT JOIN -- LEFT: fiktives Blatt hat keine Namensnummern, dieser "Zweig" kann leer bleiben. 145 ( SELECT 146 -- Namensnummer 147 v4.beziehung_zu AS v4gml, 148 nn.laufendenummernachdin1421 AS nam_lfd, 149 '=' || nn.zaehler|| '/' || nn.nenner AS nam_ant, -- als Excel-Formel 150 nn.beschriebderrechtsgemeinschaft AS nam_bes, 151 152 -- Person (zur Namensnummer) 153 p.gml_id AS psgml, -- möglicher Filter 154 p.nachnameoderfirma, -- Familienname 155 p.vorname, -- Vorname 156 p.geburtsdatum 157 158 -- Adresse des EigentÃŒmers - Nein 159 160 FROM alkis_beziehungen v4 -- Namensnummer (zum GB-Blatt) 161 JOIN ax_namensnummer nn 162 ON v4.beziehung_von = nn.gml_id 163 JOIN alkis_beziehungen v5 -- Person (zur Namensnummer) 164 ON v5.beziehung_von = nn.gml_id AND v5.beziehungsart = 'benennt' -- NamNum --> Person 165 JOIN ax_person p 166 ON v5.beziehung_zu = p.gml_id 167 WHERE v4.beziehungsart = 'istBestandteilVon' -- Blatt --> NamNum 168 ) AS nz -- Namens-Zweig 169 ON nz.v4gml = gb.gml_id -- LEFT JOIN: Namenzweig an Grundbuch anbinden 170 171 ORDER BY f.flurstueckskennzeichen, gb.bezirk, gb.buchungsblattnummermitbuchstabenerweiterung, nz.nam_lfd ; 158 JOIN ax_buchungsblattbezirk z 159 ON gb.land=z.land AND gb.bezirk=z.bezirk 160 161 JOIN alkis_beziehungen v4 -- Blatt --> NamNum 162 ON v4.beziehung_zu = gb.gml_id AND v4.beziehungsart = 'istBestandteilVon' 163 JOIN ax_namensnummer nn 164 ON v4.beziehung_von = nn.gml_id 165 166 LEFT JOIN alkis_beziehungen v5 -- NamNum --> Person 167 -- 2014-01-20: Mit LEFT ab hier werden auch NumNum-Zeilen mit "Beschreinbung der Rechtsgemeinschaft" geliefert (ohne Person) 168 ON v5.beziehung_von = nn.gml_id AND v5.beziehungsart = 'benennt' 169 LEFT JOIN ax_person p 170 ON v5.beziehung_zu = p.gml_id 171 172 LEFT JOIN alkis_beziehungen v6 -- Person --> Anschrift 173 ON v6.beziehung_von = p.gml_id AND v6.beziehungsart = 'hat' 174 LEFT JOIN ax_anschrift a 175 ON v6.beziehung_zu = a.gml_id 176 177 ORDER BY f.flurstueckskennzeichen, 178 gb.bezirk, gb.buchungsblattnummermitbuchstabenerweiterung, s.laufendenummer, 179 nn.laufendenummernachdin1421; 172 180 173 181 COMMENT ON VIEW exp_csv 174 182 IS 'View fÃŒr einen CSV-Export aus der Buchauskunft mit alkisexport.php. Generelle Struktur. FÃŒr eine bestimmte gml_id noch den Filter setzen.'; 175 183 176 -- GRANT SELECT ON TABLE exp_csv TO mb27; -- User fÃŒr Auskunfts-Programme 177 -- GRANT SELECT ON TABLE exp_csv TO alkisbuch; -- User fÃŒr Auskunfts-Programme RLP-Demo 178 184 --GRANT SELECT ON TABLE exp_csv TO mb27; -- User fÃŒr Auskunfts-Programme 185 --GRANT SELECT ON TABLE exp_csv TO alkisbuch; -- User fÃŒr Auskunfts-Programme RLP-Demo 179 186 180 187 -
trunk/info/info/alkis/alkisexport.php
r302 r303 1 1 <?php 2 2 /* Modul alkisexport.php 3 CSV-Export von ALKIS-Daten zu einem Flurstueck, Grundbuch oder Eigent ÃŒmer.4 Es wird eine GML-ID ÃŒbergeben.3 CSV-Export von ALKIS-Daten zu einem Flurstueck, Grundbuch oder Eigentümer. 4 Es wird eine GML-ID übergeben. 5 5 Es wird ein gespeicherter View verwendet, der nach der gml_id gefiltert wird. 6 6 Der View verkettet Flurstueck - Buchungsstelle - Grundbuch - Eigentuemer 7 Die Lagebezeichnung des Flurst ÃŒcks wird in ein Feld komprimiert.7 Die Lagebezeichnung des Flurstücks wird in ein Feld komprimiert. 8 8 Parameter: gkz=mandant&gmlid=DE...&tabtyp=flurstueck/grundbuch/person 9 9 10 10 2014-01-17 krz f.j. 11 2014-01-20 weitere Spalten und verbesserte Formatierung 11 12 */ 12 13 13 14 function lage_zum_fs($gmlid) { 14 // Zu einem Flurst ÃŒck die Lagebezeichnungen (mit Hausnummer) so aufbereiten,15 // Zu einem Flurstück die Lagebezeichnungen (mit Hausnummer) so aufbereiten, 15 16 // dass ggf. mehrere Lagebezeichnungen in eine Zelle der Tabelle passen. 16 17 $sql ="SELECT DISTINCT s.bezeichnung, l.hausnummer FROM alkis_beziehungen v "; … … 47 48 header('Content-Disposition: attachment; filename="alkis_'.$tabtyp.'_'.$gmlid.'.csv"'); 48 49 require_once("alkis_conf_location.php"); 50 include("alkisfkt.php"); 49 51 50 52 // CSV-Ausgabe: Kopfzeile mit Feldnamen 51 echo "FS-Kennzeichen;G emarkung;Flur;Flurstueck;Flaeche;Adressen;GB-Bezirk;GB-Blatt;LfdNrName;Anteil_am_FS;Buchungsart;Namensnummer;AnteilDerPerson;Beschreibung;Name;Vorname;GebDatum";53 echo "FS-Kennzeichen;GmkgNr;Gemarkung;Flur;Flurstueck;Flaeche;Adressen;GB-BezNr;GB-Bezirk;GB-Blatt;BVNR;Anteil_am_FS;Buchungsart;Namensnummer;AnteilDerPerson;RechtsGemeinschaft;Person;GebDatum;Anschrift"; 52 54 53 55 // Datenbank-Verbindung … … 56 58 exit("Fehler beim Verbinden der DB"); 57 59 } 58 pg_set_client_encoding($con, LATIN1); // F ÃŒr Excel kein UTF8 ausgeben60 pg_set_client_encoding($con, LATIN1); // Für Excel kein UTF8 ausgeben 59 61 60 62 // Der Parameter "Tabellentyp" bestimmt den Namen des Filter-Feldes aus dem View … … 82 84 // Flurstueck 83 85 $fsgml=$row["fsgml"]; 84 $fs_kennz=$row["fs_kennz"]; 86 $fs_kennz=$row["fs_kennz"]; // Rechts Trim "_" ? 85 87 $gmkgnr=$row["gemarkungsnummer"]; 86 // $gemkname=$row["bezeichnung"];88 $gemkname=$row["gemarkung"]; 87 89 $flurnummer=$row["flurnummer"]; 88 90 $flstnummer=$row["zaehler"]; … … 92 94 93 95 // Grundbuch (Blatt) 94 $gb_bezirk=$row["gb_bezirk"]; 96 $gb_bezirk=$row["gb_bezirk"]; // Nummer des Bezirks 97 $gb_beznam=$row["beznam"]; // Name des Bezirks 95 98 $gb_blatt=$row["gb_blatt"]; 96 99 97 100 // Buchungsstelle (Grundstueck) 98 $bu_lfd=$row["bu_lfd"]; 99 $bu_ant=$row["bu_ant"]; 100 $bu_art=$row["bu_art"]; 101 102 // Namensnummer 103 $nam_lfd=$row["nam_lfd"]; 104 $nam_ant=$row["nam_ant"]; 105 $nam_bes=$row["nam_bes"]; 106 101 $bu_lfd=$row["bu_lfd"]; // BVNR 102 $bu_ant=$row["bu_ant"]; // '=zaehler/nenner' oder NULL wenn zaehler oder nenner NULL sind 103 $bu_key=$row["buchungsart"]; // Sxhlüssel 104 $bu_art=$row["bu_art"]; // entschlüsselt (Umlaute in ANSI!) 105 106 // Für Berechnungen in der exportierten Tabelle wäre es nützlich, wenn "voller Anteil" als Faktor 1 107 // statt eines leeren Feldes ausgegeben würde - Ausnahmen? 108 if(($bu_ant == '') and ($bu_key == 1100)) { // Grundstück 109 $bu_ant = '1'; 110 } 111 112 // Namensnummer 113 $nam_lfd="'".kurz_namnr($row["nam_lfd"])."'"; // In Hochkomma. Wird sonst als Datum dargestellt. 114 $nam_ant=$row["nam_ant"]; // Wann darf als Anteil "1" statt leer gesetzt werden? 115 $nam_adr=$row["nam_adr"]; // Art der Rechtsgemeischaft (Schlüssel) 116 $nam_bes=$row["nam_bes"]; // Beschrieb der Rechtsgemeinschaft 117 118 // Rechtsgemeinschaft (in einer eigene Zeile ohne Namen) 119 if ($nam_adr == 9999) { // sonstiges 120 $rechtsg=$nam_bes; // Beschreibung verwenden 121 } else { 122 $rechtsg=rechtsgemeinschaft($nam_adr); // Entschlüsseln 123 } 124 107 125 // Person 108 $naname=$row["nachnameoderfirma"]; 109 $vorname=$row["vorname"]; 126 $nana=$row["nachnameoderfirma"]; 127 if ($nana == "") { 128 $name=""; 129 } else { 130 $name=anrede($row["anrede"]); 131 $namteil=$row["namensbestandteil"]; 132 if ($namteil != "") { // von und zu 133 $name.=" ".$namteil; 134 } 135 $name.=" ".$nana; 136 $vnam=$row["vorname"]; 137 if ($vnam != "") { // keine Firma 138 $name.=", ".$vnam; 139 } 140 } 110 141 $gebdat=$row["geburtsdatum"]; 111 142 112 // Adresse der Person 113 // -- fehlt noch 143 // Adresse der Person (Eigentuemer)) 144 $ort=$row["ort"]; 145 if ($ort == "") { 146 $adresse=""; 147 } else { 148 $adresse=$row["strasse"]." ".$row["hausnummer"].", ".$row["plz"]." ".$ort; 149 $land=$row["land"]; // nur andere Länder anzeigen 150 if (($land != "DEUTSCHLAND") and ($land != "")) { 151 $adresse.=" (".$land.")"; 152 } 153 } 114 154 115 // Adressen zum FS116 if($fsgml != $fsalt) { // bei geÀndertem Kennz.155 // Adressen (Lage) zum FS 156 if($fsgml != $fsalt) { // nur bei geändertem Kennz. 117 157 $lage=lage_zum_fs($fsgml); // die Lage neu ermitteln 118 158 $fsalt=$fsgml; 119 159 } 120 160 121 // Den Ausgabe-Satz montieren aus Flurst ÃŒcks-, Grundbuch- und Namens-Teil122 $fsteil=$fs_kennz.";".$gmkgnr.";".$ flurnummer.";".$flstnummer.";".$fs_flae.";".$lage.";";123 $gbteil=$gb_bezirk.";".$gb_b latt.";".$bu_lfd.";".$bu_ant.";".$bu_art.";";124 $namteil=$nam_lfd.";".$nam_ant.";".$ nam_bes.";".$naname.";".$vorname.";".$gebdat;161 // Den Ausgabe-Satz montieren aus Flurstücks-, Grundbuch- und Namens-Teil 162 $fsteil=$fs_kennz.";".$gmkgnr.";".$gemkname.";".$flurnummer.";".$flstnummer.";".$fs_flae.";".$lage.";"; 163 $gbteil=$gb_bezirk.";".$gb_beznam.";".$gb_blatt.";".$bu_lfd.";".$bu_ant.";".$bu_art.";"; 164 $namteil=$nam_lfd.";".$nam_ant.";".$rechtsg.";".$name.";".$gebdat.";".$adresse; 125 165 126 166 // Ausgabe in CSV-Datei
Note: See TracChangeset
for help on using the changeset viewer.