ich habe eine Problem mit der Abfrage von Höhendaten in einem bestimmten Amt oder Gemeinde.
Ich habe 2 Tabellen. Und zwar habe ich eine Tabelle mit allen Höhendaten des DGM5 (dgm5_gk3) aus Schelswig Holstein. Spalten: h5_id, x, y, z (Koordinaten) und the_geom (die Punktgeometrie zu den Koordinaten).
Die andere Tabelle enthält die Ämter bzw Gemeinden (aemter_gk3) aus SH mit den Spalten: Amt bzw Gemeinde (mit den Namen) und die Geometrie the_geom, welches Polygongeometrien sind.
Mit der Abfrage möchte ich, dass mir die Punktgeometrien (Höhendaten) und die Koordinaten aus nur einer bestimmten Gemeinde, zB Kiel, angezeigt werden. Also so zu sagen alle Punkte die im Polygon von Kiel liegen oder sich mit der Überschneiden.
Das Problem ist, dass ich bei den meisten Abfragen immer leere Spalten angezeigt bekommen habe, deswegen glaube ich dass die Abfragen verkehrt waren.
Am besten würde hier ja die INTERSECTS Abfrage passen, aber wie verknüpfe ich diese richtig mit einer Unterabfrage welche auf eine andere Tabelle bezogen ist?
Hoffe ihr könnt mir ein paar Tipss geben.
Danke!
sieht auch plausibel aus, werde das nächste woche wenn ich wieder davor sitze mal ausprobieren.
ich hab noch eine kleine verständnisfrage. und zwar was bedeutet das ‘st’ vor intersects? das ist mir bis jetzt noch nicht begegnet.
und mir ist gestern noch ein problem mit einer anderen tabelle aufgefallen, vielleicht kann mir ja jemand helfen oder erklären warum da so ist:
meine eine tabelle mit landkreisen weist zeilen ohne geometrie auf. ich habe versucht die daten mit arcmap data manager zu reparieren, wo auch leere geometrien rausgeworfen wurden. aber trotzdem werden sie immer noch (also die zeilen ohne geometrie) in postgres angezeigt. weiß jemand warum das so ist oder was man da machen kann?
Das st_ ist eine sql-Konvention um räumliche Funktionen zu kennzeichnen. Das wird AFAIR seit PostGIS 1.4 konsistent eingesetzt. Die Funktionen ohne st sind aber auch noch da.
Zu den leeren Geometrien: Wenn du das mit PGAdmin anschaust kann das vorkommen. Leer ist die Geomterie erst dann wenn unter psql die Funktion astext(the_geom) nichts liefert . Du kannst auch unter Postgis mit isvalid prüfen ob die Geometrie korrekt ist.
Vielen dank nochmal!
Ich habe die Abfragen gerade ausprobiert und alles hat geklappt.
Die erste Variante ist meiner Meinung nach auch die angenehmste, denn sie ist etwas schneller beim abfragen.
ich wollte keinen neuen tread dafür auf machen, weil es sich um das gleiche Gebiet handelt.
wie schon geschrieben haben die vorherigen abfragen gut funktioniert, aber es hat leider etwas lange für große datensätze gedauert.
darum habe ich eine andere möglihckeit versucht über extent und box. hat auch super geklappt, aber dabei bekomme ich ja auch höhendaten außerhalb des untersuchungsgebietes bzw. außerhalb der grenzen von z.B. nordfriesland.
um diesen “rand” weg zubekommen habe ich folgende aubfrage geschrieben:
select dgm5_gk3.x, dgm5_gk3.y, dgm5_gk3.z, dgm5_gk3.the_geom
from dgm5_gk3
where
intersects((select dgm5_gk3.the_geom
from dgm5_gk3
where dgm5_gk3.the_geom &&
SetSRID(‘BOX(3453616 6014639,3521308 6103441)’::box2d, 31467)),
(select the_geom from kreise_sh_gk3 where kreis = ‘Nordfriesland’));
doch jedesmal bekomme ich die fehlermeldung: FEHLER: als Ausdruck verwendete Unteranfrage ergab mehr als eine Zeile
die einzelnen unterabfragen funktionieren, aber in kombination halt nicht.
ich würde mich freuen, wenn ihr mal über die abfrage schaut und mir vielleicht einen tipp geben könntet was ich dort falsch gemacht habe.
ich bin bei der fehlermedlung auch immer bisschen verwirrt. weil warum geht es nicht wenn die abfrage mehr als einen punkt liefert?
es sollen ja im prinzip viele punkte als ergebnis herrauskommen, oder verstehe ich die meldung falsch?