ArcGIS Desktop

  • ArcGIS Pro
  • ArcMap

  • My Profile
  • Ayuda
  • Sign Out
ArcGIS Desktop

ArcGIS Online

La plataforma de representación cartográfica para tu organización

ArcGIS Desktop

Un completo SIG profesional

ArcGIS Enterprise

SIG en tu empresa

ArcGIS for Developers

Herramientas para crear aplicaciones basadas en la ubicación

ArcGIS Solutions

Plantillas de aplicaciones y mapas gratuitas para tu sector

ArcGIS Marketplace

Obtén aplicaciones y datos para tu organización.

  • Documentación
  • Soporte
Esri
  • Iniciar sesión
user
  • Mi perfil
  • Cerrar sesión

ArcMap

  • Inicio
  • Introducción
  • Cartografiar
  • Analizar
  • Administrar datos
  • Herramientas
  • Extensiones

ST_Relate

  • Definición
  • Sintaxis
  • Tipo de devolución
  • Ejemplos

Definición

ST_Relate compara dos geometrías y devuelve 1 (Oracle y SQLite) o t (PostgreSQL) si las geometrías cumplen las condiciones especificadas por la cadena de caracteres de la matriz de patrón DE-9IM; de lo contrario, devuelve 0 (Oracle y SQLite) o f (PostgreSQL).

Cuando se utiliza en SQLite, existe una segunda opción al utilizar ST_Relate en SQLite: puede comparar dos geometrías para obtener una cadena de caracteres que represente la matriz de patrón DE-9IM que defina la relación de las geometrías entre sí.

Sintaxis

Oracle y PostgreSQL

sde.st_relate (geometry1 sde.st_geometry, geometry2 sde.st_geometry, patternMatrix string)

SQLite

Opción 1

st_relate (geometry1 st_geometry, geometry2 st_geometry, patternMatrix string)

Opción 2

patternMatrix string st_relate (geometry1 st_geometry, geometry2 st_geometry)

Tipo de devolución

Booleano

La opción 2 para SQLite devuelve una cadena de caracteres.

Ejemplos

Una matriz de patrón DE-9IM es un dispositivo para comparar geometrías. Hay varios tipos de matrices de este tipo. Por ejemplo, la matriz de patrón igual (T*F**FFF*) le dirá si alguna de las dos geometrías es igual.

En estos ejemplos, se crea una tabla, relate_test, con tres columnas espaciales y se insertan entidades de puntos en cada una de ellas. La función ST_Relate se usa en la declaración SELECT para comprobar si los puntos son iguales. Si sabe que desea determinar si las geometrías son iguales, es recomendable que use la función ST_Equals.

Oracle

CREATE TABLE relate_test (
 g1 sde.st_geometry,
 g2 sde.st_geometry,
 g3 sde.st_geometry
);
INSERT INTO relate_test (g1, g2, g3) VALUES (
 sde.st_geometry ('point (10.02 20.01)', 4326),
 sde.st_geometry ('point (10.02 20.01)', 4326),
 sde.st_geometry ('point (30.01 20.01)', 4326)
);
SELECT sde.st_relate (g1, g2, 'T*F**FFF*') g1_equals_g2, 
 sde.st_relate (g1, g3, 'T*F**FFF*') g1_equals_g3, 
 sde.st_relate (g2, g3, 'T*F**FFF*') g2_equals_g3 
 FROM RELATE_TEST;

Devuelve lo siguiente:

g1_equals_g2     g1_equals_g3      g2_equals_g3
1                0                 0

PostgreSQL

CREATE TABLE relate_test (
 g1 sde.st_geometry,
 g2 sde.st_geometry,
 g3 sde.st_geometry
);
INSERT INTO relate_test (g1, g2, g3) VALUES (
 sde.st_geometry ('point (10.02 20.01)', 4326),
 sde.st_geometry ('point (10.02 20.01)', 4326),
 sde.st_geometry ('point (30.01 20.01)', 4326)
);
SELECT st_relate (g1, g2, 'T*F**FFF*') AS "g1=g2", 
 st_relate (g1, g3, 'T*F**FFF*') AS "g1=g3",
 st_relate (g2, g3, 'T*F**FFF*') AS "g2=g3" 
 FROM relate_test;

Devuelve lo siguiente:

g1=g2     g1=g3     g2=g3
t          f         f

SQLite

En el primer ejemplo se muestra la primera opción de ST_Relate, que compara dos geometrías en función de una matriz de patrón DE-9IM para devolver 1 si las geometrías cumplen los requisitos definidos en la matriz o 0 si no los cumplen.

CREATE TABLE relate_test (id integer primary key autoincrement not null);
SELECT AddGeometryColumn(
 NULL,
 'relate_test',
 'g1',
 4326,
 'point',
 'xy',
 'null'
);
CREATE TABLE relate_test2 (id integer primary key autoincrement not null);
SELECT AddGeometryColumn(
 NULL,
 'relate_test2',
 'g2',
 4326,
 'point',
 'xy',
 'null'
);
CREATE TABLE relate_test3 (id integer primary key autoincrement not null);
SELECT AddGeometryColumn(
 NULL,
 'relate_test3',
 'g3',
 4326,
 'point',
 'xy',
 'null'
);
INSERT INTO relate_test (g1) VALUES (
 st_geometry ('point (10.02 20.01)', 4326)
);
INSERT INTO relate_test2 (g2) VALUES (
 st_geometry ('point (10.02 20.01)', 4326)
);
INSERT INTO relate_test3 (g3) VALUES (
 st_geometry ('point (30.01 20.01)', 4326)
);
SELECT st_relate (relate_test.g1, relate_test2.g2, 'T*F**FFF*') AS "g1=g2", 
 st_relate (relate_test.g1, relate_test3.g3, 'T*F**FFF*') AS "g1=g3",
 st_relate (relate_test2.g2, relate_test3.g3, 'T*F**FFF*') AS "g2=g3" 
 FROM relate_test, relate_test2, relate_test3;

Devuelve lo siguiente:

g1=g2     g1=g3     g2=g3
1          0         0

En este ejemplo se comparan dos geometrías y se devuelve la matriz de patrón DE-9IM.

SELECT st_relate (g1,g3)
 FROM relate_test;

Devuelve lo siguiente:

st_relate (g1,g3)
FF0FFF0F2

Temas relacionados

  • Cargar la biblioteca ST_Geometry de SQLite

ArcGIS Desktop

  • Inicio
  • Documentación
  • Soporte

Plataforma ArcGIS

  • ArcGIS Online
  • ArcGIS Desktop
  • ArcGIS Enterprise
  • ArcGIS for Developers
  • ArcGIS Solutions
  • ArcGIS Marketplace

Acerca de Esri

  • Quiénes somos
  • Empleo
  • Blog de Esri
  • Conferencia de usuarios
  • Cumbre de desarrolladores
Esri
Díganos su opinión.
Copyright © 2019 Esri. | Privacidad | Legal