0. 坐标系投影
地理坐标系和投影坐标系是两种常用的坐标系统,它们各自有着独特的特性和应用场景。
0.1 地理坐标系
地理坐标系(Geographic Coordinate System
, 简称 GCS
)是以地球椭球体面为参考面,以法线为依据,用经纬度表示地面点在椭球表面的位置的坐标系统。简单来说,地理坐标系就是用经纬度来表示地球表面物体的位置。不同的地理坐标系的区别在于用于拟合地球大地水准面的椭球大小和位置。常见的地理坐标系包括GCS_WGS_1984
、GCS_CN_2000
、GCS_Beijing_1954
和GCS_Xian_1980
等。
0.2 投影坐标系
投影坐标系(Projection Coordinate System
,简称PCS
)的实质是平面坐标系统,地图单位通常为米。它是将球面坐标转为平面坐标的过程,即将地球椭球展平在地图上画出来。投影坐标系的主要用途包括地图制作和长度、面积的量测等。
0.3 投影转换
当我们需要在地理坐标系和投影坐标系之间进行转换时,需要进行投影转换。投影转换通常涉及到将地理坐标(经纬度)转换为投影坐标(米),或者将投影坐标转换为地理坐标。
0.4 大地坐标系
大地坐标系是以参考椭球面为基准面而建立起来的坐标系,也可以简单理解成属于地理坐标系的一种。大地坐标系又分为参心大地坐标系和地心大地坐标系。其中参心坐标系是以椭球几何中心为原点构建的坐标系,一般用来对局部地区大地测绘使用,而地心坐标系是以地球质心为原点构建的坐标系,一般用来对地球整体大地测绘使用。
0.5 常用坐标系
WGS84
:地心大地坐标系,我们常说的GPS定位系统就是依据此坐标系建立的。CGCS200
:地心大地坐标系,参数跟84稍有不同,可忽略。GCJ02
:又称火星坐标系,中国国家测绘局所制定的坐标系统,其本质就是在 WGS84 经纬度的基础上进行了偏移加密。BD09
:百度在GCJ02 的基础上又进行了一层加密。
1. EPSG
1.1 介绍
EPSG(European Petroleum Survey Group)
是一个标准化的地理空间参考系统标识符集合,中文名为欧洲石油调查组织
。2005年EPSG
组织并入国际油气生产者协会IOGP(International Association of Oil & Gas Producers)
。
EPSG
用于标识不同的地理空间参考系统,包括坐标系统、地理坐标系、投影坐标系等。这些标识符可用于许多应用程序和地理信息系统软件,以确保数据在不同系统之间的正确转换和处理。现在,EPSG
已被开放地理空间信息联盟OGC(Open Geospatial Consortium)
承认并管理,成为了一个全球性的标准。
EPSG
是将常用的坐标系、投影、地理坐标系等地理空间参考系统的名称、参数、定义等信息进行标准化,并赋予一个唯一编码。
1.2 常见的EPSG编码
-
EPSG:4326
: 是WGS84坐标系。
-
EPSG:3857
或EPSG:900913
: 是Web墨卡托投影坐标系。
-
EPSG:4490
: CGCS 2000地理坐标系统
-
EPSG:4214
: Beijing 1954地理坐标系统
-
EPSG:4610
: Xian 1980地理坐标系统
3. GIS数据
可以将GIS数据分为矢量数据和栅格数据,其中矢量数据以点、线、面等几何图形来表示地理实体,栅格数据以像素的形式来表示地理实体。
3.1 矢量数据
矢量数据是以点、线、面的形式来表示客观世界中的实体,它以一组(x,y)或(x,y,z)的坐标点的形式进行存储。同一个空间实体在不同的坐标系中,可以被表示成为点线面中的任何一种。
3.2 栅格数据
栅格数据是将空间划分成很多有规律的网格,每一个网格都表示空间上相同大小的范围,网格的值表示该空间范围内被计算出来的某一属性值,每一个栅格所表示的地面实际范围的大小,被称为分辨率。
从数据特征上来讲,栅格数据有连续和离散两种类型,连续数据如气温和等高线数据,离散数据如人口密度等。
4. OGC
开放地理空间信息联盟(Open Geospatial Consortium), 它的主要目的就是制定与空间信息、基于位置服务相关的标准。而这些所谓的标准其实就是一些接口或编码的技术文档,不同的厂商、各种GIS产品都可以对照这些文档来定义开放服务的接口、空间数据存储的编码、空间操作的方法。
常用到的WMS、WFS、WCS、WMTS等。
4.1 WMS
WMS的全称是Web Map Service
,web地图服务。它是将地理数据添加样式后进行实时出图,是一个使用动态数据或用户定制地图的理想解决办法。
OGC提供的用于地图渲染的WMS服务的操作接口有:
https://ahocevar.com/geoserver/wms?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&FORMAT=image/png&TRANSPARENT=true&LAYERS=topp:states&CRS=EPSG:3857&STYLES=&WIDTH=658&HEIGHT=355&BBOX=-13888944.635145342,2867630.7173607955,-7451112.364854658,6340929.2826392045
4.2 WFS
WFS服务的全称是Web Feature Service
,web要素服务。支持对地理要素的插入、更新、删除、检索和发现,该服务根据HTTP客户请求返回GML(Geography Markup Language,地理标识语言)数据,可以通过OGC Filter构造查询条件,支持基于空间几何关系的查询、基于属性域的查询、基于空间关系和属性域的共同查询。
https://ahocevar.com/geoserver/wfs?service=WFS&version=1.1.0&request=GetFeature&typename=osm:water_areas&outputFormat=application/json&srsname=EPSG:3857&bbox=-8948615.422847113,5370452.51819444,-8869159.13194467,5393383.626679991
4.3 WMTS
WMTS服务的全称是Web Map Tile Service,web地图切片服务。它是提供一种采用预定义切片方法发布数字地图服务的标准化解决方案,弥补WMS在数据不变的情况下请求慢的不足。
https://mrdata.usgs.gov/mapcache/wmts?layer=sgmc2&style=default&tilematrixset=GoogleMapsCompatible&Service=WMTS&Request=GetTile&Version=1.0.0&Format=image/png&TileMatrix=4&TileCol=3&TileRow=6
5. 地图切片
采用预生成的方法存放在服务器端,然后根据用户提交的不同请求,把相应的地图瓦片发送给客户端的过程,它是一种多分辨率层次模型,从瓦片金字塔底层到顶层,分辨率越来越低,但表示的地理范围不变。
5.1 相关概念
以谷歌切片(900913)集为例来说明一下切片原理和几个重要的概念。
1)切片范围
切片范围是指在制定切片规则的时候,需要定义一个大于数据范围或者与数据范围一致的切片范围,谷歌切片集的切片范围为全球范围,即[-20037508.34, -20037508.34, 20037508.34, 20037508.34]
。
2)切片原点
在确定了切片范围后,需要定义一个切片原点,切片原点的定义有两种:左上(xyz
)或者左下(tms
)。切片原点的选择主要影响 “级-行-列”中的“列”。谷歌切片集的切片原点为左上,即 [-20037508.34, 20037508.34]
。
3)切片大小
对于栅格切片,切片大小是指切片完成后每个图片的大小。对于矢量切片,切片大小指的是客户端在渲染切片数据时所呈现出来的大小。早期,切片的大小是256
(谷歌切片集的切片大小)像素,这个跟当时的电脑的分辨率比较小有很大关系,随着技术的进步,现在很多切片的时候会采用512
像素的大小,矢量切片在渲染的时候的就是采用的这个大小。
4)切片分辨率
又称为像素大小(Pixel Size),是一组计算值,在不同的级别下其值不同,其计算公式为(xmax - xmin) / tileSize * Math.pow(2, zoom)
,如在0级的时候,谷歌切片集的分辨率为(20037508.34 - (-20037508.34)) / 256 * Math.pow(2, 0) = 156543.03390625
5.2 切片分类
- 切片规则
xyz
:左上tms
:左下
- 切片类型
- 栅格切片(
.png
) - 矢量切片(
.mvt
或.pbf
)
- 栅格切片(
6. 常用格式
常见的控件数据的存储格式有:Geodatabase
、Shapefile
、Geojson
、KML/KMZ
、GPX
、WKT
。
6.1 Geodatabase
POSTGIS
、MYSQL Spatial
等。
6.2 Shapefile
Shapefile 是最常见的地理空间文件类型。所有商业和开源都接受 Shapefile 作为 GIS 格式。Shpaefile文件的大小限制是2GB。
其中shp、shx以及dbf为扩展名的文件是必需的,它们的内容如下
shp
:存储要素几何的主文件shx
:存储要素几何的索引文件dbf
:存储要素属性信息的dBASE表格prj
: 记录投影信息
6.3 Geojson
GeoJSON 以 JavaScript 对象表示法(JSON)形式将坐标存储为文本,包括矢量点、直线和多边形以及属性信息。
// geometry Point(点)、MultiPoint(多点)、LineString(线)、MultiLineString(多线)、Polygon(面)、MultiPolygon(多面)
{"type":"Point","coordinates":[105.380859375,31.57853542647338]}
// feature
{"type":"Feature","properties":{},"geometry":{"type":"Point","coordinates":[105.380859375,31.57853542647338]}}
// collection
{"type": "FeatureCollection","features": [{"type": "Feature","properties": {},"geometry": {"type": "Point","coordinates": [105.380859375,31.57853542647338]}}]
}
6.4 KML/KMZ
KML 代表 Keyhole 标记语言。这种 GIS 格式是基于 XML 的,主要用于谷歌地球。KMZ(KML-Zipped)取代 KML 成为默认的 Google Earth 地理空间格式,因其是该文件的压缩版本。2008年,KML/KMZ 成为开放地理空间联盟的国际标准。
6.5 GPX
GPX(GPS交换格式)是一种轻量级XML数据格式,用于在Internet上的应用程序和Web服务之间交换GPS数据(航点、路线和轨道)。
航点
:航点是一个点的 WGS84 (GPS) 坐标,表示 OGR 类型 wkbPoint 的特征层路线
:表示OGR类型wkbLineString的一层特征。它包括一个跟踪点列表,这些点是显示通往目的地的转弯或阶段点的航点轨道
:Tracks 表示 OGR 类型 wkbMultiLineString 的特征层。它由至少一个段组成,该段包含描述路径的点的有序列表中的航路点。它由代表连续 GPS 轨迹的轨迹点列表组成。
6.6 WKT
WKT格式是一种文本格式,用于描述二维和三维几何对象的空间特征。WKT是“Well-Known Text
”的缩写,是一种开放的国际标准,由Open Geospatial Consortium(OGC)
定义和维护。
1)描述空间实体
POINT (<x> <y>)
MULTIPOINT ((<x1> <y1>, <x2> <y2>, ...))LINESTRING (<x1> <y1>, <x2> <y2>, ...)
MULTILINESTRING ((<x1> <y1>, <x2> <y2>, ...), (<x1> <y1>, <x2> <y2>, ...))POLYGON ((<x1> <y1>, <x2> <y2>, ..., <x1> <y1>))
MULTIPOLYGON (((<x1> <y1>, <x2> <y2>, ..., <x1> <y1>)), ((<x1> <y1>, <x2> <y2>, ..., <x1> <y1>)))
2)描述空间坐标系参数
GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.01745329251994328,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]]