Búsquedas SQL y espaciales

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.

Búsquedas espaciales implícitas

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:

  1. Elija el Tipo de búsqueda:
    • 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.
  2. Seleccionar Tipo de capa:
    • Capa de red: capa de objeto en la red activa
    • Capa GIS: capa de fondo GIS que se muestra detrás de la red en GeoPlan
  3. Seleccione la capa en el cuadro Capa.
    Nota: Al realizar una búsqueda mediante una capa GIS, la capa debe cargarse en la vista de GeoPlan.
    Nota: En la consulta se hace referencia a la capa como gislayer (incluso cuando se utiliza una red como tipo de capa).
  4. Si procede, defina un valor Distancia.
    Importante: Un valor de distancia solo es obligatorio o solo se utiliza cuando se utilizan los tipos de búsqueda Distancia o Más cercano.

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>.

Nota: Los campos espaciales pueden utilizarse en las consultas exactamente igual que los campos de objetos de red.

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.

Secuencia de operaciones

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:

SQL query context:
  • Tipo de objeto: tubería
  • [Espacial] Tipo de búsqueda: cruce
  • [Espacial] Tipo de capa: capa GIS
  • [Espacial] Capa: [SHP] carreteras


diameter > 200

Esta consulta:

  1. Buscar tuberías que crucen carreteras en la capa "[SHP] Roads"
  2. Utilice las tuberías del paso 1 para seleccionar las tuberías que tienen un diámetro superior a 200

Ejemplo 1

SQL query context:
  • Tipo de objeto: tubería
  • [Espacial] Tipo de búsqueda: distancia
  • [Espacial] Tipo de capa: capa GIS
  • [Espacial] Capa: [SHP] carreteras
  • [Espacial] Distancia: 2,0


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.

Ejemplo 2

SQL query context:
  • Tipo de objeto: todos los nodos
  • [Espacial] Tipo de búsqueda: interna
  • [Espacial] Tipo de capa: capa de red
  • [Espacial] Capa: polígonos


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.

Búsquedas espaciales explícitas con la palabra clave SPATIAL

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:

  1. Bloque de consulta SPATIAL
  2. Bloque de consulta SELECT
Importante: Las cláusulas SPATIAL y SELECT se definen como bloques de consulta independientes y deben estar separadas por un punto y coma " ; " (como se hace para separar bloques de consulta en general), aunque se comporten como un solo bloque.

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.

Reglas de uso de la palabra clave SPATIAL

  1. Al igual que las consultas estándar, las consultas espaciales también respetan las reglas de precedencia del cuadro de diálogo SQL; es decir, las opciones especificadas en los cuadros combinados y el cuadro de texto sirven como configuración espacial inicial hasta que se cambia mediante una instrucción SPATIAL. Por ejemplo:
    SQL query context:
    • Tipo de objeto: todos los nodos
    • [Espacial] Tipo de búsqueda: interna
    • [Espacial] Tipo de capa: capa de red
    • [Espacial] Capa: polígonos


    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.

  2. Cualquier cláusula SPATIAL solo permanece en vigor hasta el final del bloque que la contiene, es decir,
    • Si se encuentra dentro de un bloque IF / ELSE / ELSEIF, deja de tener cualquier efecto al final de ese bloque.
    • Si está en un bloque WHILE, deja de tener cualquier efecto al final de ese bloque.
    • Permanece en vigor en cualquier bloque IF / WHILE anidado contenido en un bloque existente.

Exclusión de la búsqueda espacial de las consultas

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.

Geometría y tipo de búsqueda espacial

En la tabla siguiente se detallan las combinaciones compatibles de geometrías para cada tipo de búsqueda.

Nota:
  • Para las capas GIS de ArcGIS Engine y ArcGIS Desktop, el tipo de búsqueda Dentro busca los objetos que se encuentran completamente dentro de un polígono.
  • Para capas GIS de MapXtreme, capas de red y capas de red de fondo, el tipo de búsqueda Dentro busca objetos cuyo centro se encuentra dentro de un contorno de polígono.
  • El tipo de búsqueda Cruce incluye todos los objetos Dentro de un polígono de capa y también los que intersecan el contorno.
  • El tipo de búsqueda Contiene busca polígonos de red con objetos de capa completamente dentro del polígono de red.
  • El tipo de búsqueda Más cercano busca el objeto de red más cercano en un radio 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 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.

Geometría de InfoWorks WS Pro

Geometría de capa
Línea

Línea

Polígono

Polígono

Línea

Polígono

Dentro

Busca objetos de red dentro de un polígono de capa.

Geometría de InfoWorks WS Pro

Geometría de capa
Punto Polígono
Línea Polígono
Polígono Polígono

Contiene

Busca polígonos de red con objetos de capa dentro del polígono.

Geometría de InfoWorks WS Pro

Geometría de capa
Polígono

Punto

Línea

Polígono

Distancia

Busca objetos de red dentro de una distancia de búsqueda de un punto, línea o polígono de capa.

Geometría de InfoWorks WS Pro

Geometría de capa
Punto

Punto

Línea

Polígono

Línea

Punto

Línea

Polígono

Polígono

Punto

Línea

Polígono

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.

Geometría de InfoWorks WS Pro

Geometría de capa
Punto

Punto

Línea

Polígono

Línea

Punto

Línea

Polígono

Polígono

Punto

Línea

Polígono