地理空间数据库小测笔记----2
第一题
在PostgreSQL中创建道路关系,道路中心线属性名为centerline,几何类型为LineString,空间参考系为4326,请补充以下关系创建语句,注意英文单词的首字母大写,如Point,LineString, Polygon,中间不加空格: Create Table Road ( rid int primary key, name char(20), centerline 1 );
LineString SRID 4326
在 PostgreSQL 中创建道路表(Road)时,对于空间属性centerline的定义需要明确其几何类型和空间参考系(SRID)。
- 几何类型:题目要求道路中心线的几何类型为
LineString(线串),用于表示道路的线性特征,符合道路中心线的空间形态。 - 空间参考系:指定
SRID 4326,即 WGS84 坐标系(经纬度坐标系),这是国际通用的地理空间参考标准,适用于大多数地理信息系统场景。 
因此,centerline字段的完整定义为LineString SRID 4326,既明确了该字段存储线性几何数据,又指定了其空间参考基准,确保空间数据的一致性和可操作性。
第二题
在PostgreSQL 16及以上版本(PostGIS 3.0及以上)中创建关系Test Create Table Test ( gid serial primary key, point geometry(POINT, 4326), line geometry(LINESTRING, 4326), polygon geometry(POLYGON, 4326) ); 下列哪些几何对象能够顺利插入? 多选题 (1 分)
A. insert into test(point) values(ST_GeomFromText('POINT(1 1)'));
B. insert into test(polygon) values(ST_GeomFromText('POLYGON((0 0, 0 1, 1 1, 1 0, 0 0), (0.2 0.2, 0.2 0.8, 0.5 0.8))', 4326));
C. insert into test(polygon) values(ST_GeomFromText('POLYGON((0 0, 0 1, 1 1, 1 0, 0 0))', 4326));
D. insert into test(polygon) values('SRID=4326;POLYGON(0 0, 0 1, 1 1, 1 0, 0 0)'::geometry); E. insert into test(line) values('SRID=4326;LINESTRING(1 1, 2 2)'::geometry);
答案:C、E
解析:
- 选项 A:错误。
ST_GeomFromText函数未指定 SRID,而表中point字段要求 SRID 为 4326,空间参考系不匹配,无法插入。 - 选项 B:错误。多边形的内环((0.2 0.2, 0.2 0.8, 0.5 0.8))未闭合,不符合
POLYGON几何类型的格式要求(所有环必须闭合,即首尾点坐标一致),插入会失败。 - 选项 C:正确。多边形外环闭合,且通过
ST_GeomFromText指定了 SRID=4326,与表中polygon字段的定义匹配,可正常插入。 - 选项 D:错误。
POLYGON的坐标列表缺少外层括号,正确格式应为POLYGON((0 0, 0 1, 1 1, 1 0, 0 0)),语法错误导致无法插入。 - 选项 E:正确。通过 EWKT 格式(
SRID=4326;LINESTRING(...))明确指定了 SRID=4326,且LINESTRING格式正确,与表中line字段定义匹配,可正常插入。 
第三题
三维空间中折线的坐标维数是 ,几何维数是 。
3;1
解析:
- 坐标维数:三维空间中折线的每个顶点坐标包含 X、Y、Z 三个分量,因此坐标维数是 3。
 - 几何维数:折线是由线段组成的一维几何对象(仅具有长度属性,无面积或体积),因此几何维数是 1。
 
第四题
解析:在 OGC 简单要素访问(SFA)标准中,以下方法可用于判断两个多边形之间的拓扑关系:
- A. Overlaps:适用于两个同维度几何(如均为多边形),判断它们是否部分重叠且互不包含,多边形之间可使用。
 - B. Contains:判断一个几何是否完全包含另一个几何,多边形之间可使用(如大多边形包含小多边形)。
 - C. Equals:判断两个几何是否完全相同(形状、位置、范围一致),多边形之间可使用。
 - D. Touches:判断两个几何是否有公共边界但内部不相交(如多边形相邻但不重叠),适用于多边形。
 - E. Crosses:主要用于不同维度几何(如线与多边形)或同维度但非面状几何(如线与线),多边形(二维)之间不会产生交叉关系(交叉会导致重叠或包含),故不适用。
 - F. Intersects:判断两个几何是否存在任何形式的交集(包含、重叠、接触等),是多边形间拓扑关系判断的基础方法,适用。
 
