Mehr

Gruppieren nach Standort innerhalb von N Metern in PostGis

Gruppieren nach Standort innerhalb von N Metern in PostGis


In PostGIS, mehrere gegebenOrtObjekte, die jeweils etwa so aussehen:

{ :id => 1, :latitude => 32.4196, :ll_point => "(-10111.1877176122, -5384086.44077608, 3419435.33326163)", :longitude => -90.1076, :updated_at => nil, :user_id => 1 }

was wäre der optimale Weg, um Gruppen von Standorten zu generieren, mit dem Endziel, dies sagen zu können?Benutzer1gemeinsame Standorte X, Y und Z mitBenutzer4. 'Einen Standort teilen' ist definiert, wenn man sich innerhalb von zehn Metern voneinander befunden hat.

Gibt es eine Möglichkeit, so etwas wie eine Gruppe zu machen?Standort innerhalb von X Metern?


Wenn eine paarweise Gruppierung ausreichend ist, reicht eine relativ einfache und leistungsstarke Abfrage aus

SELECT a.id, b.id, st_distance(a.geog, b.geog) FROM pts a JOIN pts b ON ST_DWithin(a.geog, b.geog, %radius)

Wenn Ihre Punkte lon/lat sind, wird die Verwendung einer geografischen Spalte wie oben beschrieben vereinfacht. Wenn Sie intern Mercator-Koordinaten verwenden, müssen Sie einen Skalierungsfaktor von 1/cos(lat) auf die Entfernung anwenden, um eine echte Radiussuche zu erhalten.


Schau das Video: Tutorial Postgis Tutorial 168: Postgis raster