《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天前
|
算法 Serverless 数据处理
从集思录可转债数据探秘:Python与C++实现的移动平均算法应用
本文探讨了如何利用移动平均算法分析集思录提供的可转债数据,帮助投资者把握价格趋势。通过Python和C++两种编程语言实现简单移动平均(SMA),展示了数据处理的具体方法。Python代码借助`pandas`库轻松计算5日SMA,而C++代码则通过高效的数据处理展示了SMA的计算过程。集思录平台提供了详尽且及时的可转债数据,助力投资者结合算法与社区讨论,做出更明智的投资决策。掌握这些工具和技术,有助于在复杂多变的金融市场中挖掘更多价值。
22 12
|
6天前
|
数据采集 数据安全/隐私保护 Python
从零开始:用Python爬取网站的汽车品牌和价格数据
在现代化办公室中,工程师小李和产品经理小张讨论如何获取懂车帝网站的汽车品牌和价格数据。小李提出使用Python编写爬虫,并通过亿牛云爬虫代理避免被封禁。代码实现包括设置代理、请求头、解析网页内容、多线程爬取等步骤,确保高效且稳定地抓取数据。小张表示理解并准备按照指导操作。
从零开始:用Python爬取网站的汽车品牌和价格数据
|
1月前
|
数据采集 Web App开发 数据可视化
Python用代理IP获取抖音电商达人主播数据
在当今数字化时代,电商直播成为重要的销售模式,抖音电商汇聚了众多达人主播。了解这些主播的数据对于品牌和商家至关重要。然而,直接从平台获取数据并非易事。本文介绍如何使用Python和代理IP高效抓取抖音电商达人主播的关键数据,包括主播昵称、ID、直播间链接、观看人数、点赞数和商品列表等。通过环境准备、代码实战及数据处理与可视化,最终实现定时任务自动化抓取,为企业决策提供有力支持。
|
2月前
|
数据采集 存储 XML
python实战——使用代理IP批量获取手机类电商数据
本文介绍了如何使用代理IP批量获取华为荣耀Magic7 Pro手机在电商网站的商品数据,包括名称、价格、销量和用户评价等。通过Python实现自动化采集,并存储到本地文件中。使用青果网络的代理IP服务,可以提高数据采集的安全性和效率,确保数据的多样性和准确性。文中详细描述了准备工作、API鉴权、代理授权及获取接口的过程,并提供了代码示例,帮助读者快速上手。手机数据来源为京东(item.jd.com),代理IP资源来自青果网络(qg.net)。
|
2月前
|
数据采集 Web App开发 监控
Python爬虫:爱奇艺榜单数据的实时监控
Python爬虫:爱奇艺榜单数据的实时监控
|
2月前
|
数据采集 分布式计算 大数据
构建高效的数据管道:使用Python进行ETL任务
在数据驱动的世界中,高效地处理和移动数据是至关重要的。本文将引导你通过一个实际的Python ETL(提取、转换、加载)项目,从概念到实现。我们将探索如何设计一个灵活且可扩展的数据管道,确保数据的准确性和完整性。无论你是数据工程师、分析师还是任何对数据处理感兴趣的人,这篇文章都将成为你工具箱中的宝贵资源。
|
2月前
|
数据采集 数据可视化 数据挖掘
利用Python自动化处理Excel数据:从基础到进阶####
本文旨在为读者提供一个全面的指南,通过Python编程语言实现Excel数据的自动化处理。无论你是初学者还是有经验的开发者,本文都将帮助你掌握Pandas和openpyxl这两个强大的库,从而提升数据处理的效率和准确性。我们将从环境设置开始,逐步深入到数据读取、清洗、分析和可视化等各个环节,最终实现一个实际的自动化项目案例。 ####
305 10
|
23天前
|
存储 缓存 Java
Python高性能编程:五种核心优化技术的原理与Python代码
Python在高性能应用场景中常因执行速度不及C、C++等编译型语言而受质疑,但通过合理利用标准库的优化特性,如`__slots__`机制、列表推导式、`@lru_cache`装饰器和生成器等,可以显著提升代码效率。本文详细介绍了这些实用的性能优化技术,帮助开发者在不牺牲代码质量的前提下提高程序性能。实验数据表明,这些优化方法能在内存使用和计算效率方面带来显著改进,适用于大规模数据处理、递归计算等场景。
58 5
Python高性能编程:五种核心优化技术的原理与Python代码
|
2月前
|
Python
[oeasy]python055_python编程_容易出现的问题_函数名的重新赋值_print_int
本文介绍了Python编程中容易出现的问题,特别是函数名、类名和模块名的重新赋值。通过具体示例展示了将内建函数(如`print`、`int`、`max`)或模块名(如`os`)重新赋值为其他类型后,会导致原有功能失效。例如,将`print`赋值为整数后,无法再用其输出内容;将`int`赋值为整数后,无法再进行类型转换。重新赋值后,这些名称失去了原有的功能,可能导致程序错误。总结指出,已有的函数名、类名和模块名不适合覆盖赋新值,否则会失去原有功能。如果需要使用类似的变量名,建议采用其他命名方式以避免冲突。
52 14
|
2月前
|
分布式计算 大数据 数据处理
技术评测:MaxCompute MaxFrame——阿里云自研分布式计算框架的Python编程接口
随着大数据和人工智能技术的发展,数据处理的需求日益增长。阿里云推出的MaxCompute MaxFrame(简称“MaxFrame”)是一个专为Python开发者设计的分布式计算框架,它不仅支持Python编程接口,还能直接利用MaxCompute的云原生大数据计算资源和服务。本文将通过一系列最佳实践测评,探讨MaxFrame在分布式Pandas处理以及大语言模型数据处理场景中的表现,并分析其在实际工作中的应用潜力。
116 2

热门文章

最新文章

推荐镜像

更多