《Python地理空间分析指南(第2版)》——1.10 GIS中矢量数据的基本概念

简介:

本节书摘来自异步社区《Python地理空间分析指南(第2版)》一书中的第1章,第1.10节,作者: 【美】Joel Lawhead(莱哈德) 更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.10 GIS中矢量数据的基本概念

本章将讨论地理空间分析领域中常见的各种GIS处理流程。这个列表虽不详尽,但是介绍的操作流程是其他操作的基础。如果你理解了这些操作,那么学习更复杂的操作时就能够触类旁通。

1.10.1 数据结构
GIS的矢量数据由坐标构成,通过水平方向的x值和竖直方向的y值来表示地球上的位置信息。多数情况下,一个点可能还包括z值。其他辅助信息可能包括测量值和时间戳。

这些坐标可以组成点、线、面等元素,从而对现实世界建模。点本身可以是一种几何特征,同时还可以组合成线段。由线段组成的闭合区域构成了多边形。多边形可以对多种对象建模,例如建筑物,地形和地区边界线等。

一个GIS特征可以是点、线和多边形,还可以是更复杂的形状。例如,在包含所有国家边界的GIS多边形数据集中,菲律宾是由许多个岛屿组成的,这意味着需要用几千个多边形表示一个国家。

矢量数据表示地貌特征的效果比栅格数据好。矢量数据精度高更准确。但是大规模的采集矢量数据的成本也远远高于栅格数据。

另外两个重要的矢量数据结构是边框和凸包。边框中的和最小边框是包含数据集中所有点的最小矩形。图1-10演示了包含一组点的边框。


<a href=https://yqfile.alicdn.com/53991cd8089a894cf46ed3474f868c30c5337f76.png" >

凸包的数据集和边框类似,但是不是矩形,它是包含数据集中所有点的最小多边形。数据集的边框通常也包含它的凸包。图1-11使用上一示例中相同数据集用红色演示了凸包多边形。


002bd75de7eb37615c973bb40230e119f1afbb87

1.10.2 缓冲区
缓冲区操作适用的对象包括点、线和多边形。该操作会在对象周围自动创建特定宽度的缓冲多边形。缓冲区分析常用于邻近分析,例如在危险区域周围建立一个安全隔离带。如图1-12所示,黑色形状代表原几何图形,外部红色部分是系统根据原图形生成的缓冲多边形。


b6693254bb99a520e1dc99c55c38e4292ebf0659

1.10.3 融合
融合操作为相邻的多边形创建一个更大的多边形,如图1-13所示。普通的融合操作常常是在税务数据库中合并同一纳税人的两个相似属性。融合也用于简化遥感影像数据。


3dfc0fde7c3a0c9662c0f4d2ce35c783e29ea31c

1.10.4 简化
很多构成对象的点对于地理空间分析建模来说都是不必要的,我们可以将其简化用形状代替,参见图1-14。这些操作通常需要在不影响整体形状的前提下设定构成点的最优值。它是一种提高数据计算和可视化效率的优化技术。这种技术对网络地图应用非常有用。一般的显示器的每英寸(1英寸=2.54厘米)点数(dots per inch,dpi)是72,更详细的数据点将不会被显示,因此可以通过数据优化,减少带宽传输,更快地将地图展现给用户。


<a href=https://yqfile.alicdn.com/1225bc965f642821cdc249edcf77e02439ec6a74.png" >

1.10.5 叠置
叠置操作用来判断某一特征是否和一个或多个特征重叠。这个操作常用于邻近分析中的空间查询,并且通常后续操作是缓冲区分析,如图1-15所示。


<a href=https://yqfile.alicdn.com/0bd530bafb3a2916b9f1783b3c1951f0ee1bb103.png" >

1.10.6 合并
合并操作将两个或多个非重叠的形状合并成一个复合形状对象。复合形状对象意味着这些形状虽然是独立的几何图形,但是在GIS系统中会被当作一个单一的属性集,如图1-16所示。


c7806dcf1735cec4e2f445e57ce31dd7e189d044

1.10.7 点包容性
一个基本的地理空间操作是检查一个点是否在多边形里面。这个操作是构建其他多种地理空间查询的基础。当点在多边形的边界时,也被看作是在多边形内部。几乎很少有空间查询操作不是基于这种检查判断的。但是当点的数目很大时,它的操作效率会变得很低。

通常,判断一个点是否在多边形内的最有效算法是光线投射法。首先,执行一个测试,检查该点是否在多边形的边界上。其次,从该点引出一根“射线”,与多边形的任意若干条边相交,累计相交的边的数目,如果是奇数,那么点就在多边形内,否则点就在多边形外,如图1-17所示。


02b8c92ce6f92deed61a8fc66f007dab05eeef22

1.10.8 联合
联合操作很少用到,但是在把两个或多个重叠的多边形组合成单一形状时非常有用。和融合类似,但是在这种情况下,多边形是重叠关系而非相邻关系,如图1-18所示。通常该操作是用来清理遥感操作自动生成的特征数据集的。


c3458c706058c50ea490312e1c6bfb46e5c6bf17

