Elementos espaciales a una distancia de un objecto (ST_Dwithin)

on

Algunas veces tienes una capa con información espacial que quieres asociar a otra. Pongamos el ejemplo de unos puntos que se suponen están situados sobre una vía de comunicación (carretera, autopista). Por ejemplo quieres trasladar la información de los puntos a la información lineal de la carretera. El problema es que muchas veces el punto no esta situado justo encima del eje-linea que define la carretera y esta operación no resulta tan fácil como cuando se utiliza un polígono. Se puede hacer un buffer y después un solape, pero hay una manera mas rápida puedes utilizar ST_DWithin. Esta opción te permite definir la distancia a la que se considera que el objeto A esta contenido dentro del objeto B.

ST_DWithin(geometry g1, geometry g2, double precision distance_of_srid);

boolean ST_DWithin(geography gg1, geography gg2, double precision distance_meters);

boolean ST_DWithin(geography gg1, geography gg2, double precision distance_meters, boolean use_spheroid);

Vamos a poner un ejemplo tenemos la capa A de puntos y la capa B de líneas y queremos seleccionar aquellos puntos con su gemometria que esta dentro de los 4 metros de distáncia de la capa B, mas el identificador (id) de la capa B. El query sería el siguiente:

SELECT a.row1, a.rowb a.geom, b.id
FROM A as a , B as b
WHERE st_dwithin(a.geom, b.geom, 4);

Así de simple es para realizar lo que normalmente se hace en dos pasos en tan solo uno.

Deixa un comentari

Fill in your details below or click an icon to log in:

WordPress.com Logo

Esteu comentant fent servir el compte WordPress.com. Log Out /  Canvia )

Google photo

Esteu comentant fent servir el compte Google. Log Out /  Canvia )

Twitter picture

Esteu comentant fent servir el compte Twitter. Log Out /  Canvia )

Facebook photo

Esteu comentant fent servir el compte Facebook. Log Out /  Canvia )

S'està connectant a %s