ArcGIS Desktop

  • ArcGIS Pro
  • ArcMap

  • My Profile
  • 帮助
  • Sign Out
ArcGIS Desktop

ArcGIS Online

专为贵组织打造的制图平台

ArcGIS Desktop

全面的专业性 GIS

ArcGIS Enterprise

面向企业的 GIS

ArcGIS Developers

用于构建位置感知应用程序的工具

ArcGIS Solutions

适用于行业的免费模板地图和应用程序

ArcGIS Marketplace

获取适用于组织的应用程序和数据

  • 文档
  • 支持
Esri
  • 登录
user
  • 我的个人资料
  • 登出

ArcMap

  • 主页
  • 入门
  • 地图
  • 分析
  • 管理数据
  • 工具
  • 扩展模块

ST_Relate

  • 定义
  • 语法
  • 返回类型
  • 示例

定义

ST_Relate 比较两个几何,如果几何满足 DE-9IM 模式矩阵字符串指定的条件,则返回 1(Oracle 和 SQLite)或 t (PostgreSQL);否则,返回 0(Oracle 和 SQLite)或 f (PostgreSQL)。

如果在 SQLite 中使用,在 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)

返回类型

布尔型

适用于 SQLite 的选项 2 将返回一个字符串。

示例

DE-9IM 模式矩阵是一种用于比较几何的设备。此矩阵分为多种类型。例如,相等模式矩阵 (T*F**FFF*) 将告知您任意两几何是否相等。

在这些示例中,将创建包含三个空间列的表 relate_test,每个空间列中均插入了点要素。ST_Relate 函数用于在 SELECT 语句中测试各点是否相同。请注意,如果想要确定几何是否相等,则建议使用 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

相关主题

  • 加载 SQLite ST_Geometry 库

ArcGIS Desktop

  • 主页
  • 文档
  • 支持

ArcGIS

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

关于 Esri

  • 关于我们
  • 招贤纳士
  • Esri 博客
  • 用户大会
  • 开发者峰会
Esri
分享您的想法。
Copyright © 2021 Esri. | 隐私政策 | 法律声明