AW: Erste Schritte

From: Jäger, Frank (KRZ) <F(dot)Jaeger(at)KRZ(dot)DE>
To: "pgsql-de-allgemein(at)lists(dot)postgresql(dot)org" <pgsql-de-allgemein(at)lists(dot)postgresql(dot)org>
Subject: AW: Erste Schritte
Date: 2018-03-13 11:25:22
Message-ID: F2176AE4E9FFAF45BEA8D84DD6F4AF1A448CB442@skrzmxmbx01
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-de-allgemein

Hallo Daniel,
hier vermischen sich zwei sehr gegensätzliche Probleme:

1. Einerseits scheinst du noch wenig Erfahrungen zu haben mit Datenbanken, SQL und Tools wie dem pgAdmin.
2. Die Datenstruktur des Verfahrens ALKIS aus den PostNAS-Konverter ist komplex, schwer zu verstehen und hat zahlreiche "Besonderheiten".

Zum Üben der "Basics" würde ich zunächst mit einer einfacheren Datenbank beginnen. ALKIS eignet sich definitiv nicht als "erste Übung".

Allgemeine Fragen zu (1.) sind in dieser Liste gut aufgehoben.
Wenn die grundlegenden Dinge rund um Datenbanken und SQL eingeübt sind, und du dich in die Struktur von ALKIS tiefer einarbeiten willst, findest du weitere Hilfe auf der Seite http://postnas.org und in der Mailingliste https://lists.osgeo.org/mailman/listinfo/nas.

> Ich möchte diese Spalte in die Tabelle ap_ppo einfügen.

Das ist m.E. der falsche Ansatz. Wenn du beginnst, Tabellen zu ändern und Daten zu verschieben, dann kann die Datenbank anschließend nicht mehr mit dem Konverter PostNAS aktualisiert werden.
Eine der "Besonderheiten" ist, dass die Datenbank nicht nur in einer einmaligen Konvertierung befüllt wird. Sondern sie kann im Rahmen eines NBA-Verfahrens auch periodisch mit Differenzdaten aktualisiert werden. Bei der Aktualisierung werden Änderungsdaten vom Konverter zunächst in die Tabelle "delete" eingetragen und lösen dort einen Trigger aus.
Der Trigger ruft eine Function auf, die sich darum kümmert, veraltete Objekte mit einem Ende-Zeitstempel zu versorgen, wodurch sie als "nicht mehr aktuell" gelten. Trotzdem sind sie in den Daten noch vorhanden. Man muss bei der Auswertung darauf achten, keine Objekte mit Ende-Zeitstempel zu verwenden oder man muss die beendeten Objekte wirklich aus der Datenbank löschen, z.B. mit der Function "SELECT alkis_delete_all_endet();".

Also: Tabellen bitte nicht ändern!
Um "ax_aufnahmepunkt" mit einer Geometrie zu kombinieren brauchst du auch nicht Spalten verschieben oder Kopieren sondern nur "verbinden" (JOIN):
https://www.postgresql.org/docs/9.4/static/explicit-joins.html

SELECT ... FROM ax_aufnahmepunkt JOIN ... ON ... ;

Das nennt man dann einen "VIEW" - eine neue Sicht auf die Daten.
Den View kann man auch in der Datenbank speichern und dann "wie eine Tabelle" verwenden. https://www.postgresql.org/docs/9.4/static/sql-createview.html

CREATE VIEW ap_mit_geom AS
SELECT ... ;

Funktionierende Views zum Thema "Aufnahmepunkt" in ALKIS sind z.B.:

-- AP-Textposition
SELECT a.punktkennung, p.art, p.wkb_geometry
FROM ap_pto p
JOIN ax_aufnahmepunkt a
ON a.gml_id = ANY(p.dientzurdarstellungvon)
WHERE a.endet IS NULL and p.endet IS NULL;

Oder

-- AP-Position
SELECT a.punktkennung, p.wkb_geometry
FROM ax_punktortau p
JOIN ax_aufnahmepunkt a
ON a.gml_id = p.istteilvon
WHERE a.endet IS NULL and p.endet IS NULL;

Eine Verbindung zwischen "ax_aufnahmepunkt" und "ap_ppo" konnte ich nicht herstellen.

MfG
Frank Jäger

Von: Daniel Reimann [mailto:halle_saale(at)arcor(dot)de]
Gesendet: Sonntag, 11. März 2018 08:08
An: pgsql-de-allgemein(at)lists(dot)postgresql(dot)org
Betreff: Erste Schritte

Liebe Mitstreiter,
ich gehe gerade meine ersten Schritte was PostgreSQL, PostNAS und QGIS.
Entschuldigt bitte deshalb, wenn ich dumme Fragen stelle.
Kurz meine Intention: Ich beschäftige mich damit, weil ich mittels dem norGIS-ALKIS-Import (https://www.norbit.de/68/) Kataster-ALKIS-Daten zunächst in eine PostgreSQL-Datenbank mit einer PostNAS-Erweiterung einlesen und anschließend in QGIS visualisieren möchte. Bzw. ist das erfolgreich erledigt. Nun möchte ich anfangen, mich etwas mit den Daten zu beschäftigen, mit SQL, sofern nötig. Habt ihr dazu Tipps, wie ich mich dem Thema sinnvoll nähere?
Ich nutze als Datenbankmanager pgadmin 4. Und da hätte ich eine erste konkrete Frage:
Ich habe in meiner Datenbank eine Tabelle ax_aufnahmepunkt, die mehrere Spalten enthält. Unter anderem auch eine Spalte "punktkennung".
Da diese Tabelle keine Raumbezug enthält, nützt mir dort diese Info nichts. Ich möchte diese Spalte in die Tabelle ap_ppo einfügen.

Jetzt meine (Verständnis)Frage: Geht das auf einfache Weise über pgadmin? Ich kann ja eine neue Soalte in ap_ppo erstellen, aber wie generiere ich die Abfrage? Geht das so einfach und wie bekomme ich den entsprechenden SQL-Code dorthin (kopiert)?
Herzlichen Dank, Daniel

In response to

Responses

Browse pgsql-de-allgemein by date

  From Date Subject
Next Message Daniel Reimann 2018-03-13 17:21:31 Re: Erste Schritte
Previous Message Daniel Reimann 2018-03-12 17:30:44 Re: Erste Schritte