[email protected] wrote:

>> Das Problem ist die aggregate function "MIN" in Kombination mit
>> Distance(x,y), denn hierfür müssen zunächst einmal alle 
>> Kombinationen ausgerechnet werden, da hilft dir auch kein räumlicher
> Index
>> weiter, denn die werden bei dieser Abfrage 
>> nicht benutzt (zumindest nicht bei PostGIS oder Oracle Spatial).
> 
> Er macht doch nur ein MIN auf den Einträgen, welche dem WHERE entsprechen.

Klar, allerdings ist die WHERE-Bedingung ja genau das Problen, denn die lautet 
sinngemäß "für alle Punkte vom Typ XY die 
nicht weiter als der Suchradius XY voneinander entfernt sind". Wenn du dafür 
sowas wie "WHERE Distance(x,y) <= radius" 
schreibst, dann muss er die Distanz trotzdem erstmal für alle Kombinationen 
ausrechnen und kann dafür auch keinen Index 
benutzen - mit ST_DWithin hingegen klappt das.

> Ich nehme an ST_DWithin liefert dir alle elemente welche "within" sind
> und nicht das eine nächstgelegene welche der bounding-box aus der WHERE
> Bedingung entspricht?

Ja, eine "nearest neighbor"-Funktion gibt es bei Postgis aktuell nicht soweit 
ich weiß.

> Ich denke mal wir können abschliessen:
> * Es ist mit SQL möglich den einen oder keinen Ort zu einem Punkt
>   entsprechend der aktuell im Wiki dokumentierten Semantik zu finden.
> * Es ist mit SQL auf einer Datenbank mit 2D-index effizient möglich.
> Einverstanden?

Keine Einwände, bei meinem Hinweis ging es ja auch nicht um das "ob" sondern 
nur um das "wie" :-)


Grüße,
Christof


_______________________________________________
Talk-de mailing list
[email protected]
http://lists.openstreetmap.org/listinfo/talk-de

Antwort per Email an