1. 概述

PostGIS 是PostgreSQL数据库一个空间数据库扩展,它添加了对地理对象的支持,允许在 SQL 中运行空间查询

PostGIS官网:About PostGIS | PostGIS

PostGIS官方教程:PostGIS 简介 — Introduction to PostGIS

PostGIS相关教程:文章目录汇总 - 知乎 (zhihu.com)

本文基于官方教程描述PostGIS中的空间关系

数据准备可参考:

数据介绍可参考:

2. 空间关系

2.1 空间相等

空间相等即所有点坐标相同,使用的函数主要为:

  • ST_Equals (A, B) Tests if two geometries include the same set of points

这里先查询一个点的空间位置,再通过查空间位置得到相等的点

--  先查询一个点的空间位置再通过查空间位置相等的点
SELECT name, geom FROM nyc_subway_stations WHERE name = 'Broad St';

得到Broad St的geom: 0101000020266900000EEBD4CF27CF2141BC17D69516315141

SELECT name, geom FROM nyc_subway_stations WHERE ST_Equals(geom, '0101000020266900000EEBD4CF27CF2141BC17D69516315141');

2.2 空间相交

空间相交即空间物体存在交集,空间相离即不存在交集,使用的函数主要为:

  • ST_Intersects (A, B)Tests if two geometries intersect (they have at least one point in common)
  • ST_Disjoint (A, B) Tests if two geometries have no points in common
  • ST_Crosses (g1, g2) Tests if two geometries have some, but not all, interior points in common
  • ST_Overlaps (A, B) Tests if two geometries have the same dimension and intersect, but each has at least one point not in the other

查询与Broad St相交的社区,即所在的社区:

SELECT name, boroname
FROM nyc_neighborhoods
WHERE ST_Intersects(geom, '0101000020266900000EEBD4CF27CF2141BC17D69516315141');

查询与Broad St相离的社区:

SELECT name, boroname
FROM nyc_neighborhoods
WHERE ST_Disjoint(geom, '0101000020266900000EEBD4CF27CF2141BC17D69516315141');

  • 注意:ST_Disjoint和NOT ST_Intersects相同,但是NOT ST_Intersects由于使用空间索引速度更快

2.3 空间相接

空间相接即空间物体接触在一起但没有相交,使用的函数主要为:

  • ST_Touches (A, B) Tests if two geometries have at least one point in common, but their interiors do not intersect

查询与Financial District相接的社区:

SELECT name, boroname
FROM nyc_neighborhoods
WHERE ST_Touches(geom, '010600002026690000010000000103000000010000003E000000AE26601878CD2141A8154649043251416FD27013A2CE2141028D0997EA31514140B5133529D121411CA81D6DBA31514108E68423BBD22141B677D235AE3151417E26E8B3BED621418B4ABFFE383151415DE06CD1E5D42141CC24CC8C173151417E83EE8BB5D5214181364920FA30514186F762DD71D521411FC0E6C3F2305141E57CAD13AED42141D445EB861131514186ED801882D421410CA0A9D20E31514102B52A1A2AD5214103851C0FEC305141DFDD3D5706D5214161A7A062E7305141C73BCF8D4ED4214109F31DD306315141361F76C016D4214125D34D7601315141594A198FDED421417C62AFB4E23051412705A793B2D42141D0BD6C00E03051410F1A30F8E2D321411F0DF51AFC3051413955283AB7D3214103C388C2F63051415455A56792D42141F82177E5D7305141E2BF68695FD4214192A3C503D230514106F5E64887D321412CF4CB63F33051412C20E7A33FD32141FD87FD5CEB30514151C44B53FBD32141F7C9F23FCD3051415E52B3AED7D32141BD4D6541C7305141D361F4F90BD32141194693AFE430514171FBED91C4D22141E0419A04DA3051414D11DC1D94D32141C97EFD92BE3051415AA0819764D321419789EE94B63051415EB1130B7DD221410206BCABD03051418C20A84FF5D12141423080E9C530514197A4BACBB8D221410D456D73AA3051419929621795D221416A53F21DA5305141EA88BA7CD1D121416CD920E6C1305141458706338CD1214143DF03BFB53051411C9F4EE28AD22141C92023A190305141ECDFA4B826D221417B2706CF89305141E4CF36C31AD1214197E78734A9305141599DD95F30D02141CA753BDB8930514154D14E76DCCF21415A211D6E83305141EEDF4CD062D021410B2D607871305141A1E95BBE1AD02141F32D06116E305141EA5B2DBC95CF2141073CBE307D305141AB2BB0BB77CF21418BA3F0997830514194115BBBEBCE21413B3DAD7A703051416A379B7F02CF2141D7C1213F693051417817C35646CE2141E0F8F81060305141543781C758CD2141FCC490B15A3051415ECACC0248CD2141300236446B305141573E8FAF13CD214159517BDA6B3051415584FB8EFDCC2141703D1CB860305141DC857DD55ACC21419ACD859A6A305141B3C7A643E5CB2141EB98F85575305141BE9D309AFACA214161D6387B9730514104E75F4093CA21414F3A0F1FAE305141BAF3E7DE96CA2141EB1C5599BB305141CB16F111D8CA21413374C9E5BA30514139C75D5236CB2141FF265085C63051411A6F66C354CB2141394772D1C7305141B3C51CE272CB214173853A5ADA30514145238FAA46CB214185B878C1EB30514104AD1CE5B9CC21413F9E327D8B315141AE26601878CD2141A815464904325141');

