ich hab eine Datenbank mit 2 Tabellen: “BergeA” und “BergeB” (beide aus Shapefiles importiert). Die Tabellen haben jeweils 2 Spalten: Name und Hoehe. Wie kann ich die Höhen aus BergeB an BergeA übergeben ? Also : Wenn Name von BergeA gleich Name von BergeB UND die Entfernung zwischen den beiden Punkten kleiner 2 KM ist ( um Verwechslung mit gleichnamigen anderen Bergen zu vermeiden) dann übernimm den Hoehenwert von BergeB.
Kann mir freundlicherweise jemand helfen, wie der entsprechende SQL-Befehl lauten müßte ?
update berg_a set hoehe = b.hoehe from berg_b b where berg_a.name=b.name and distance(berg_a.geom, b.geom)<10
ist genau das was ich suchte. Werde es später ausprobieren. Dazu allerdings noch zwei Fragen: Als SRID haben beide Tabellen 4326 - Einheit wäre also Dezimalgrad. Liefert distance(berg_a.geom, b.geom) das Ergebnis immer mit Einheit KM ?
Und berücksichtigt distance(berg_a.geom, b.geom) dass die Erde ein Rotationsellipsoid ist ?
Du könntest auch statt distance distance_sphere/spheroid verwenden. Die nutzen ein Spheroid zur Berechnung. Allerdings stellt sich die Frage wieviel das letztlich ausmacht bei vermutlich kurzen Entfernungen. Ob die Entfernungen metrisch ausgegeben werden müsstest du ausprobieren, das kann ich im Moment nicht mit Sicherheit sagen (WIMRE aber in der Einheit des SR, hier also Grad). Andernfalls könntest du die beteiligten Geometrien erst mit transform in z.B. GaussKrüger umwandeln und dann den Abstand berechnen.
distance_sphere liefert die Distanz als einzige Funktion immer in Metern. Bei allen anderen Funktionen bekommt man soviel ich weiß die Einheit des SRIDs. Also würde ich einfach distance_sphere verwenden.
Attention: Meter! Nicht Kilometer! Ich betone das nur aus Erfahrung, da hier gerne Fehler gemacht werden