地图基础知识指南

126 阅读20分钟

原文参考地址:mapschool: a free introduction to geo

什么是地图?在 20 世纪 80 年代之前,地图通常都是通过手工精心制作而成的文档。然而如今,地图几乎都是在计算机的帮助下制作的。在驾驶路线规划、可视化展示以及政治边界争端等方面,现代地图无处不在。接下来,让我们从创作者的角度更深入地去了解地图的基本元素。

计算机地图是由数据构成的。而这些数据是抽象的,可能是数量极其庞大的点,也可能只是几个简单的多边形,还可能类似于照片中的颜色、温度等记录。重要的是,这些数据不是专门为了某一个特定的用途而产生和存在的。

通过这些数据,我们可以得到不同的信息,比如数字、图像或者是能辅助我们做出决策的信息。在这当中,生成图像是很常见的操作,这个把数据变成图像的过程叫“符号化”。它的作用是确定用什么样的视觉元素来体现数据集中的各个部分。此外,我们还会对数据进行分析。这意味着我们将对其进行转换、汇总和总结,从而提供不同的答案并展示不同的知识层面。这两项任务(符号化和分析)通常是相互结合的,符号化决定了我们展示的内容,而分析则明确了我们所关注的数据。

数据

从根本上来说,地理数据可以划分为栅格数据矢量数据,分别由像素或几何图形构成。这两种类型的数据常常相互结合,例如将矢量道路数据叠加在栅格卫星数据之上。

栅格数据

raster

栅格数据类类似于数码相机拍摄的照片:在最底层,它是一系列具有数值的像素。当您“放大”并仔细查看栅格数据时,会看到这些离散的像素,呈现出像素化的样子。

栅格数据是一种用于表示地球表面图像的数据格式,它通过卫星等遥感设备获取。

栅格数据用于表示地球图像信息,例如通过卫星拍摄的照片,但这只是一个开始。像素不仅可以具有颜色信息,还可以存储代表高度的数值,从而用于记录海拔数据。此外,像素还可以存储温度或反射数据,并在环境相关的工作中发挥作用。

栅格波段

在栅格数据中,像素所包含的信息不一定仅仅是颜色信息,我们把像素所包含的这种特定信息类别称作“波段”。通常情况下,大家熟悉的普通图像,比如我们日常看到的照片,是由三个主要的波段组成的,分别是红色波段、绿色波段和蓝色波段。这三个波段通过不同的组合方式,最终形成了我们眼睛所看到的丰富多彩的图像。

然而,栅格数据中的波段情况并非都是固定的。有的栅格数据可能波段数量较少,比如可能只有一个波段专门用于记录海拔高度的信息。而另一些栅格数据的波段可能会更多——不仅有我们肉眼能看到的那些颜色所对应的波段,还包括我们肉眼看不见的波段,像红外波段和紫外线波段等等。当分析和显示栅格数据时,可以根据具体的需求,对这些波段进行组合搭配或者有选择地使用某些波段。

栅格格式

栅格格式旨在压缩数据并使其能够快速用于分析和显示。其中有一些是常见图像格式的地理空间版本,如 GeoTIFF 和 JPEG2000,这些格式不仅存储图像,还包含地理位置信息,使其在地理信息系统(GIS)中非常有用。

栅格数据格式承担两项关键任务:一是将数据整理整合为像素形态,使繁杂分散的数据形成独立像素单元;二是记录留存像素与地球表面位置的对应关系,比如明确某个像素对应地球上的具体地点或区域。这种对应关系被称为数据的“范围”,界定了像素涵盖的地理区域,明确了区域内像素信息的有效性和准确性。

矢量数据

vector

矢量数据存储的是基本几何图形而非像素数据。无论如何“放大”矢量数据,都不会看到像素点,这是因为所存储的数据由几何点和线组成,只有在必要时才会转换为图像。

矢量数据用于存储道路、建筑物、兴趣点以及其他在世界上具有位置的事物。

矢量数据中的属性

在栅格数据中,像素通常具有颜色、不透明度或高度等属性。而矢量数据能够包含更为丰富的信息:形状通常具有大量的相关数据,通常被称作属性或属性信息。这些信息可能包括用于描述特征的附加数字,例如某个省份的居住人口数量;文本数据,比如代表一个城镇名称;或者其他值,如真和假。

矢量格式

