Come eseguire un'unione spaziale di strati di punti e poligoni in PostGIS?


13

Ho un set di dati punto che rappresenta le famiglie che voglio associare a un livello pacchi (ovvero assegnare il suo parcel_id). Con ArcMap, potrei unire spazialmente i poligoni ai punti e specificare che il join ha un certo raggio di ricerca e utilizzare il poligono più vicino.

Vorrei farlo con Postgres e mi chiedevo quale fosse il modo più prudente di farlo. Non posso usare ST_contains perché i punti cadono sulle strade e non sui pacchi reali. Al posto di ST_contains, esiste un'altra funzione che consente i controlli di prossimità?

update households h set parcel_id = p.parcel_id 
from parcels p where ST_contains(p.the_geom, h.xy);

Risposte:


8

Per quello che vuoi realizzare, penso che ST_DWithin avrebbe funzionato. Dalla documentazione del sito PostGIS:

ST_DWithin - Restituisce vero se le geometrie si trovano entro la distanza specificata l'una dall'altra. Per le unità di geometria sono quelle di riferimento spaziale e Per le unità di geografia sono in metri e la misurazione è predefinita su use_spheroid = true (misura attorno allo sferoide), per un controllo più veloce, use_spheroid = false per misurare lungo la sfera.


Questo potrebbe probabilmente funzionare, ma il trucco è impostare una soglia di ricerca adeguata. Impostalo troppo alto e ottengo più di una partita, impostalo troppo basso e non ne ottengo nessuno. Oppure imposta il valore più alto e scarta i record delle partite extra.
ako,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.