ST_Geometry 的空间运算函数

  • 缓冲几何
  • 凸包
  • 几何的差集
  • 几何的交集
  • 几何的对称差集
  • 几何的并集
  • 最小距离
  • 聚合

空间运算利用几何函数来接收输入的空间数据,对其进行分析,然后生成输出数据,输出数据为针对输入数据执行分析的派生结果。

完成以下操作可从输入数据创建新数据。

缓冲几何

ST_Buffer 函数通过在指定距离圈定几何生成一个几何。缓冲主要几何时或者当某个集合的缓冲多边形相距足够近会重叠时,将生成单独的多边形。当被缓冲的集合中的元素之间存在足够的间距时,各个缓冲 ST_Polygons 将生成一个 ST_MultiPolygon。

ST_Buffer 函数既接受正距离也接受负距离,但只有维度为 2 的几何(ST_Polygon 和 ST_MultiPolygon)可以应用具有负距离的缓冲区。源几何的维度小于 2 时,将使用缓冲距离的绝对值;也就是说,所有几何既不是 ST_Polygon 也不是 ST_MultiPolygon。一般来说,正值缓冲距离将生成远离源几何中心的面环,(就 ST_Polygon 或 ST_MultiPolygon 的外部环而言)负值缓冲距离将生成趋向源几何中心的面环。对于 ST_Polygon 或 ST_MultiPolygon 的内部环而言,缓冲距离为正值时缓冲区圆环将趋向中心;缓冲距离为负值时缓冲区圆环将远离中心。缓冲过程将合并重叠的缓冲多边形。负值距离大于多边形最大内部宽度的二分之一时,将产生一个空几何。

有关语法和示例,请参阅 ST_Buffer。

凸包

ST_ConvexHull 函数用于返回任何几何的凸包,该几何至少包含用于形成凸形的三个折点。如果几何的折点未形成凸形,ST_ConvexHull 将返回空值。例如,将 ST_ConvexHull 应用于由两个折点组成的一条线,将会返回空值。同样,使用 ST_ConvexHull 对某个点要素进行操作,也将返回空值。镶嵌一组点以创建不规则三角网 (TIN) 时的第一个步骤通常是创建凸包。

有关语法和示例,请参阅 ST_ConvexHull。

几何的差集

ST_Difference 函数用于返回主要几何中未被次要几何相交的部分(即空间的逻辑与非)。ST_Difference 函数仅用于操作具有相似维度的几何,并且返回与源几何具有相同维度的集合。如果源几何相等,则返回一个空几何。

注:

在以下四个图中,第一个输入几何是黑色,第二个输入几何是橙色。

有关语法和示例,请参阅 ST_Difference。

几何的交集

ST_Intersection 函数用于返回两个几何的交集。交集始终作为一个集合返回,该集合是源几何的最小维度。例如,对于与 ST_Polygon 相交的 ST_LineString,ST_Intersection 函数将返回与 ST_Polygon 的内部和边界的公共部分作为 ST_MultiLineString。如果源 ST_LineString 有两个或更多的不连续线段与 ST_Polygon 相交,ST_MultiLineString 将包含多个 ST_LineString。如果两个几何未相交或者如果相交结果的维度比两个源几何的维度都少,将返回空几何。下图展示了一些 ST_Intersection 函数的示例。

ST_Intersection 函数返回的交集的维度,与源几何的最小维度一样有关语法和示例,请参阅  ST_Intersection。

几何的对称差集

ST_SymmetricDiff 函数用于返回两个几何的对称差集(空间的逻辑异或)。源几何必须具有相同的维度。如果两个几何相等,ST_SymmetricDiff 函数将返回一个空几何;否则,此函数将以集合的形式返回结果。

ST_SymmetricDiff 返回不属于交集中一部分的源几何部分。源几何必须具有相同的维度。

有关语法和示例,请参阅 ST_SymmetricDiff。

几何的并集

ST_Union 函数用于返回两个几何的并集(空间的布尔逻辑或)。源几何必须具有相同的维度。ST_Union 始终以集合的形式返回结果。

