Es posible realizar búsquedas espaciales como parte de las funciones SQL. Las búsquedas espaciales pueden ser implícitas a través de las opciones seleccionadas en el cuadro de diálogo SQL o explícitas mediante el uso de la palabra clave SPATIAL en una consulta escrita.
Las búsquedas espaciales implícitas se definen completamente en el cuadro de diálogo SQL y se pueden realizar entre dos capas de red o entre una capa de red y una capa GIS, como se indica a continuación:
Para incluir un campo en la búsqueda de capas espaciales, seleccione el campo en el cuadro Campo o escriba directamente en el cuadro de edición mediante la sintaxis que se muestra debajo, donde el nombre de campo se incluye en la consulta mediante la sintaxis gislayer.<field_name>.
A continuación, se enumeran ejemplos de este tipo de consulta, que pueden encontrarse en el tema de la Ayuda ejemplo de SQL: tuberías críticas.
Cuando en la consulta se definen tanto las opciones de selección de búsqueda espacial como las opciones de selección de tipo de objeto, primero se realiza la búsqueda espacial. La consulta principal que utiliza criterios de tipo de objeto se lleva a cabo en los resultados de la búsqueda espacial. Por ejemplo:
diameter > 200
Esta consulta:
diameter > 200
utiliza datos de GIS para encontrar todas las tuberías con un diámetro superior a 200 que se encuentran en un radio de 2 metros de una carretera.
z < 100 AND gislayer.area > 150
selecciona todos los nodos que tienen una elevación inferior a 100 y que se encuentran dentro de un polígono con un área superior a 150.
La principal ventaja de utilizar la palabra clave SPATIAL para búsquedas espaciales es que permite una combinación de líneas en el bloque SQL, algunas de las cuales utilizan la búsqueda espacial y otras no.
Para realizar búsquedas espaciales explícitas mediante la palabra clave SPATIAL también es necesario definir la tabla de objetos de la consulta en la que se realiza la búsqueda, lo que se hace mediante una sencilla cláusula SELECT. El orden en el que se escriben es:
La sintaxis para utilizar la búsqueda espacial en consultas es la siguiente:
SPATIAL <geometry type> <layer type> <layer name>; SELECT FROM <object type>;
SPATIAL <geometry type> <layer type> <layer name> <distance>; SELECT FROM <object type>;
| Función de sintaxis SPATIAL | Opciones de sintaxis | Descripción | |
|---|---|---|---|
| Tipo de geometría | Cruce | Busca objetos de red que intersequen una línea de capa o un área de polígono. | |
| Dentro | Busca objetos de red dentro de un polígono de capa. | ||
| Contiene | Busca polígonos de red con objetos de capa dentro del polígono. | ||
| Distancia | Busca objetos de red dentro de una distancia de búsqueda de un punto, línea o polígono de capa. | ||
| Más cercano | Busca el objeto de red más cercano dentro de una distancia especificada. Si hay más de un objeto dentro de la distancia especificada, el primer objeto encontrado se devuelve como resultado. | ||
| Tipo de capa | Red | Capa de objetos en la red activa | |
| GIS | Capa de fondo GIS que se muestra detrás de la red en GeoPlan | ||
| Nombre de capa | Debe ser una cadena entre comillas para Capas GIS y un nombre de tabla (no entre comillas, si lo desea, entre comillas [ ] si es una sola palabra sin espacios o entre comillas [ ] si no lo es) para objetos de red. | ||
| Distancia |
Importante: Un valor de Distancia solo es obligatorio o solo se utiliza cuando se utilizan los tipos de geometría Distancia o Más cercano.
Consejo: El valor de entrada del campo Distancia puede ser una constante numérica o una variable escalar.
|
||
SPATIAL Distance Network Reservoir 30.5; SELECT FROM [All Nodes]
Esta consulta seleccionará primero todos los nodos que se encuentren dentro de un polígono de red y, a continuación, seleccionará todos los nodos que se encuentren a menos de 30,5 unidades de distancia de un objeto de depósito.
También es posible excluir la búsqueda espacial de los segmentos de consultas mediante la siguiente sintaxis:
SPATIAL NONE;
Cuando se añade SPATIAL NONE como bloque a una consulta, se cancela o anula la cláusula SPATIAL (implícita o explícita) que está en vigor para el resto de la consulta; es decir, la cláusula SQL tiene su significado normal y actúa sobre los datos de la red sin referencia a ninguna búsqueda espacial. Se pueden añadir cláusulas SPATIAL adicionales a una consulta después de un bloque SPATIAL NONE para introducir nuevas cláusulas de búsqueda espacial si se desea.
Esto permite obtener una mezcla de líneas en un bloque SQL, algunas de las cuales utilizan la búsqueda espacial y otras no, lo que garantiza una mayor flexibilidad.
En la tabla siguiente se detallan las combinaciones compatibles de geometrías para cada tipo de búsqueda.
|
Tipo de búsqueda espacial |
Descripción de tipo de búsqueda |
Combinaciones de geometría compatibles |
||||||||
|---|---|---|---|---|---|---|---|---|---|---|
|
Cruce |
Busca objetos de red que intersequen una línea de capa o un área de polígono. |
|
||||||||
|
Dentro |
Busca objetos de red dentro de un polígono de capa. |
|
||||||||
|
Contiene |
Busca polígonos de red con objetos de capa dentro del polígono. |
|
||||||||
|
Distancia |
Busca objetos de red dentro de una distancia de búsqueda de un punto, línea o polígono de capa. |
|
||||||||
|
Más cercano |
Busca el objeto de red más cercano dentro de una distancia especificada. Si hay más de un objeto dentro de la distancia especificada, el primer objeto encontrado se devuelve como resultado. |
|