1.10.9 连接
一个连接或者SQL连接是数据库操作,主要用来合并两个以上的数据表。关系型数据库中的一对多关系是为了避免存储冗余信息而设计的。例如,美国的州可能有很多城市,我们不需要创建一个包含所有相关城市的州表,只需要创建一个包含ID的州表,然后将整个国家的城市表与州表的ID关联起来即可。在GIS中,你也可以在支持空间数据库的软件中使用空间连接。对于空间连接来说,将属性组合成两个特征的方法和SQL连接操作类似,但是它们的关系是基于相邻空间的两个特征。还是以前面的城市为例,我们可以使用空间索引为每个城市添加相关的县名。在包含县名的县一级的图层上叠加市一级图层,空间连接将决定市和县的从属关系,就像SQL连接中将县名添加到城市的属性列中一样。

1.10.10 地理空间中的多边形规则
在地理空间分析中,其中提到的多边形和数学描述的多边形有几个关键区别:

  • 多边形有且至少有4个点,第一个点和最后一个点必须重合;
  • 多边形不能和自身0重叠;
  • 图层中的多边形不能重叠;
  • 图层中的多边形在其他多边形中被当作多边形下面的一个洞来处理。

不同的地理空间软件遇到这些规则的问题时处理方式不尽相同,所以有可能会导致一些莫名其妙的错误和行为。最保守的做法是确保你的多边形都遵循了上述规则。多边形还有一条非常重要信息。那就是多边形的形状是闭合的,这意味着多边形的第一个点和最后一个点是相同的。如果你在多边形数据集中没有明确指定第一个点就是最后一个点,某些地理空间软件会抛出异常。其他软件会毫无怨言地自动将多边形闭合。存储地理空间数据的格式也许会说明多边形的定义法则。没有指定多边形规则的问题还处于灰色地带,但是将来某一天当你遇到无法轻易解决的问题时,这些规则肯定会有用武之地。

相关文章
|
1月前
|
测试技术 Python
Python中的装饰器:概念、用法及实例
【2月更文挑战第25天】 装饰器在Python中是一种强大的工具,它允许我们在不修改原始函数代码的情况下,增加函数的功能。本文将深入探讨装饰器的概念,解析其工作原理,并通过实例来展示如何在Python中使用装饰器。
|
1月前
|
存储 缓存 Python
Python中的装饰器:概念、用法和实例
【2月更文挑战第25天】 在Python编程中,装饰器是一种强大的工具,它允许我们在不修改原始函数代码的情况下,增加或修改函数的行为。本文将深入探讨装饰器的概念、用法以及通过实例来使其更易于理解。我们将看到,装饰器不仅仅是语法糖,而是一种可以极大提高代码复用性和可读性的有效工具。
|
1月前
|
Python
Python 中的装饰器:概念、用法和实例
【2月更文挑战第23天】 在编程世界中,装饰器是一种强大的工具,它允许我们在不改变现有代码的情况下增加或修改函数和类的行为。本文将深入探讨 Python 中装饰器的概念、用法以及如何创建自定义装饰器。我们将通过实例来演示装饰器的实用性和灵活性,帮助读者更好地理解和应用这一技术。
|
1月前
|
开发者 Python
深入理解 Python 中的真值和假值概念
深入理解 Python 中的真值和假值概念
24 0
|
1月前
|
开发框架 开发者 Python
Python中的装饰器:概念、用法和应用
【2月更文挑战第21天】 本文将深入探讨Python中一个强大且灵活的特性——装饰器。装饰器在Python中被广泛应用,它们允许我们在不修改原函数代码的情况下,增加函数的功能。我们将详细解释装饰器的概念,展示如何创建和使用它们,并探讨一些实际的应用案例。无论你是Python初学者还是有经验的开发者,本文都将为你提供有关装饰器的深入理解。
15 1
|
1月前
|
测试技术 Python
Python中的装饰器:概念、应用与实战
【2月更文挑战第20天】装饰器在Python中是一种强大的工具,它允许我们在不修改原始函数代码的情况下,增加函数的功能。本文将深入探讨装饰器的概念,展示其在Python中的应用,并通过实战示例来使其更易于理解。
16 1
|
1月前
|
Python
Python中的继承:概念、用法与示例
Python中的继承:概念、用法与示例
22 0
|
1月前
|
Python
请简述Python中的继承、封装和多态的概念。
【2月更文挑战第24天】【2月更文挑战第82篇】请简述Python中的继承、封装和多态的概念。
|
1月前
|
JSON JavaScript 前端开发
Python中使用JsonPath:概念、使用方法与案例
Python中使用JsonPath:概念、使用方法与案例
39 0
|
1月前
|
测试技术 开发者 Python
Python中的装饰器:概念、应用与实例
【2月更文挑战第22天】 本文深入探讨了Python中的一个重要特性——装饰器。我们将详细解析装饰器的概念,阐述其在Python编程中的应用,并通过具体的代码实例来展示其使用方法和效果。无论你是Python初学者还是有经验的开发者,本文都将帮助你更好地理解和使用装饰器。
15 0

热门文章

最新文章