GeoJSON三分钟入门教程

大哥大姐在线求帮请问一下,GeoJSON三分钟入门教程
最新回答
此姻花弥散

2024-12-01 02:34:45

GeoJSON,即Geo+JSON,是一种使用JavaScript对象表示法(JSON)编码地理数据结构的格式。其目的是提供一种简单且易于理解的格式,用于表示地理特征及其非空间属性。


GeoJSON遵循JSON设计原则,这是一种轻量级、基于文本的数据交换格式,易于人类和机器读写。它通过使用JSON结构来表示地理特征、它们的属性和空间范围。


让我们通过例子来看看具体实现。


GeoJSON对象可以定义以下内容:


1、几何对象表示坐标空间中的点、曲线和曲面。GeoJSON定义了7种几何形状“类型”:Point、MultiPoint、LineString、MultiLineString、Polygon、MultiPolygon和GeometryCollection。


这些形状分为单个类型几何对象(如点、线和多边形)和同构类型多部分Geometry对象(如MultiPoint、MultiLineString和MultiPolygon)。理解位置的基本概念将有助于构建这些形状。


位置由2个或3个数字组成的数组表示,其中前两个数字代表经度和纬度(按此顺序),可选的第三个数字表示高度或海拔。


在不同的地理工具或库中,坐标顺序可能不同,例如Google Maps API和Leaflet.js期望为[latitude, longitude],而GeoJSON、shapefile、D3.js、ArcGIS API期望为[longitude, latitude]格式。始终注意应用程序所需顺序。


所有几何形状都由两个键值对定义:“type”和“coordinates”。在示例GeoJSON对象中,这两个键被发现。


1.1 Point


要表示Point几何图形,需要一个位置。


因此,GeoJSON中的Point可以定义为:


1.2 MultiPoint


对于MultiPoint对象,坐标值将是Position对象数组。


1.3 LineString


对于LineString,需要提供两个位置,即线段的起点和终点。


1.4 MultiLineString


对于“MultiLineString”,“coordinates”成员是LineString坐标数组的数组。


1.5 Polygon


GeoJSON中的多边形比其他几何形状稍微复杂一些。多边形在RFC文档中定义为:


对于“多边形”,“坐标”成员必须是线性环坐标数组的数组。


要理解多边形定义,必须先了解LinearRing概念。LinearRing是一个具有四个或更多位置的封闭LineString,起点和终点在同一个位置。GeoJSON格式中的多边形由多个LinearRing形状定义。Polygon的外边界是一个LinearRing,并可有多个其他LinearRing形状定义内部复杂环形。


“坐标”数组中的第一个LinearRing数组必须是外环,所有后续数组定义内环。RFC 7946还定义了这些环的缠绕顺序,外环逆时针定义,内环顺时针定义。这种缠绕顺序对许多绘图API很有用。


1.6 MultiPolygon


对于“MultiPolygon”,“coordinates”成员是Polygon坐标数组的数组。


1.7 GeometryCollection


GeometryCollection是其他几何类型的异构组合。对象没有“coordinates”成员,而是有一个名为“geometries”的成员。该数组的每个元素都是一个GeoJSONGeometry对象。数组可能为空。


1.8 Feature


在讨论几何形状时,我们知道可以在地图上绘制形状。然而,地图上的形状应该有现实世界意义,这由形状的属性定义。例如,用多边形标记的建筑物可能有一个名称属性,如“泰姬陵”,可能还有一些其他参数进一步描述形状。在GeoJSON中,“Feature”类型的对象定义几何形状和属性。


Feature对象有一个“type”成员,值为“Feature”。它还有一个“geometry”成员,值为任何上述几何形状或空值。此外,它有一个“properties”成员,值为JSON对象(或空值),定义对象属性。还可以有一个可选的“id”成员,用于指定功能标识符的唯一字符串或空值。


作为Feature对象示例,请查看本文开头看到的示例GeoJSON对象。


1.9 FeatureCollection


FeatureCollection对象是Feature对象的组合,是GeoJSON文件中观察到的最常见的顶级结构。它有一个“type”成员,值为“FeatureCollection”,另一个成员名为“features”,值为Feature对象数组。


1.10 边界框


GeoJSON对象可能包含一个边界框,用于定义对象边界范围。在二维几何中,边界框是一个名为“bbox”的成员和一个由四个数字组成的数组作为值。这四个值定义包含完整GeoJSON对象的矩形。


了解了GeoJSON的基础知识后,让我们探讨一些可视化GeoJSON数据的工具。


2、GeoJSON可视化工具


以下是可用于快速可视化GeoJSON数据的一些流行基于GUI的工具:


2.1 Tom的GeoJSON工具清单


Tom MacWright在GitHub上列出了详细的实用程序列表,用于转换、处理和分析GeoJSON数据。


2.2 GeoPandas教程


对于基于Python的环境(例如Jupyter Notebook),可以使用GeoPandas等模块。Twilio提供了一个使用Shaply和GeoPandas的不错的小教程。


2.3 GeoJSON App


在GeoJSON App这个网络应用程序上,可以直接在Google地图上绘制几何形状,并在两个窗格中并排显示GeoJSON代码。这种可视化有助于理解GeoJSON概念,同时可以单击下载.geojson文件。


2.4 geojson.io


geojson.io是一个基于Web的编辑器,可以导入和导出GeoJSON数据。它还并排显示GeoJSON代码和可视化输出。


2.5 QGIS


QGIS是一款免费的开源跨平台软件,用于查看、编辑和分析地理空间数据。QGIS支持GeoJSON格式,以及大量其他地理空间数据标准。可以从这里下载和安装最新版的QGIS软件。以加拿大纳奈莫市的犯罪事件数据为例,数据以GeoJSON格式提供。


在计算机上打开“QGIS Browser”并浏览左侧窗格中的.geojson文件。右侧窗格将显示数据点的快速预览。


可以通过单击预览选项卡旁边的属性选项卡来查看属性。


通过这些工具和资源,我们可以深入探索和理解GeoJSON的使用和应用。