最为成熟的矢量格式是Shapefile——一种简单的基于文件的格式,将必要的数据分散在四个独立的文件中——.shp(实际几何数据所在的地方)、.prj(描述所使用投影的字符串)、.shx(使搜索更快的索引)和.dbf(包含与.shp文件几何图形相关的所有数据的数据库文件)。这些文件中的大多数是二进制数据,用文本编辑器打开它们不会显示任何可访问的内容,除了 .prj 文件,它以纯文本形式定义投影。.dbf 数据库文件可以用 LibreOffice Calc 读取,因为其格式源自一个古老的数据库规范。古老的数据库规范限制了 Shapefile 中能存储的属性数据。例如:.dbf 文件的大小不能超过 2GB,字段名不能包含空格且不能超过 10 个字符,不支持 NULL 值,也不支持许多特殊字符,等等

GeoJSONTopoJSONKML 是基于JSONXML 文本编码的较新格式。由于是基于文本的,它们在软件中的实现通常比 Shapefile 更为简单,再加上额外的灵活性和特性,它们已经成为新网络软件的标准。GeoJSON 的缺点在于用于比较记录属性的工具较少,因此数据清理和分析具有一定的挑战性。

拓扑

除了存储位置和形状外,部分矢量数据还会记录不同形状之间的关系。例如,行政边界通常是相互接壤的——您可以一只脚站在亚利桑那州,另一只脚站在新墨西哥州。然而,许多地理空间数据在呈现亚利桑那州和新墨西哥州时,会分别有一个代表它们的形状,这两个形状虽然精确重叠,但却不存在其他关联的边界。

当询问“哪些州相互接壤?”或者在简化对象形状的同时保证边界对齐时,这会变得颇为棘手。为此,我们运用拓扑的概念:有些矢量数据并非直接存储亚利桑那州和新墨西哥州的形状,而是保存众多线条,并记录哪些线条构成了哪个对象的边界。这样,亚利桑那州和新墨西哥州的边界是一条用于绘制两个州边界的单线,如果对这条线进行修改,它会同时改变两个州的形状。

地理编码

有些地理数据既不是矢量也不是栅格:它以文本数据的形式存储,包括地名、街道、地址和其他识别方式。

不幸的是,不能直接将这些数据放置在地图上。将“United States”这样的词语转换为-120, 40这样的点的过程是迂回的并且常常不准确。这个过程我们称之为地理编码。地理编码依赖于街道名称、国家和更多的数据库以及地理位置,并通过算法试图为不精确的输入找到最接近的匹配。

逆地理编码

与地理编码相反的过程是逆地理编码。它将地理数据(如点)转换为人类可读的文本,如“United States”或“1714 14th Street”。类似于地理编码的过程,这种方法也具有一定的近似性。在地球上的某个位置,可能会遇到位于重叠区域或冲突边界的情况,或者位于多个地址点之间,这导致其地理定位的准确性可能存在偏差或不确定性。

地理编码和逆地理编码都具有一定的难度:坐标位置的错误、格式欠佳的地址数据,以及持续变化的街道和建筑网格,使得将地址转换为坐标或者反过来的操作变得困难。

阅读更多关于地理编码的内容

数据收集

多年以来,地图数据已经通过多种方式被收集和整理——从航海日志到包含地理编码信息的推文。目前,有一些主要的来源值得探讨:

gps

GPS:它是手机地图显示蓝点(当前位置)的基础,也是收集精确矢量数据的重要依据。测量人员会携带高精度的 GPS 设备进行测量工作,然后将测量结果整理成可靠的内容。

观测卫星和飞机:采集了我们现今所拥有的大部分栅格数据,它们持续不断地从不同高度拍摄照片,而后将这些照片整合成类似于地球照片的成果。一些传感器还能够捕捉到我们称之为“不可见光谱”的内容,比如对农业和森林砍伐具有实用价值的红外光。一些特殊装备涵盖了 LiDAR,这是一种激光传感器,其能够测量高度,并为我们供应栅格高度数据。

公司、政府和社区:维护着不同详细程度的世界地图。例如,GoogleOpenStreetMap 侧重于绘制道路及其详细信息,而 CIA World FactbookNatural Earth 等来源则更关注政治边界相关内容的记录。

存储

地理数据的存储方式多种多样。数据可以采用打印件的形式保存,但近年来,数字化存储因便于访问和共享而愈发流行。

由于有众多不同的文件类型和地理数据存储约定,所以有各种各样的工具用于不同表示形式的转换。数据既可以够存储在数据库中,也可以存于单个文件里,但两者之间的实际差异并不是很重要。

信息

