什么是 GeoJSON?以及我们在 Geofan.org 如何使用它
什么是 GeoJSON?数字地图语言的简明指南

你是否曾用谷歌地图找过最近的咖啡店,查过国家公园的边界,或者在应用程序上追踪过跑步路线?如果是的话,那么你已经与一个隐藏但功能强大的工具打过交道了,它能精确地告诉你的屏幕该画些什么。这个工具通常就是 GeoJSON。
简单来说,GeoJSON 就像一份数字地图的“配方”。它是一种以标准化文本格式记录地理信息的方法,计算机和网络浏览器可以轻松理解并用它在地图上绘制点、线和形状。
“JSON” 部分:井然有序的文本
“JSON” 是 JavaScript Object Notation 的缩写,这听起来很技术性,但概念其实非常简单。你可以把它看作是一种使用标签来组织信息的方式。
想象一下你有一张名片,上面有标签和对应的信息:
- 姓名: John Smith
- 公司: GeoFan.org
- 邮箱: john@geofan.org
计算机会使用大括号 {} 和键值对(key-value pairs)的形式,将这些信息写成 JSON 格式:
{
"name": "John Smith",
"company": "GeoFan.org",
"email": "john@geofan.org"
}
就是这么简单!这只是一种清晰、可预测的信息罗列方式。由于其结构清晰,任何能理解 JSON 的程序都可以立即读取“姓名”或“邮箱”等信息。这种简洁的 JSON 格式在网络上被广泛用于数据交换,使得在不同系统和应用之间共享信息变得非常容易。
“Geo” 部分:在地图上绘图 🗺️
GeoJSON 使用同样简洁有序的文本格式来描述地理形状。你会遇到三个主要的构建模块。
1. 点 (Point)
点 (Point) 是最简单的形状——它只是地球上的一个位置。它由一对坐标定义:[经度, 纬度]。点非常适合用来标记:
- 一个特定的建筑(如埃菲尔铁塔)
- 世界地图上的一个城市
- 一家咖啡店的位置
2. 线串 (LineString)
线串 (LineString) 是将一系列的点连接起来形成的结果,就像玩连点成线的游戏一样。它用于表示那些有长度但没有面积的事物,例如:
- 一条公路或高速公路
- 一条河流的路径
- 一条徒步小径或马拉松路线
3. 多边形 (Polygon)
多边形 (Polygon) 类似于线串,但最后一个点会与第一个点相连,从而形成一个闭合的形状。这会创建一个封闭的区域。多边形用于定义事物的边界,例如:
- 一个国家或州
- 一个国家公园的范围
- 一个湖泊的轮廓
综合运用:要素 (Features) 和属性 (Properties)
地图上的一个形状本身并没有太大用处。当你在地图上看到一个点时,你想知道它是什么。是餐馆?是博物馆?还是火车站?
这就是属性 (Properties) 发挥作用的地方。GeoJSON 中的每个形状通常都与一个描述它的属性列表捆绑在一起。
一个完整的 GeoJSON 对象被称为要素 (Feature)。一个要素包含两个主要部分:
- 几何图形 (Geometry): 形状本身(点、线串或多边形)。
- 属性 (Properties): 关于该形状的描述性信息(就像我们之前看到的名片信息)。
例如,下面是一个白宫的简化版 GeoJSON 要素:
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [-77.0365, 38.8977]
},
"properties": {
"name": "The White House",
"address": "1600 Pennsylvania Avenue NW, Washington, D.C."
}
}
即使你以前从未见过代码,你可能也能读懂并理解它所代表的含义:地图上的一个点,它有名称和地址。
为什么以及我们如何在 Geofan.org 上使用 GeoJSON
计算机擅长处理结构化数据——即遵循特定、可预测格式的数据。一旦数据结构化,它就可以轻松地从一个系统导出并导入到另一个系统,从而允许不同的应用程序理解和处理相同的信息。GeoJSON 就是这方面的一个完美例子。
在 Geofan.org,我们选择 GeoJSON 作为我们的标准,因为它简单、易读,并且在各种基于网络的地图应用中得到了广泛支持。这确保了我们所有工具都能提供一致且用户友好的体验。
例如,当你使用我们的 MapAnnotate 在地图上绘图时,你创建的标记、形状和线条都可以保存为 GeoJSON 文件。下次你想再次编辑它们时,只需将 GeoJSON 文件重新加载到工具中即可。此外,你还可以与他人分享你的 GeoJSON 文件,他们可以将其导入到自己的地图工具或应用程序中。
我们的 Map River Mark 工具可以自动检测河流路径,Map Mountain Mark 支持自动山峰检测。对于这两款工具,检测完成后,你都可以点击导出按钮,将河流路径下载为 GeoJSON 文件,然后在其他 GIS 软件或地图应用中使用该文件。
你在地图上看到的图形只是底层 GeoJSON 数据的可视化表示。这种数据与可视化的分离提供了更大的灵活性和互操作性。
尽管还有许多其他用于存储地理数据的格式,如 KML、GPX 和 Shapefiles,但我们选择 GeoJSON 是因为它简单、易读,并且在基于网络的地图应用中得到了广泛支持。在我们的网站上,我们尽可能地使用 GeoJSON 作为标准,这样用户就不会被不同的格式所困扰。
GeoJSON 在我们工具中的实际应用
Map Annotate: 你可以直观地在地图上绘制点、线和形状,然后将你的绘图导出为 GeoJSON 文件。你也可以导入一个 GeoJSON 文件进行进一步编辑。
例如,在地图上创建一个标记后,你可以点击导出按钮下载 GeoJSON 文件。
在地图上直观地创建一个标记

你在地图上看到的标记可以导出为 GeoJSON

我们的 Map River Mark 工具可以自动检测河流路径,而我们的 Map Mountain Mark 工具则可以对山峰进行标记。使用这两款工具,一旦检测完成,你就可以点击导出按钮将结果下载为 GeoJSON 文件。
点击下载按钮以导出 GeoJSON

导出的文件可以在其他 GIS 软件中使用,也可以重新导入到我们的 Map Annotate 工具中进行进一步的编辑和自定义样式。
结论
GeoJSON 将复杂的地理信息转化为简单、结构化的文本。它是一种通用语言,使我们能够轻松地在不同平台上创建、共享和可视化空间数据。无论你是在标记一个位置还是勾勒整个国家的轮廓,GeoJSON 都提供了一种清晰有序的方式,将世界呈现在你的屏幕上。