Esta sección explica cómo crear consultas espaciales que utilizan predicados y funciones espaciales.
DB2 Spatial Extender incluye funciones que realizan varias operaciones sobre datos espaciales. Los ejemplos de esta sección le muestran cómo utilizar funciones espaciales para crear sus propias consultas espaciales.
La Tabla 3 contiene una lista de funciones espaciales y los tipos de
operaciones que pueden realizar.
Tabla 3. Funciones y operaciones espaciales
Tipo de función | Ejemplo de operación |
---|---|
Cálculo | Calcular la distancia entre dos puntos |
Comparación | Buscar todos los clientes ubicados en una zona de inundaciones |
Intercambio de datos | Convertir datos en formatos soportados |
Transformación | Añadir un radio de cinco millas a un punto |
Para obtener más información sobre funciones espaciales, consulte Geometrías y funciones espaciales asociadas y el Funciones espaciales para consultas SQL.
La siguiente consulta busca la distancia media de los clientes de cada centro comercial. Las funciones espaciales utilizadas en este ejemplo son ST_Distance y ST_Within.
SELECT s.id, AVG(db2gse.ST_Distance(c.location,s.location)) FROM customers c, stores s WHERE db2gse.ST_Within(c.location,s.zone)=1 GROUP BY s.id
La siguiente consulta busca las ubicaciones de los clientes que viven en el área de la bahía de San Francisco. Las funciones espaciales utilizadas en este ejemplo son ST_AsText (intercambio de datos) y ST_Within. ST_AsText convierte los datos espaciales de la columna c.location en el formato OGC TEXT.
SELECT db2gse.ST_AsText(c.location,cordref(1)) FROM customers c WHERE db2gse.ST_Within(c.location,:BayArea)=1
La siguiente consulta busca todas las calles de más de 10,5 millas. La función espacial utilizada es ST_Length.
SELECT s.name,s.id FROM street s WHERE db2gse.ST_Length(s.path) > 10.5
Esta consulta busca los clientes que viven dentro de un área con riesgo de inundación o a menos de 2 millas del límite del área con peligro de inundación. Las funciones espaciales utilizadas en este ejemplo son ST_Buffer (transformación) y ST_Within.
SELECT c.name,c.phoneNo,c.address FROM customers c WHERE db2gse.ST_Within(c.location,ST_Buffer(:floodzone,2))=1