Jak wykonać połączenie przestrzenne warstw punktowych i wielokątnych w PostGIS?

13

Mam punktowy zestaw danych reprezentujący gospodarstwa domowe, które chcę skojarzyć z warstwą działki (tzn. Przypisać jej identyfikator_przydziału). Za pomocą ArcMap mogłem przestrzennie połączyć wielokąty z punktami i określić, że połączenie ma określony promień wyszukiwania i użyć najbliższego wielokąta.

Chciałbym to zrobić z postgres i zastanawiałem się, jaki był najbardziej ostrożny sposób. Nie mogę używać ST_contains, ponieważ punkty spadają na ulice, a nie na rzeczywiste paczki. Czy zamiast ST_contains jest jeszcze jedna funkcja pozwalająca na sprawdzenie bliskości?

update households h set parcel_id = p.parcel_id 
from parcels p where ST_contains(p.the_geom, h.xy);
ako
źródło

Odpowiedzi:

8

W przypadku tego, co chcesz osiągnąć, myślę, że ST_DWithin zadziałałoby. Z dokumentacji strony PostGIS:

ST_DWithin - Zwraca wartość true, jeśli geometrie znajdują się w określonej odległości od siebie. Dla jednostek geometrycznych są to jednostki odniesienia przestrzennego, a dla jednostek geograficznych są w metrach, a domyślnym pomiarem jest use_spheroid = true (pomiar wokół sferoidy), dla szybszego sprawdzania use_spheroid = false do pomiaru wzdłuż kuli.

RK
źródło
Może to prawdopodobnie działać, ale sztuczka polega na ustawieniu odpowiedniego progu wyszukiwania. Ustaw go za wysoko, a dostanę więcej niż jeden mecz, ustaw go za niski i nie dostanę żadnego. Lub ustaw go wysoko i odrzuć dodatkowe rekordy dopasowania.
ako