GeoJSON这种地理信息表示法,小白如何快速掌握其基本概念和用法呢?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2377个文字,预计阅读时间需要10分钟。
目录 + 简介 + 举例 + 空间行态 + FeatureCollection + Feature + 基本对象 + Point + MultiPoint + LineString + MultiLineString + Polygon + MultiPolygon + GeometryCollection + 可选属性 + 其他 + coordinate + 坐标参考系 + 在ts中使用 + 简介 + GeoJSON 是一种用于表示地理空间数据的格式
目录
- 简介
- 举例
- 空间行状
- FeatureCollection
- Feature
- 几何对象
- Point
- MultiPoint
- LineString
- MultiLineString
- Polygon
- MultiPolygon
- GeometryCollection
- 可选属性
- 其他
- coordinate
- 坐标参考系
- 在 ts 中使用
简介
GeoJSON是一种使用JSON来编码各种地理数据结构的格式,是一种轻量级的数据交换格式,可以用来表示几何对象、属性数据、空间参考系统等信息
由两种对象组成:Geometry(几何对象)和Feature(空间行状)
- 几何对象用来描述地理空间中的点、线、面等几何形状
- 空间行状用来描述一个有界的实体,包括几何对象和其他属性信息
几何对象类型有:
- 点:
Point - 多点:
MultiPoint - 线:
LineString - 多线:
MultiLineString - 面:
Polygon - 多面:
MultiPolygon - 几何集合:
GeometryCollection
空间行状类型有:
- 空间行状:
Feature - 空间形状集合:
FeatureCollection
举例
几何对象和空间行状可以相互嵌套
const GeoJSON = { type: "FeatureCollection", features: [ { type: "Feature", geometry: { type: "Point", coordinates: [121.4737, 31.2304] }, properties: { id: 1 }, }, { type: "Feature", geometry: { type: "Point", coordinates: [121.4837, 31.2504] }, properties: { id: 2 }, }, ], };
空间行状
FeatureCollection
FeatureCollection是Feature对象的集合,用来表示一组Feature对象
由type和features两个属性组成:
type属性的值为FeatureCollectionfeatures属性的值为Feature对象的数组
const FeatureCollectionJSON = { type: "FeatureCollection", features: [feature], };
Feature
Feature对象用来表示几何对象的属性信息
由type、geometry和properties三个属性组成:
type属性的值为Feature,geometry属性的值为Geometry几何对象properties属性的值为属性对象(可选)
const FeatureJSON = { type: "Feature", geometry: { type: "Point", coordinates: [121.4737, 31.2304] }, properties: { id: 1 }, };
几何对象
Point
Point用来表示一个点
由type和coordinates两个属性组成:
type属性的值为Pointcoordinates属性的值为一个数组,数组的第一个元素为经度,第二个元素为纬度
const PointJSON = { type: "Point", coordinates: [121.4737, 31.2304], };
MultiPoint
MultiPoint用来表示多个点
由type和coordinates两个属性组成:
type属性的值为MultiPointcoordinates属性的值为一个数组,数组的每个元素都是一个点的坐标
const MultiPointJSON = { type: "MultiPoint", coordinates: [ [121.4737, 31.2304], [121.4837, 31.2504], ], };
LineString
LineString用来表示一条线
由type和coordinates两个属性组成:
type属性的值为LineStringcoordinates属性的值为一个数组,数组的每个元素都是一个点的坐标
const LineStringJSON = { type: "LineString", coordinates: [ [121.4737, 31.2304], [121.4837, 31.2504], ], };
MultiLineString
MultiLineString用来表示多条线
由type和coordinates两个属性组成:
type属性的值为MultiLineStringcoordinates属性的值为一个数组,数组的每个元素都是一个线的坐标数组
const MultiLineStringJSON = { type: "MultiLineString", coordinates: [ [ [121.4737, 31.2304], [121.4837, 31.2504], ], [ [121.4727, 31.2314], [121.4827, 31.2514], ], ], };
Polygon
Polygon用来表示一个面
由type和coordinates两个属性组成:
type属性的值为Polygoncoordinates属性的值为一个数组,数组的第一个元素为外环的坐标数组,后面的元素为内环的坐标数组
polygon的坐标数组的第一个元素和最后一个元素是相同的,表示闭合
const PolygonJSON = { type: "Polygon", coordinates: [ [ [121.4737, 31.2304], [121.4837, 31.2504], [121.4937, 31.2304], [121.4737, 31.2304], ], [ [121.4717, 31.2314], [121.4827, 31.2524], [121.4937, 31.2334], [121.4757, 31.2344], ], ], };
MultiPolygon
MultiPolygon用来表示多个面
由type和coordinates两个属性组成:
type属性的值为MultiPolygoncoordinates属性的值为一个数组,数组的每个元素都是一个面的坐标数组
const MultiPolygonJSON = { type: "MultiPolygon", coordinates: [ [ [ [121.4737, 31.2304], [121.4837, 31.2504], [121.4937, 31.2304], [121.4737, 31.2304], ], [ [121.4737, 31.2304], [121.4837, 31.2504], [121.4937, 31.2304], [121.4737, 31.2304], ], ], [ [ [121.4737, 31.2304], [121.4837, 31.2504], [121.4937, 31.2304], [121.4737, 31.2304], ], [ [121.4737, 31.2304], [121.4837, 31.2504], [121.4937, 31.2304], [121.4737, 31.2304], ], ], ], };
GeometryCollection
GeometryCollection用来表示几何对象的集合
由type和geometries两个属性组成:
type属性的值为GeometryCollectiongeometries属性的值为几何对象的数组
const GeometryCollectionJSON = { type: "GeometryCollection", geometries: [ { type: "Point", coordinates: [121.4737, 31.2304] }, { type: "LineString", coordinates: [ [121.4737, 31.2304], [121.4837, 31.2504], ], }, ], };
可选属性
这些属性都是GeoJSON的扩展属性,不是GeoJSON规范的一部分
id属性,用来描述FeatureCollection的唯一标识bbox属性,用来描述FeatureCollection的边界框- 四至坐标,一般用来做数据裁剪
- 这是一组左上角和右下角的坐标,示例:
[minLon, minLat, maxLon, maxLat]
properties属性,用来描述FeatureCollection的属性crs属性,用来描述坐标参考系
其他
coordinate
coordinate是一个数组,表示一个点的坐标,数组的长度表示坐标的维度,一般是2维或3维
2维:[lon, lat]3维:[lon, lat, height]
coordinate的第一个元素表示经度,第二个元素表示纬度,第三个元素表示高度
坐标顺序是[lon, lat],这个是推荐顺序,可由crs属性指定
coordinates是多维数组:
- 点:
[lon, lat] - 线:
[[lon, lat], [lon, lat]] - 面:
[[[lon, lat], [lon, lat]]] - 多面:
[[[[lon, lat], [lon, lat]]]]
坐标参考系
最常使用的坐标系是EPSG:4326和EPSG:3857:
EPSG:4326是WGS84(CGCS2000,大地) 坐标系,是GeoJSON规范的默认坐标系EPSG:3857是Web Mercator(墨卡托) 坐标系,是OpenLayers的默认坐标系
它们的区别:
EPSG:4326是经纬度坐标系,EPSG:3857是投影坐标系EPSG:4326的坐标范围是[-180, -90, 180, 90],EPSG:3857的坐标范围是[-20037508.342789244, -20037508.342789244, 20037508.342789244, 20037508.342789244]EPSG:4326的坐标单位是度,EPSG:3857的坐标单位是米EPSG:4326的坐标原点是[0, 0],EPSG:3857的坐标原点是[-20037508.342789244, -20037508.342789244]EPSG:4326的坐标轴方向是[x, y],EPSG:3857的坐标轴方向是[x, -y]
在 ts 中使用
为了在ts使用GeoJSON能够有类型约束,我整理整理了一些GeoJSON的ts类型定义和创建GeoJSON的方法:
- geojson.d.ts
- geojson.helper.ts
举例:
表示一个点和多个点的GeoJSON集合:
使用geojson.d.ts
type PointType = FeatureCollection<Point | MultiPoint, GeoJsonProperties<T>>; const point2Geojson: PointType<{ id: string; name?: string }> = { type: "FeatureCollection", features: [ { type: "Feature", geometry: { type: "Point", coordinates: [120.4737, 31.2304], }, properties: { id: "12", name: "uccs" }, }, { type: "Feature", geometry: { type: "MultiPoint", coordinates: [ [121.4737, 31.2304], [111.4737, 31.2204], ], }, properties: { id: "1" }, }, ], };
创建一个几何对象
使用geojson.helper.ts
const pointGeometry = point<{ id: string }>([120.4737, 31.2304], { id: "1", }); const featureGeoJSON = feature<Point>(pointGeometry);
参考
- GeoJSON
- GeoJSON 格式
- GeoJSON 格式规范
- EPSG 4326 vs EPSG 3857 (投影,数据集,坐标系)
- turf.js
以上就是写给小白的地理信息的表示法GeoJSON的详细内容,更多关于GeoJSON地理信息表示法的资料请关注易盾网络其它相关文章!
本文共计2377个文字,预计阅读时间需要10分钟。
目录 + 简介 + 举例 + 空间行态 + FeatureCollection + Feature + 基本对象 + Point + MultiPoint + LineString + MultiLineString + Polygon + MultiPolygon + GeometryCollection + 可选属性 + 其他 + coordinate + 坐标参考系 + 在ts中使用 + 简介 + GeoJSON 是一种用于表示地理空间数据的格式
目录
- 简介
- 举例
- 空间行状
- FeatureCollection
- Feature
- 几何对象
- Point
- MultiPoint
- LineString
- MultiLineString
- Polygon
- MultiPolygon
- GeometryCollection
- 可选属性
- 其他
- coordinate
- 坐标参考系
- 在 ts 中使用
简介
GeoJSON是一种使用JSON来编码各种地理数据结构的格式,是一种轻量级的数据交换格式,可以用来表示几何对象、属性数据、空间参考系统等信息
由两种对象组成:Geometry(几何对象)和Feature(空间行状)
- 几何对象用来描述地理空间中的点、线、面等几何形状
- 空间行状用来描述一个有界的实体,包括几何对象和其他属性信息
几何对象类型有:
- 点:
Point - 多点:
MultiPoint - 线:
LineString - 多线:
MultiLineString - 面:
Polygon - 多面:
MultiPolygon - 几何集合:
GeometryCollection
空间行状类型有:
- 空间行状:
Feature - 空间形状集合:
FeatureCollection
举例
几何对象和空间行状可以相互嵌套
const GeoJSON = { type: "FeatureCollection", features: [ { type: "Feature", geometry: { type: "Point", coordinates: [121.4737, 31.2304] }, properties: { id: 1 }, }, { type: "Feature", geometry: { type: "Point", coordinates: [121.4837, 31.2504] }, properties: { id: 2 }, }, ], };
空间行状
FeatureCollection
FeatureCollection是Feature对象的集合,用来表示一组Feature对象
由type和features两个属性组成:
type属性的值为FeatureCollectionfeatures属性的值为Feature对象的数组
const FeatureCollectionJSON = { type: "FeatureCollection", features: [feature], };
Feature
Feature对象用来表示几何对象的属性信息
由type、geometry和properties三个属性组成:
type属性的值为Feature,geometry属性的值为Geometry几何对象properties属性的值为属性对象(可选)
const FeatureJSON = { type: "Feature", geometry: { type: "Point", coordinates: [121.4737, 31.2304] }, properties: { id: 1 }, };
几何对象
Point
Point用来表示一个点
由type和coordinates两个属性组成:
type属性的值为Pointcoordinates属性的值为一个数组,数组的第一个元素为经度,第二个元素为纬度
const PointJSON = { type: "Point", coordinates: [121.4737, 31.2304], };
MultiPoint
MultiPoint用来表示多个点
由type和coordinates两个属性组成:
type属性的值为MultiPointcoordinates属性的值为一个数组,数组的每个元素都是一个点的坐标
const MultiPointJSON = { type: "MultiPoint", coordinates: [ [121.4737, 31.2304], [121.4837, 31.2504], ], };
LineString
LineString用来表示一条线
由type和coordinates两个属性组成:
type属性的值为LineStringcoordinates属性的值为一个数组,数组的每个元素都是一个点的坐标
const LineStringJSON = { type: "LineString", coordinates: [ [121.4737, 31.2304], [121.4837, 31.2504], ], };
MultiLineString
MultiLineString用来表示多条线
由type和coordinates两个属性组成:
type属性的值为MultiLineStringcoordinates属性的值为一个数组,数组的每个元素都是一个线的坐标数组
const MultiLineStringJSON = { type: "MultiLineString", coordinates: [ [ [121.4737, 31.2304], [121.4837, 31.2504], ], [ [121.4727, 31.2314], [121.4827, 31.2514], ], ], };
Polygon
Polygon用来表示一个面
由type和coordinates两个属性组成:
type属性的值为Polygoncoordinates属性的值为一个数组,数组的第一个元素为外环的坐标数组,后面的元素为内环的坐标数组
polygon的坐标数组的第一个元素和最后一个元素是相同的,表示闭合
const PolygonJSON = { type: "Polygon", coordinates: [ [ [121.4737, 31.2304], [121.4837, 31.2504], [121.4937, 31.2304], [121.4737, 31.2304], ], [ [121.4717, 31.2314], [121.4827, 31.2524], [121.4937, 31.2334], [121.4757, 31.2344], ], ], };
MultiPolygon
MultiPolygon用来表示多个面
由type和coordinates两个属性组成:
type属性的值为MultiPolygoncoordinates属性的值为一个数组,数组的每个元素都是一个面的坐标数组
const MultiPolygonJSON = { type: "MultiPolygon", coordinates: [ [ [ [121.4737, 31.2304], [121.4837, 31.2504], [121.4937, 31.2304], [121.4737, 31.2304], ], [ [121.4737, 31.2304], [121.4837, 31.2504], [121.4937, 31.2304], [121.4737, 31.2304], ], ], [ [ [121.4737, 31.2304], [121.4837, 31.2504], [121.4937, 31.2304], [121.4737, 31.2304], ], [ [121.4737, 31.2304], [121.4837, 31.2504], [121.4937, 31.2304], [121.4737, 31.2304], ], ], ], };
GeometryCollection
GeometryCollection用来表示几何对象的集合
由type和geometries两个属性组成:
type属性的值为GeometryCollectiongeometries属性的值为几何对象的数组
const GeometryCollectionJSON = { type: "GeometryCollection", geometries: [ { type: "Point", coordinates: [121.4737, 31.2304] }, { type: "LineString", coordinates: [ [121.4737, 31.2304], [121.4837, 31.2504], ], }, ], };
可选属性
这些属性都是GeoJSON的扩展属性,不是GeoJSON规范的一部分
id属性,用来描述FeatureCollection的唯一标识bbox属性,用来描述FeatureCollection的边界框- 四至坐标,一般用来做数据裁剪
- 这是一组左上角和右下角的坐标,示例:
[minLon, minLat, maxLon, maxLat]
properties属性,用来描述FeatureCollection的属性crs属性,用来描述坐标参考系
其他
coordinate
coordinate是一个数组,表示一个点的坐标,数组的长度表示坐标的维度,一般是2维或3维
2维:[lon, lat]3维:[lon, lat, height]
coordinate的第一个元素表示经度,第二个元素表示纬度,第三个元素表示高度
坐标顺序是[lon, lat],这个是推荐顺序,可由crs属性指定
coordinates是多维数组:
- 点:
[lon, lat] - 线:
[[lon, lat], [lon, lat]] - 面:
[[[lon, lat], [lon, lat]]] - 多面:
[[[[lon, lat], [lon, lat]]]]
坐标参考系
最常使用的坐标系是EPSG:4326和EPSG:3857:
EPSG:4326是WGS84(CGCS2000,大地) 坐标系,是GeoJSON规范的默认坐标系EPSG:3857是Web Mercator(墨卡托) 坐标系,是OpenLayers的默认坐标系
它们的区别:
EPSG:4326是经纬度坐标系,EPSG:3857是投影坐标系EPSG:4326的坐标范围是[-180, -90, 180, 90],EPSG:3857的坐标范围是[-20037508.342789244, -20037508.342789244, 20037508.342789244, 20037508.342789244]EPSG:4326的坐标单位是度,EPSG:3857的坐标单位是米EPSG:4326的坐标原点是[0, 0],EPSG:3857的坐标原点是[-20037508.342789244, -20037508.342789244]EPSG:4326的坐标轴方向是[x, y],EPSG:3857的坐标轴方向是[x, -y]
在 ts 中使用
为了在ts使用GeoJSON能够有类型约束,我整理整理了一些GeoJSON的ts类型定义和创建GeoJSON的方法:
- geojson.d.ts
- geojson.helper.ts
举例:
表示一个点和多个点的GeoJSON集合:
使用geojson.d.ts
type PointType = FeatureCollection<Point | MultiPoint, GeoJsonProperties<T>>; const point2Geojson: PointType<{ id: string; name?: string }> = { type: "FeatureCollection", features: [ { type: "Feature", geometry: { type: "Point", coordinates: [120.4737, 31.2304], }, properties: { id: "12", name: "uccs" }, }, { type: "Feature", geometry: { type: "MultiPoint", coordinates: [ [121.4737, 31.2304], [111.4737, 31.2204], ], }, properties: { id: "1" }, }, ], };
创建一个几何对象
使用geojson.helper.ts
const pointGeometry = point<{ id: string }>([120.4737, 31.2304], { id: "1", }); const featureGeoJSON = feature<Point>(pointGeometry);
参考
- GeoJSON
- GeoJSON 格式
- GeoJSON 格式规范
- EPSG 4326 vs EPSG 3857 (投影,数据集,坐标系)
- turf.js
以上就是写给小白的地理信息的表示法GeoJSON的详细内容,更多关于GeoJSON地理信息表示法的资料请关注易盾网络其它相关文章!

