ArcGIS Desktop

  • ArcGIS Pro
  • ArcMap

  • My Profile
  • Справка
  • Sign Out
ArcGIS Desktop

ArcGIS Online

Картографическая платформа вашей организации

ArcGIS Desktop

Полноценная профессиональная ГИС

ArcGIS Enterprise

ГИС предприятия

ArcGIS Developers

Инструменты для встраивания приложений с местоположениями

ArcGIS Solutions

Бесплатные шаблоны карт и приложений для отрасли

ArcGIS Marketplace

Получение приложения и данных для вашей организации.

  • Документация
  • Поддержка
Esri
  • Войти
user
  • Мой профиль
  • Выход

ArcMap

  • На главную
  • Начало работы
  • Карта
  • Анализ
  • Управление данными
  • Инструменты
  • Дополнительные модули

ST_Relate

  • Описание
  • Синтаксис
  • Тип возвращаемого значения
  • Примеры

Описание

ST_Relate сравнивает две геометрии и возвращает значение 1 (Oracle и SQLite) либо t (PostgreSQL), если геометрии соответствуют условиям, указанным строкой шаблонной матрицы DE-9IM. В противном случае возвращается значение 0 (Oracle и SQLite) либо f (PostgreSQL).

При работе в SQLite существует вторая возможность при использовании ST_Relate: можно сравнить две геометрии и возвратить строку с шаблонной матрицей DE-9IM, задающей отношение геометрий друг к другу.

Синтаксис

Oracle и PostgreSQL

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

SQLite

Опция 1

st_relate (geometry1 st_geometry, geometry2 st_geometry, patternMatrix string)

Опция 2

patternMatrix string st_relate (geometry1 st_geometry, geometry2 st_geometry)

Тип возвращаемого значения

Логический

Опция 2 для SQLite возвращает строку.

Примеры

Шаблонная матрица DE-9IM – это устройство для сравнения геометрий. Существует несколько типов таких матриц. Например, матрица равенства (T*F**FFF*) сообщит, равны ли две геометрии.

В данных примерах создается таблица relate_test с тремя пространственными столбцами, и в каждый вставляются точечные объекты. В выражении SELECT функция ST_Relate используется для определения того, одинаковы ли точки. Помните, что если вы хотите узнать, одинаковы ли геометрии, рекомендуется воспользоваться функцией 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;

Выводится следующее:

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;

Выводится следующее:

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

SQLite

Первый пример показывает первую опцию ST_Relate, сравнивающую две геометрии на основе шаблонной матрицы DE-9IM и возвращающая 1, если геометрии удовлетворяют требованиям, определенным в матрице, и 0 – если не удовлетворяют.

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;

Выводится следующее:

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

В этом примере сравниваются две геометрии и возвращается шаблонная матрица DE-9IM.

SELECT st_relate (g1,g3)
 FROM relate_test;

Выводится следующее:

st_relate (g1,g3)
FF0FFF0F2

Связанные разделы

  • Загрузка библиотеки ST_Geometry SQLite

ArcGIS Desktop

  • На главную
  • Документация
  • Поддержка

ArcGIS

  • ArcGIS Online
  • ArcGIS Desktop
  • ArcGIS Enterprise
  • ArcGIS
  • ArcGIS Developer
  • ArcGIS Solutions
  • ArcGIS Marketplace

Об Esri

  • О нас
  • Карьера
  • Блог Esri
  • Конференция пользователей
  • Саммит разработчиков
Esri
Расскажите нам, что вы думаете.
Copyright © 2021 Esri. | Конфиденциальность | Правовая информация