第五题
解析:在 OGC 简单要素访问(SFA)SQL 标准的几何模型层次中,类的继承关系为:Geometry是根类,其直接子类包括Point、Curve、Surface、GeometryCollection等。其中,Polygon(多边形)是Surface(面)的直接子类,因为Polygon属于二维面状几何对象,符合Surface的特征(具有面积属性的二维几何)。
- 选项 A(Geometry)是所有几何类的根类,
Polygon是其间接子类(通过Surface继承)。 - 选项 C(SpatialReferenceSystem)是空间参考系类,与几何类属于不同分支,无继承关系。
 - 选项 D(GeometryCollection)是集合类,用于包含多个几何对象,与
Polygon无继承关系。 
第六题
10.下列关于OGC SFA的几何对象模型说法正确的有哪些? 多选题 (1 分) 1分
A. 简单几何对象是指不自相交的几何对象,所以LineString不能表示起点和终点重合的环。
B. 点、线和面的边界几何维数是其内部几何维数减一,而外部几何维数都为2。
C. 简单几何对象目前仅能描述二维几何对象,z值仅用来表示测量值,如M值。
D. 简单几何对象可以表示为其边界和其内部,而简单几何对象内部与其本身不同。
E. 在OGC中,TIN认为是矢量数据的一种表达方式,而在ESRI的GeoDatabase中,TIN是不同于矢量表达的一种空间数据表达方式。
答案:D、E
解析:
- 选项 A:错误。简单几何对象中的
LineString可以表示起点和终点重合的环(闭合线串),只要不发生自相交即可。自相交是指线串内部交叉,闭合本身并不违反简单几何的定义。 - 选项 B:错误。点的内部几何维数为 0,其边界为空(维数无意义);线的内部维数为 1,边界为点(维数 0);面的内部维数为 2,边界为线(维数 1)。且 “外部几何维数都为 2” 不成立,外部维数取决于几何对象所在的空间(如三维空间中外部维数为 3)。
 - 选项 C:错误。OGC SFA 的简单几何对象支持三维坐标(包含 Z 值),Z 值可表示高程等三维信息,并非仅作为测量值(M 值是单独的测量维度)。
 - 选项 D:正确。根据拓扑学定义,简单几何对象可由其边界(Boundary)和内部(Interior)描述,且内部是几何对象的子集(不包含边界),因此内部与其本身不同。
 - 选项 E:正确。OGC 标准中 TIN(不规则三角网)被视为矢量数据的一种(由三角形面组成的复杂面状几何);而 ESRI 的 GeoDatabase 中将 TIN 作为独立的空间数据类型,与矢量(点、线、面)、栅格等并列。
 