2.4 空间包含

空间包含即一个空间物体包含在另一个物体内,主要使用的函数有:

  • ST_Within (A, B) Tests if every point of A lies in B, and their interiors have a point in common
  • ST_Contains (geomA, geomB) Tests if every point of B lies in A, and their interiors have a point in common

查询包含Broad St的社区:

SELECT name, boroname
FROM nyc_neighborhoods
WHERE ST_Contains(geom, '0101000020266900000EEBD4CF27CF2141BC17D69516315141');

2.5 空间相离

空间相离即Disjoint,前面已叙述有ST_Disjiont函数,这里主要叙述判断相离距离,主要函数有:

  • ST_Distance (A, B) Returns the distance between two geometry or geography values.
  • ST_DWithin(A, B, distance) Tests if two geometries are within a given distance

查询距离Broad St的10米内的街道:

SELECT name
FROM nyc_streets
WHERE ST_DWithin(geom, '0101000020266900000EEBD4CF27CF2141BC17D69516315141', 10);

3. 参考资料

[1]11. Spatial Relationships — Introduction to PostGIS

[2]PostGIS教程八:空间关系 - 知乎 (zhihu.com)

[3]PostGIS 3.3.3dev Manual

[4]PostGIS Cheat Sheet

PostGIS之空间关系的更多相关文章

  1. PostGIS 快速入门(转)

    原文:http://live.osgeo.org/zh/quickstart/postgis_quickstart.html PostGIS 是 PostgreSQL 关系数据库的空间操作扩展.它为 ...

  2. PostgreSQL+PostGIS

    PostGIS简介 PostGIS是对象关系型数据库系统PostgreSQL的一个扩展,PostGIS提供如下空间信息服务功能:空间对象.空间索引.空间操作函数和空间操作符.同时,PostGIS遵循O ...

  3. PostGIS官方教程汇总目录

    一.PostGIS介绍 二.PostGIS安装 三.创建空间数据库 四.加载空间数据 五.数据 六.简单的SQL语句 七.几何图形(Geometry) 八.关于几何图形的练习 九.空间关系 十.空间连 ...

  4. PostGIS(解压版)安装

    1.软件下载 postgresql-9.6.1-1-windows-x64-binaries.zip https://www.postgresql.org/download/windows/ post ...

  5. [原]CentOS7部署PostGis

    转载请注明原作者(think8848)和出处(http://think8848.cnblogs.com) 本文参考了<An almost idiot's guide to install Pos ...

  6. PostgreSql+PostGIS和uDig的安装

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.前言 总体来说,这两款开源软件均是很好安装的,一般按照提示一步一步 ...

  7. 与你相遇好幸运,Postgresql和postgis安装

    笔者开发环境: windows 7 x86_64 一开始安装的是官网最新版 PostgreSQL 9.6 ,安装成功 之后安装PostGIS Bundle 2.2 for PostgreSQL x64 ...

  8. PostGIS导入导出SHP文件常用命令

    SHP导入POSTGIS数据库 引用 直接导入数据库 shp2pgsql  -I -s 2437 -W GBK shop_point.shp public.ntable | psql -U postg ...

  9. oracle 用户与表空间关系

    oracle用户与表空间关系用户=商家表=商品表空间=仓库1. 1个商家能有很多商品,1个商品只能属于一个商家2. 1个商品可以放到仓库A,也可以放到仓库B,但不能同时放入A和B3. 仓库不属于任何商 ...

  10. PostGIS ShapeFile 导入数据

    系统环境:WIN10 相关软件:PostgresSQL+PostGIS+QGIS 1.添加postGIS数据扩展 (1).打开PostgresSQL 客户端pgAdmin,在需要导入shp数据的数据库 ...

随机推荐

  1. 【企业流行新数仓】Day03:SuperSet图表,Ranger权限、脱敏、行级别过滤,Atlas元数据、查询和查看全表/字段血缘依赖,Zabbix告警

    一.SuperSet-图表展示 1.概念 (1)概念 通过dashboard(仪表盘)对图表中的数据进行展示 BI工具:根据配置的要求,进行数据源的配置即可 是准商业级别的BI web应用 (2)原理 ...

  2. 全都会!预测蛋白质标注!创建讲义!解释数学公式!最懂科学的智能NLP模型Galactica尝鲜 ⛵

    作者:韩信子@ShowMeAI 机器学习实战系列:https://www.showmeai.tech/tutorials/41 深度学习实战系列:https://www.showmeai.tech/t ...

  3. docker 第二课

    构建nginx镜像 Dockerfile 指令: FROM centos:7.9.2009 #在整个dockfile文件中除了注释之外的第一行,要是FROM ,FROM 指令当前镜像的用于指定父镜像( ...

  4. Window注册表的学习记录

    注册表的结构: 概述:注册表是一种树状结构,在很早之前是系统的其他配置信息存放的文件,通常以.ini结尾的文件,因为数量太多不方便管理,后来就整合在一起形成了注册表.你可以按住键盘win+r,然后输入 ...

  5. JQuery拖拽移动

    /** * zzh_2022032101_拖拽移动 * @param obj 目标对象 / #id / .class * @param moveOut 是否可以移出边界 */ function dra ...

  6. [数据结构]Dijkstra算法求单源最短路径

    概念 求带权有向图中某个源点到其余各个顶点的最短路径,最常用的是Dijkstra算法.该算法设置一个集合S记录已求得的最短路径的顶点,可用一个数组s[]来实现,初始化为0,当s[Vi]=1时表示将顶点 ...

  7. CentOS7.6系统安装和网络配置

    CentOS7.6系统安装配置 前言:文章内容可能会因环境不同而有所差异,所谓集思广益说不定灵感就来了呢; 文章初衷旨在交流学习.记录个人成长,如果能帮助到您,那就点个赞噢. 环境说明: 1.本实验使 ...

  8. CDH-hive内进行删除操作

    hive安装后需要修改已建的表及查询操作,在执行修改操作时遇到了如下问题.   hive> update dp set name='beijing' where id=1159; FAILED: ...

  9. 拜占庭将军问题与CAP

    1.拜占庭将军问题 拜占庭位于如今的土耳其的伊斯坦布尔,是东罗马帝国的首都.由于当时拜占庭罗马帝国国土辽阔,为了达到防御目的,每个军队都分隔很远,将军与将军之间只能靠信差传消息.在战争的时候,拜占庭军 ...

  10. MySQL 更新数据 不同条件(批量)更新不同值

    一般在更新时会遇到以下场景:1.全部更新:2.根据条件更新字段中的某部分内容:3.根据不同的条件更新不同的值,以下是几种场景中常用的update方法. 一.方法分类 二.具体用法 (1)根据条件更新值 ...