地图是信息的可视化呈现:一方面,它包含基准(比如坐标系的参考标准)、数字(比如坐标值)和存储(数据的保存方式),这些是我们用来记录和识别地球上不同地方的基础要素。在原始的数据和最终能看见的地图图像之间,有一个被我们叫做“投影”的转换步骤。这个步骤是把地球上的地点位置转化到电脑屏幕这样的平面上。最后,我们还要确定颜色、色调(颜色的深浅)以及符号的具体样子,尽力把数据里的详细信息变成人们能够看懂和解释的图像。

比如说,我们先确定好地球上某个地点的经纬度等数字信息,这是记录的基础。然后通过投影,把这个地理位置转换到电脑二维屏幕上。最后,再选择用什么颜色、多深的颜色以及特定的符号来表示这个地点以及相关的信息,让人们看到这个地图的时候能够明白它所表达的意思。

纬度和经度

在地球上存储位置最常见的方法是使用纬度和经度值。历史上,纬度和经度有时以六十进制表示,例如 38° 12',但现在的标准是将其表示为简单的数字,如 38.2,,这样更便于计算机理解。

latlon

纬度 值的范围是从南极的 -90 至北极的 90,赤道的纬度值为 0。

经度 值的范围是从 -180 到 180,这些值在太平洋上以南北方向相交的线被称作对径线。0 度被定义为本初子午线,它穿过非洲和欧洲(具体来说是伦敦格林尼治的皇家天文台)。

纬度和经度的组合通常被称为坐标,可以表示为“纬度,经度”或“经度,纬度”:历史上,前者是标准,但“经度,纬度”因与数学中欧几里得空间的“X,Y”顺序一致而流行。

坐标顺序可能会引起一些混淆,因为基于浏览器的地图软件通常期望“纬度,经度”,而许多数据的格式则是“经度,纬度”。

有时,不仅会记录纬度和经度位置,还包括海拔、定位时间及其他信息。在包含海拔的情况下,通常将其存储为第三个坐标,如“经度,纬度,海拔”。

地球的形状

earth-shapes

在存储和展示世界地图时,我们不得不思考地球的形状问题,即纬度和经度值能否精准地映射到一个完美的球体上,并且在空间上保持准确性。

由于地球是一个自转的天体,其各部分的形状会发生变化,实际上它在中部略微隆起,更像是一个椭球体。但更精确地说,这也并非完全准确,因为地球表面存在着如山脉、山谷甚至人工改造的城市等高程差异

在日常工作中,我们采用不同的估算方法来描述地球的这种形状。像WGS84 这样的标准定义了地球两个轴的精确长度值,借此我们能够估算出一个参考椭球体,而非简单地将地球视为一个球体。对于局部测量和依赖于精确表面值的科学研究,还可以使用大地水准面模型,它是对理论海洋高度的三维计算。

这一科学分支被称为大地测量学,这是一个不断推进的项目。因为我们对地球的建模和测量能力在持续提升,而地球本身的形状也在不断发生变化。

投影

projections

投影指的是用于将地球转化为适宜在纸上或计算机屏幕上展示的平面形状的数学方法。这是个非常复杂的任务,无法在不产生任何扭曲的情况下将地球完整地呈现在屏幕上,要么方向会有偏差,要么相对大小会改变,要么会出现一些很奇特的形状。

了解更多关于基准的信息

了解更多关于投影的信息

符号化

符号化是一个较为高端的词汇,在地图领域,它表示将数据转化为图形的特定方式。

本质上,数据就是数据,本身并没有任何外观:比如像素值或者道路线的列表,不管是在电子表格、图表里还是在地图上展示,最初都没有特定的外观。所以用“转换”来形容我们处理数据的行为不太恰当,更准确的应该是说我们怎么把数据呈现出来。

符号化的技术涵盖了任何能够以图形甚至 3D 形式表达的内容,但在此我们仅探讨其中的一部分:

顺序和分类

scales

符号化往往强调数据的两种不同特征:顺序和分类。顺序或连续数据也可以称为线性数据,它通常是在一定范围内的数值,比如 0 到 100 之间的海拔高度。而分类或离散数据则是固定数量值中的一个,比如“真”、“假”、“民主党”或“共和党”。

在数据里,这种对顺序数据和分类数据的区分,是进行符号化处理时重点关注的方面之一。顺序数据更适合像比例点地图或者在光栅上呈现的渐变色带这类展示形式;而分类数据通常会使用多个不同的符号来做标注,或者通过不同的离散颜色分段来呈现。

着色图

着色图能够保留地方原有的边界和形状,借助改变颜色、图案或者纹理来表达数据。这类地图常见的例子有选举结果图或者人口统计图,其中的数据是某个固定区域的百分比值,比如每个选区或者人口普查区的值。

