¿Cuándo debo usar ST_Buffer?

8

Me gustaría saber cuál es el sentido de usar la operación st_buffer. En la guía de referencia de PostGIS solo hay una sintaxis y una breve descripción de esta operación.

¿Podría dar algunos ejemplos para comprender las ventajas de esta operación?

fabrizio
fuente

Respuestas:

12

Como comenta @Underdark, ST_Dwithin es la forma recomendada de encontrar geometrías a distancia. En muchos otros sistemas gis, el método buffer es la única forma, pero construir buffers es bastante costoso.

Pero hay otros casos de uso cuando necesita almacenar en búfer. Una razón puede ser visualizar un búfer. Si, por ejemplo, desea mostrar el área a menos de 100 metros de una carretera, puede crear un búfer.

Otro caso es si desea que el área a 100 metros de la autopista se corte de otro mapa. Supongamos que tiene un mapa que muestra el uso real y desea analizar qué parte del área a menos de 100 metros de la carretera es bosque y cuánto es área agrícola. Luego crea un búfer y crea una intersección con el mapa de uso del área.

Hay un ejemplo en la página 8-10 de este tutorial:
http://postgisonline.org/map.php?tutorial=mixed_examples.html

Nicklas Avén
fuente
1
El último enlace parece estar muerto.
Aaron
6

OpenGeo proporciona un resumen bastante bueno de ST_Buffer. Tenga en cuenta la capacidad de pasar un radio negativo del búfer.

La función de búfer también es una solución útil a veces. Al pasar un radio de búfer de cero, puede construir una huella de una colección de geometrías o "reparar" una geometría de polígono no válida.

rec.thegeom
fuente
2

ummm para hacer un búfer? Eso es todo lo que realmente hace.

Realmente no llamaría a esto una breve descripción http://www.postgis.org/documentation/manual-svn/ST_Buffer.html

Un caso de uso es si desea seleccionar todos los objetos en una tabla que están dentro de los 20 m de cada objeto en otra tabla.

Nathan W
fuente
44
Creo que se recomienda usar ST_Distance para ese caso de uso.
oscuro
1
No, se recomienda usar ST_DWithin como Nicklas mencionó. ST_Distance es lento porque no usa un índice. ST_DWithin usa un índice y tiene una lógica de cortocircuito, por lo que no tiene que calcular la distancia por completo para determinar si 2 cosas están dentro de la distancia que especifique. ST_Buffer realmente solo debe usarse para visualización
LR1234567
Leí lo que esperaba leer, no lo que estaba escrito :-)
Nicklas Avén