ST_Union 返回两个几何的并集

有关语法和示例,请参阅 ST_Union。

最小距离

先前的函数返回了新的几何。ST_Distance 函数以两个要素作为输入,并返回二者之间的最小距离。

分隔两个要素的最小距离表示在两个位置之间的最短距离(直线距离)。举例来说,该距离不是您驾车从一个位置到另一个位置必须通过的距离,而是在地图上这两个位置之间画一条直线时需要计算的距离。ST_Distance 函数用于报告分隔两个不相交几何的最小距离。如果两个几何相交(也就是说它们重合),此函数将报告最小距离为零。

聚合

聚合操作返回单个几何,该几何是对多个几何分析的结果。ST_Aggr_ConvexHull 函数用于返回由每个输入几何的凸包组成的多面。任何包含少于三个折点的输入几何将不具有凸包。如果所有输入几何包含的折点都少于三个,ST_Aggr_ConvexHull 将返回空值。

ST_Aggr_Intersection 函数用于返回单个几何,该几何是所有输入几何交集的聚合。一个查询可能会发现大量要素相交。如果使用 ST_Intersection 运算符,将返回代表每组几何的交集的多个要素。例如,如果将一个线要素类和一个点要素类相交,将为每个交集返回一个 ST_Point 几何。

如果改用 ST_Aggr_Intersection,将仅返回一个几何集合。例如,如果要用一个几何代表上述的线要素类和点要素类的交集,ST_Aggr_Intersection 将返回一个包含交集所有点的 ST_MultiPoint 几何。但如果仅有一个点和一条线相交,此函数将返回 ST_Point 几何。

ST_Aggr_Intersection 可查找多个几何的交集;而 ST_Intersection 仅查找两个几何之间的交集。例如,如果需要查找各种特定的服务(例如,特定校区、电话服务、高速 Internet 提供商)覆盖并且由特定议员代表的地产,将需要查找所有这些区域的交集。仅查找这些区域中两个区域的交集将不会返回您需要的所有信息,因此使用 sde.ST_Aggr_Intersection 函数以便能够在同一查询中计算所有区域。

ST_Aggr_Union 函数返回一个几何,该几何是所有提供的几何的并集。这些输入几何必须具有相同的类型;例如,可以将 ST_LineString 与 ST_LineString 合并,也可以将 ST_Polygon 与 ST_Polygon 合并,但不能将 ST_LineString 要素类与 ST_Polygon 要素类合并。通过聚合并集生成的几何通常是一个集合。例如,如果需要所有小于半英亩的闲置宗地的聚合并集,返回的几何将是一个多面;除非所有满足条件的宗地都是毗连的,此时将返回一个面。

