Hi Marcus,
[email protected] wrote:
> On Fri, 24 Apr 2009 16:38:40 +0200, Christof Amelunxen
> <[email protected]> wrote:
>> Hi Marcus,
>>
>> [email protected] wrote:
>>>> Mal gucken, ob ich das zu PostGIS "übersetzen" kann.
>>> Kann das Teil sowas wie:
>>>
>>> SELECT MIN(DISTANCE(X.location, Y.location)) AS distance, X.nodeID,
>>> T.value
>>> AS placetype
>>> FROM Nodes X, NodeTags T WHERE
>>> T.nodeID = X.nodeID AND T.key = 'place'
>>> und dann halt prüfen ob das resultiernde "distance"-Feld kleiner
>>> als der Radius des placetype ist?
>> Sowas kannst du bei PostGIS z.B. mit der Bedingung
>> ST_DWithin(geom1,geom2,distance) abbilden. Die Distanz zwischen zwei
>> Punkten bekommst du zwar mit ST_Distance auch heraus...wenn du allerdings
>> wie in deinem Beispiel erstmal die Distanz
>> aller möglichen Kombinationen berechnen lässt und davon das Minimum
>> ermitteln willst, dann läuft der SELECT ewig.
>
>
> Du selektierst ja nicht über alle Places eines type
> sondern nur die in einem maximalen sinnvollen Radius
> für diese Typ.
> Das sind im Normalfall 0, 1 oder vieleicht mal 2.
...wenn du so selektierst wie von dir beschrieben ("SELECT
MIN(DISTANCE(X.location, Y.location)) AS distance...") dann
selektierst "du" zwar nur einen Datensatz, aber "die Datenbank" selektiert,
berechnet und sortiert intern trotzdem alles
und das dauert genauso lange ;-)
Grüße,
Christof
_______________________________________________
Talk-de mailing list
[email protected]
http://lists.openstreetmap.org/listinfo/talk-de