[Talk-de] Ersatz fuer Namefinder

Christof Amelunxen christof.amelunxen at sbg.ac.at
Mo Apr 27 12:56:57 UTC 2009


Hi Marcus,

marcus.wolschon at googlemail.com wrote:
> On Fri, 24 Apr 2009 16:38:40 +0200, Christof Amelunxen
> <christof.amelunxen at sbg.ac.at> wrote:
>> Hi Marcus,
>>
>> marcus.wolschon at googlemail.com 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





Mehr Informationen über die Mailingliste Talk-de