ST_Geometry 的空间运算函数相关推荐

  1. Openssl 之大数运算函数 BN

    Openssl 之大数运算函数 BN 主要介绍Openssl中的有关大数运算函数,这个对于RSA研究和实现比较有价值   1.初始化函数 BIGNUM *BN_new(void);    新生成一个B ...

  2. 与 ST_Geometry 配合使用的 SQL 函数

    与 ST_Geometry 配合使用的 SQL 函数 SQL 函数的列表 进行以下任意操作时,会创建特定的 SQL 函数和类型: 在 Oracle 或 PostgreSQL 数据库中创建地理数据库. ...

  3. OpenLayers结合Turf实现空间运算

    1. 引言 空间运算利用几何函数来接收输入的空间数据,对其进行分析,然后生成输出数据,输出数据为针对输入数据执行分析的派生结果. 可从空间运算中获得的派生数据包括: 作为输入要素周围缓冲区的面 作为对 ...

  4. C++学习笔记-----在重载的赋值运算函数中调用拷贝构造函数

    类的拷贝构造函数与赋值运算不同,拷贝构造函数是对这个类进行初始化的过程,而赋值是删除原有的东西,赋予它新的东西. 但是二者在实现上是互通的. template<class T> graph ...

  5. Pandas知识点-统计运算函数

    Pandas知识点-统计运算函数 统计运算非常常用.本文介绍Pandas中的统计运算函数,这些统计运算函数基本都可以见名知义,使用起来非常简单. 本文使用的数据来源于网易财经,具体下载方法可以参考:h ...

  6. Python数字类型:数值运算操作符、数值运算函数、类型判断函数、类型转换函数

    一.数字类型 (一)整数类型int(integer) int与数学中的整数概念一致 特点:可正可负,没有取值范围 整数有四种表示形式: 十进制,没有引导符号:10, 88,-485 二进制,以0(零) ...

  7. php 超大整数计算,PHP int 超大溢出整数的 加减运算函数,如果有更好的方法欢迎探讨...

    [分享]PHP int 超大溢出整数的 加减运算函数,如果有更好的方法欢迎探讨 分享一个溢出整数加减的运算函数,刚刚写的,对于溢出的整数可以用这个来进行加减运算. 遗憾的几点是: 一代码太多: 二只有 ...

  8. mysql的空间查询函数_MYSQL空间查询函数

    数据写入 插入时使用ST_GeomFromText,也可使用GeomFromText INSERT INTOt_customers ( lon_lat_point )VALUES( GeomFromT ...

  9. python 3.28 第三章 函数嵌套/名称空间//内置名称空间/全局名称空间/局部名称空间/作用域/函数对象/闭包函数。...

    1 函数嵌套: 函数内可以调用了其他的函数. # def max2(x,y):# if x > y:# return x# else:# return y## def max3(x,y,z):# ...

最新文章

  1. 获取线程中抛出的异常信息
  2. 精灵盛典电脑模拟器服务器怎么修改,精灵盛典ios电脑版
  3. i java_Java中的i++和i--
  4. 三星emcp型号详解_嵌入式存储产品发展趋势:uMCP取代eMCP序幕拉开
  5. Unable to instantiate default tuplizer [org.hibernate.tuple.entity.PojoEntityTuplizer]
  6. C#操作Excel时,Excel常用的方法和属性zz
  7. 欧几里得算法扩展欧几里得算法
  8. android 根据版本,Android – 根据构建类型更改flavor版本名称
  9. html5 coverflow,使用CSS+JS帮你实现苹果cover flow效果
  10. 分布式搜索ElasticSearch单机与服务器环境搭建
  11. 前端学习(2882):实现视图初始化
  12. 调整linux系统时区
  13. OpenCV 4.5 发布!
  14. 自动出报表,零代码做驾驶舱,我找到了Excel的顶级替代
  15. c语言 键盘 屏幕,c语言之键盘输入语屏幕输出.pptx
  16. IAR 8.50.9破解后,遇到IarIdePm Encoutered an improper argument错误记录
  17. Linux 命令 大结
  18. Word 中自动设置匹配章、节序号的标题
  19. [文献阅读]Detecting Spacecraft Anomalies Using LSTMs and Nonparametric Dynamic Thresholding
  20. jzy3D从入门到弃坑_2使用jzy3D0.9画2D散点图

热门文章

  1. 中国通信简史 (下)
  2. 抖音蓝V如何认证,蓝V号与普通号的区别?
  3. java保存时间到数据库_java new date 保存到数据库时间不对
  4. android 截取验证码的两种实现方式
  5. IT:后端进阶技术路线图(初级→中级→高级)、后端开发工程师(技术方向分类之后台业务开发/中间件/内核/分布式架构)基础知识简介、技术路线/技术趋势指南(如何选择自己的技术方向)之详细攻略
  6. 广告设计、海报、宣传单、易拉宝、照片放大、网站设计;
  7. 怎么抓取计算机窗口,又学会了一种黑别人电脑的方法——如何在登录界面获取shell...
  8. JAVA利用keytool工具生成.crt和.key文件
  9. 智慧屏与普通屏幕有何区别?
  10. python语言小程序-微信小程序可以用Python语言编写吗?