Python地学分析 — 矢量数据集介绍

时间:2024-03-19 20:36:43

欢迎关注博主的微信公众号:“智能遥感”。

Python地学分析 — 矢量数据集介绍

该公众号将为您奉上Python地学分析、爬虫、数据分析、Web开发、机器学习、深度学习等热门源代码。

什么叫矢量数据,在这里,小编先给大家普及一下!

地图上的要素都绘制为几何对象——点,线(包含多边形)、面。这些类型的数据(地理要素都是不同的对象)称为矢量数据集

在最基本的矢量数据中,地理要素以离散几何形式表示,特别是点,线、面。具有不同边界的地理特征(如城市)可以很好地使用矢量数据,但连续数据(如高程)则不会。

Python地学分析 — 矢量数据集介绍

图1 纽约市矢量图

在相同海拔的所有区域周围画一个单一多边形是很困难的,至少在山区是很困难的。但是,你可以使用多边形来区分不同的高程区间。例如,显示一个区域的亚高山区域的多边形对于一个高程范围来说是一个很好的代替,但这些多边形中的详细高程数据会丢失很多。尽管如此,许多类型数据都可以用矢量来表示,道路用线来表示,县和州用多边形表示,并且根据地图的比例尺,城市可以绘制成点或多边形。实际上,地图上的所有功能均有可能用点,线或面来表示。

但是,用于绘制特征的几何图形的类型可能取决于地图比例。图2展示了一个案列。在纽约州地图上,城市显示为点,主要道路显示为线条,市县显示为多边形。纽约市等较小区域的地图将以不同的方式表示特征。在这种情况下,道路仍然是线条,但城市和其行政区域是多边形而不是点。现在点将用于表示图书馆或警察局等功能。

Python地学分析 — 矢量数据集介绍

图2 纽约市是国家地图上的一个点,但由城市地图上的几个多边形构成

 

你可以想象许多其他地理数据示例可以用这种方式表示。任何可以用一组坐标来描述的东西,例如纬度和经度,都可以表示为一个点。这包括城市,餐馆,山峰,气象站和地理位置。除了它们的x和y坐标(例如经度和纬度)之外,点还可以具有第三个代表高程的z坐标。

封闭边界的地理区域可表示为多边形。例如,州,湖,区,邮政编码和土地所有权,以及许多可以像城市和公园这样的标志符号化的相同特征。其他可以表示为多边形,但可能不是点的特征包括国家,大陆和海洋。

线条特征,如道路,河流,电力线路和公交车路线等,都适合以线条为特征。然而,比例可以使得特征会发生变化。例如,新奥尔良地图可以将密西西比河表示为多边形而不是线,因为它非常宽。这也可以将地图显示为一条不规则的河岸,而不仅仅是一条平滑的河道,如图3所示。

Python地学分析 — 矢量数据集介绍

图3  使用多边形1和线条2来表示密西西比河的区别。多边形显示了河岸的细节,而线条则没有

然而,矢量数据不仅仅是几何图形。这些功能中的每一个还具有关联的属性。这些属性可以直接与几何图形本身相关,例如多边形的面积或周长或线条长度,但也可能存在其他属性。图4显示了一个州数据集的简单示例,其中存储了州名称、缩写、人口和其他数据的每个功能。从图中可以看出,这些属性可以有多种类型。它们可以是数字类型,例如城市人口或道路限速,城市或道路名称等字符串,或日期(例如地块购买或上次销售的日期)。某些类型的矢量数据还支持BLOB(二进制大对象),可用于存储二进制数据(如照片)。

Python地学分析 — 矢量数据集介绍

图4 美国境内包含各州边界的数据集属性表。每个州多边形在数据表中都有一个关联的行,并具有多个属性,包括2010年的州名和人口

 

现在应该清楚,这种类型的数据非常适合制作地图,但有些原因可能并不明显。一个例子就是它在绘画时的缩放程度。如果你熟悉网络图形,则可能知道像SVG(可缩放矢量图形)之类的矢量图在以不同比例显示时,比诸如PNG之类的栅格图形效果更好。即使你对SVG一无所知,你一定会在网站上看到一个像元化和丑陋的图像。这是以比设计的更高分辨率显示的栅格图形。这不会发生在矢量图形上,并且完全相同的原理适用GIS于矢量数据。无论比例如何,它总是看起来很流畅。

但这并不意味着比例无关紧要。正如你之前所看到的,比例会影响用于表示地理要素的几何类型,但它也会影响你应该用于某个要素的分辨率。一个简单的方法就是可以把分辨率理解为图形细节。分辨率越高,可以显示的细节就越多。例如,美国的地图不会显示华盛顿州沿岸的所有圣胡安群岛,实际上,数据集甚至不需要包括它们。然而,只有华盛顿州的地图肯定需要包含岛屿的更高分辨率集合,如图5所示。请记住,分辨率不仅仅适用于显示,也适用于分析。例如,华盛顿的两张地图将为海岸线长度提供明显不同的测量值。

 

Python地学分析 — 矢量数据集介绍

图5 一个显示分辨率差异的例子。粗轮廓显示的数据集分辨率低于阴影所示的分辨率。注意两个数据集中可用细节数量的差异

如上所述,矢量数据不仅用于制作地图。事实上,如果生活依赖于它,我将无法制作出漂亮的地图,但我对数据分析知道的会更多一点。一种常见的矢量数据分析类型是测量地理要素之间的关系,通常将它们叠加在一起来确定它们的空间关系。例如,你可以确定两个要素是否在空间上重叠以及该重叠区域是什么。图6显示了覆盖湿地数据集的新奥尔良城市边界。你可以使用这些信息来确定新奥尔良市内的湿地以及该市的多大面积是湿地。

 

Python地学分析 — 矢量数据集介绍

图6 矢量叠加操作的一个例子。黑色轮廓是新奥尔良市的边界,而较深的土地区域是湿地。这两个数据集可用于确定新奥尔良边界内湿地的陆地面积百分比

空间关系的另一方面是两个特征之间的距离。你可以找到两个气象站之间的距离,或者距离办公室一英里内的所有肯德基店。几年前,在一项研究中,研究人员既需要距离又需要空间关系。他们需要知道带有GPS的鹿在读数之间行走的距离,还需要了解行走方向以及它们与人造特征的相互作用如道路。特别关注的问题是他们是否穿过道路,如果穿过,会是多长时间一次。

与其他类型的数据一样,你可以使用多种方式来存储矢量数据。与你可以将照片存储为JPEG,PNG,TIFF,位图或其他文件类型的方式相似,可以使用多种不同文件格式来存储矢量数据。

Shapefile是用于存储矢量数据的流行格式。但是,shapefile不是由单个文件组成的。实际上,这种格式至少需要三个二进制文件,每个文件都有不同的用途。几何信息存储在.shp和.shx文件中,属性值存储在.dbf文件中。此外,其他数据(如索引或空间参考信息)可以存储在更多文件中。通常,你不需要知道关于这些文件的任何信息,但是要确保它们在同一个文件夹中。

GeoJSON是另一个广泛使用的格式,尤其是Web映射应用程序。这些纯文本文件可以在任何文本编辑器中打开并查看。与shapefile不同,GeoJSON数据集包括所有必需信息的文件。

矢量数据也可以存储在关系数据库中,这允许多用户访问以及各种类型的索引。其中两个最常见的选项是为广泛使用的数据库系统构建的空间扩展。 PostGIS扩展在PostgreSQL之上运行,SpatiaLite与SQLite数据库协同工作。另一种流行的数据库格式是Esri文件地理数据库,它完全不同,因为它不是现有数据库系统的一部分。