着色图特别适合用来展示比率、密度或百分比等数据。但不建议用于展示绝对值,因为其面积固定不变,容易过分凸显大的特征。此外,由于着色图依靠颜色差异来传递信息,所以在选择颜色时,要保证其对色盲友好、容易理解并且保持一致。

read more about colors

点图

点图对于绝对值而言是更优的选择,这种地图每个特征仅保留一个点。

点图中点的样式与标记多种多样。根据点的序列值或类别值为点着色,是很实用的方法。点的大小可调整,以展现相对值。调整大小的符号可以是各种形状,如圆形、方形或是它们所代表的具体图像。倘若有多个值需累加展示,那么缩放的饼图能出色地呈现复杂的数据集。

需要留意的是,要避免一次显示过多的点,否则会让地图难以阅读。当点的数量过多时,可以考虑运用着色图将点的值聚合起来。或者采用聚类的方式,把密集的点分组,等地图放大后再查看。

分析

矢量转光栅

尽管光栅数据和矢量数据看起来差异显著,但它们是可以相互转换的,实际上这种转换也比较常见,只是并非直接进行。

通常情况下,矢量数据在显示时往往会转变为光栅数据,我们将这一过程称作“光栅化”或者“渲染”。这是由于计算机屏幕和打印机是基于像素工作,而非基于线条或形状。然而,这种转换存在缺陷,需记住矢量数据并非基于像素,所以放大时不会出现模糊的特征。因此,一旦矢量数据被转换为光栅格式,就无法将这种光栅表示完全还原回原始的源数据。

有时我们会提前把矢量数据转换为光栅数据,是因为对于某些类型的分析,以像素为基础进行计算会更方便。

光栅转矢量

同样,光栅数据也能通过多种方式实现矢量化。在地球的光栅卫星图像中,人们会绘制或“描摹”街道的线条、房屋的位置点以及建筑物的多边形。这使我们能够得到一个能进行更多操作的数据版本。比如,你可以从街道的矢量数据中计算驾驶路线,然而却无法从街道的卫星图像里做到这点。

模拟

利用地理数据,我们能够模拟某些自然过程,这也是制图师的重要任务之一。例如,在给定一个山脉的高程数据时,我们能够模拟出这些山脉在光线下的高光和阴影,此过程被叫做山脊阴影(hillshading)。

更为复杂的过程同样是可行的,例如明确降雨后水会聚集在何处,这被称为“集水区”(watershed),或者确定站在山顶上时,地图上哪些区域能够被看到,这被称作“视域”(viewshed)。

聚合

最常见的聚合形式为总和——给定一大组数字,能将它们相加,进而一次性了解这些数据。例如,一个国家的 GDP 相比仅仅罗列经济中每个个体的贡献,更具信息量。

在地图中,聚合的运用也是类似的。给定详细的数据,例如数百万个家庭的收入,能够使用制图算法对特定区域内的值进行求和或平均,以展现每个城镇或城市的平均收入。

binning-wide

聚合还会与一种被称为分箱(binning)的技术一同使用:给定众多离散的点,可以在地图上绘制任意形状,如方形或六边形,并计算落在每个形状里的所有点。这样,取代数百万个难以一眼看清的小点,可将地图样式设置为着色图。

插值

聚合将大量数据精简为更简易的形式,以方便进行分析和可视化,而插值则是“填补空白”,用于在数值之间填充缺失的数据。插值常用于诸如高程这类的数据集,在这些数据集中,虽然有记录山脉每一英寸高度的光栅数据,但数据中可能会存在缺失的部分——程序员称其为“空值”。。

插值方法会查看周边的值,并假定缺失的值大体上与周边的值相似——例如,山顶上缺失的像素会被假设为较高,而山谷中缺失的像素则被假设为较低。

有许多方法能够对点数据进行插值: voronoi

Voronoi 图可以将一组点转换为围绕这些点的多边形。这张示例图展示了机场的 Voronoi 图

heatmap

热力图会为每个点分配一个权重,并用“更热”的颜色来表示点值的密度。这张示例图来自Leaflet.heat 插件

  • 等高线将点样本数据绘制成围绕这些点的线条,以表示一个连续的估计值。高程图通常使用这种技术。
  • TIN(三角不规则网)会绘制点之间的三角形,用于实现地形的可视化。

后记

我们希望这篇文章能给你带来启发和收获:这个领域潜力巨大,还有许多未解答的问题。地图是一个相关联的话题,涉及艺术、数学、物理学、生态学等多个领域。

如果你在阅读过程中有任何问题或建议,欢迎报告问题或提交建议