因此,正确选项为 D、E。
第七题
从杭州飞往北京的航班轨迹(LineString a)和浙江省(MultiPolygon b)的维数扩展的九交模型(DE-9IM)中B(a)和I(b)对应的矩阵单元是 1 ,I(a)和E(b)对应的矩阵单元是 2 。
好的,我们逐步推理。
1. 理解对象
a:杭州飞往北京的航班轨迹(
LineString)内部
I(a):除端点外的轨迹线段(一维)边界
B(a):两个端点(两个点,零维)外部
E(a):二维空间中除 a 的点和线以外的区域
b:浙江省(
MultiPolygon)内部
I(b):面内部(二维区域)边界
B(b):多边形的边界环(一维)外部
E(b):浙江省以外的区域
2. 第一空:B(a) ∩ I(b) 的维度
B(a) 是两个端点(起点在杭州,终点在北京)。
起点杭州在浙江省内部,所以起点这个点位于 I(b)(浙江省内部)吗?
杭州在浙江省内,所以起点 ∈
I(b)终点北京不在浙江省内,所以终点 ∉
I(b)
因此 B(a) ∩ I(b) = {起点}(一个点)。
一个点是零维,所以维度 = 0。
第一空答案:0
3. 第二空:I(a) ∩ E(b) 的维度
I(a) 是航迹的中间线段(一维)。
航班从杭州(浙江省内)飞往北京(省外),所以航线会有一部分在浙江省外(E(b))。
I(a) ∩ E(b) 是航迹中位于浙江省外的那部分线段(不包括端点,因为端点是边界)。
一维的线与二维的外部区域的交集是一维的线(只要航线有一部分在省外,且不是仅边界接触)。
因此维度 = 1。
第二空答案:1
最终答案:
0
1
第八题
要判断等价关系是否成立,需基于 OGC SFA 标准中各拓扑关系函数的定义,分析函数间的逻辑关联。
选项 A:错误。
Touches与Crosses是完全不同的拓扑关系,无等价性。Touches:两个几何仅边界相交,内部无交集(如相邻多边形共享一条边)。Crosses:适用于不同维度几何(如线穿面)或同维度非面状几何(如线交线),交集维度低于两个几何的最低维度,且不全包含。两者逻辑互斥,不可能等价。
选项 B:错误。
Touches和Crosses的并集不等于Intersects。Intersects:两个几何存在任何形式的交集(包含、重叠、接触、交叉等),涵盖的关系包括Touches、Crosses、Contains、Overlaps、Equals等。- 仅
Touches和Crosses的组合无法覆盖Contains、Overlaps等其他属于Intersects的关系,因此等式不成立。 
选项 C:正确。
Contains与Within是互逆关系,逻辑完全等价。a.Contains(b):表示 a 完全包含 b(b 的内部和边界均在 a 的内部)。b.Within(a):表示 b 完全在 a 内部(与上述描述一致,仅主语和宾语互换)。两者描述的是同一拓扑关系,只是视角相反,因此等价。
选项 D:正确。
Intersects与Disjoint是绝对互斥关系,逻辑等价。a.Intersects(b):两个几何存在交集(非空)。a.Disjoint(b):两个几何无任何交集(空集)。两者互为否定,因此a.Intersects(b)等价于!a.Disjoint(b)(“!” 表示逻辑非)。
OGC 拓扑关系函数等价 / 互斥对照表
该表基于 OGC SFA 标准,梳理了常用拓扑关系函数间的核心逻辑关系,分为 “等价关系” 和 “互斥关系” 两类,帮助快速明确函数关联。
一、等价关系
两个函数描述同一拓扑关系,仅视角或表述方式不同,结果完全一致。
| 函数 A | 函数 B | 核心说明 | 
|---|---|---|
a.Contains(b) | b.Within(a) | 互逆关系,a 包含 b 与 b 在 a 内部是同一关系的两种表述 | 
a.Intersects(b) | !a.Disjoint(b) | 绝对否定关系,存在交集与无任何交集互为对立面 | 
a.Equals(b) | b.Equals(a) | 对称关系,a 与 b 完全相同等价于 b 与 a 完全相同 | 
二、互斥关系
两个函数描述的拓扑关系完全对立,不可能同时成立(满足一个则必然不满足另一个)。
| 函数 A | 函数 B | 核心说明 | 
|---|---|---|
a.Intersects(b) | a.Disjoint(b) | 无中间状态,要么有交集,要么无交集,必居其一 | 
a.Touches(b) | a.Crosses(b) | 拓扑形态互斥,前者仅边界接触,后者为跨维度 / 线交叉,无重叠可能 | 
a.Contains(b) | a.Disjoint(b) | 包含关系需 a 与 b 有包含交集,分离关系无任何交集,逻辑对立 | 
三、关联但不等价关系
两个函数存在包含或部分重叠,但结果不完全一致。
| 主导函数 | 从属函数 | 核心说明 | 
|---|---|---|
a.Intersects(b) | a.Touches(b) | Intersects是父集,Touches是其子集,满足Touches则必然满足Intersects,反之不成立 | 
a.Intersects(b) | a.Crosses(b) | 同上,Crosses是Intersects的子集,满足Crosses必满足Intersects,反之不成立 | 
a.Intersects(b) | a.Contains(b) | 同上,Contains是Intersects的子集,满足Contains必满足Intersects,反之不成立 | 
第九题
下列关于几何对象模型说法正确的有哪些? 多选题 (1 分) 1分
A. 几何对象的空间拓扑关系在不同比例尺度下可能会改变
B. 基于Numeric类型和BLOB类型的几何对象逻辑模型具有相同的要素表模式,但不同的Geometry表属性
C. 基于扩展几何类型的实现与基于预定义数据类型的实现相比,仅少了Geometry关系
D. POINT(10, 10)和POLYGON(10 10, 10 20, 20 20, 20 15, 10 10)是几何对象物理模型的有效WKT表示
E. 几何对象方法支持空间分析的度量和拓扑,例如计算距离,判断两个几何对象是否相交
答案:A、E
解析:需结合几何对象模型的核心概念(拓扑关系特性、逻辑 / 物理模型、数据类型实现、WKT 格式、方法功能),逐一分析选项正确性。
各选项分析
选项 A:正确。空间拓扑关系依赖几何对象的相对位置和形态,比例尺度变化可能改变这种关系。例如,小比例尺地图上相邻的两条道路(
Touches关系),在大比例尺下可能因细节显示而分离(Disjoint关系);或两个小面积多边形在小比例尺下重叠(Overlaps),大比例尺下显示为包含(Contains)。选项 B:错误。基于
Numeric类型(存储坐标数值)和BLOB类型(存储二进制流)的几何对象逻辑模型,要素表模式和 Geometry 表属性均不同。前者要素表可能直接关联坐标数值字段,Geometry 表需存储数值型坐标信息;后者要素表关联二进制字段,Geometry 表存储二进制编码的几何数据,两者结构差异显著。选项 C:错误。基于扩展几何类型(如自定义几何类型)与预定义数据类型(如 OGC 标准类型)的实现,核心差异并非 “仅少了 Geometry 关系”。预定义类型通常内置完整的拓扑规则、方法接口和存储结构,扩展类型可能需要自定义这些组件,两者在表结构、方法支持、拓扑逻辑上均可能存在差异,并非简单缺失某一关系。
选项 D:错误。该选项混淆了几何对象的 “逻辑模型表示” 与 “物理模型表示”。WKT(Well-Known Text)是逻辑模型层面的文本编码格式,用于描述几何对象的形状和坐标,而非物理模型(物理模型关注数据在存储介质中的具体存储方式,如二进制编码、字段存储结构等)。此外,
POLYGON的 WKT 格式需外层括号包裹环坐标,虽示例格式正确,但 “物理模型” 的表述错误。选项 E:正确。OGC SFA 标准定义的几何对象方法,同时支持空间度量分析和拓扑关系判断。例如,
ST_Distance(a, b)可计算两个几何对象的距离(度量功能),ST_Intersects(a, b)可判断是否相交(拓扑功能),这些方法是空间分析的核心基础。
第十题
在WHERE子句上填写PostGIS函数,如ST_Distance(注意大小写),在HAVING子句上填写数字,实现以下查询: List names of all the counties (Polygon) where at least 3 rivers (LineString) originate and ends inside. SELECT Name FROM Counties, Rivers WHERE 1 (Rivers.Shape, Counties.Shape) GROUP BY Counties.name Having count(*) > 2
- ST_Within
 - 2
 
解析:
- 要查询 “至少 3 条河流的起点和终点都位于县内” 的县名,需判断河流(LineString)的起点和终点是否完全在县(Polygon)内部。
ST_Within(geomA, geomB)用于判断几何对象 A 是否完全在几何对象 B 内部,此处需检查河流的起点和终点是否都在县内。但由于河流是线串,其起点和终点可通过线串的端点表示,而ST_Within(Rivers.Shape, Counties.Shape)能直接判断整条线串是否在面内,自然包含起点和终点都在面内的情况,符合 “originate and ends inside” 的要求。 HAVING count(*) > 2表示分组后计数大于 2,即至少 3 条,满足 “at least 3 rivers” 的条件。
