GIS 核心知识

2021-12-9

N_GIS

[[N_前端技术]]
[[N_ArcGis全家桶]]
[[N_GIS_GeoServer]]

GIS 基础知识

GIS 地理信息系统 (Geographic Information System) 是一个非常庞大的且横跨学科的多门学问, 首先需要知道 谁在定义标准?

OGC (Open Geospatial Consortium)

Open Geospatial Consortium——开放地理信息联盟,是一个非盈利的志愿的国际标准化组织,引领着空间地理信息标准及定位基本服务的发展目前在空间数据互操作领域,基于公共接口访问模式的互操作方法是一种基本的操作方法。

通过国际标准化组织(ISO/TC211)或技术联盟(如OGC)制定空间数据互操作的接口规范,GIS软件商开发遵循这一接口规范的空间数据的读写函数,可以实现异构空间数据库的互操作。基于http(Web)XML的空间数据互操作是一个很热门的研究方向,主要涉及Web Service的相关技术。OGC和ISO/TC211共同推出了基于Web服务(XML)的空间数据互操作实现规范Web Map Service,Web Feature Service,Web Coverage Service以及用于空间数据传输与转换的地理信息标记语言GML。

EPSG,European Petroleum Survey Group (EPSG), http://www.epsg.org , 它成立于1986年,并在2005年重组为 OGP(Internation Association of Oil & Gas Producers),它负责维护并发布坐标参考系统的数据集参数,以及坐标转换描述,该数据集被广泛接受并使用

坐标系

新手可能最可能搞混概念错误, 坐标系有两种类型

地理坐标系(Geographic Coordinate System)

地理坐标系是以经度和纬度为基础的坐标系,用于表示地球表面上的点的位置。它是直角坐标系的一种,但在地理坐标系中,点的位置是由经度(在东西方向)和纬度(在南北方向)两个角度值来定义的。地理坐标系不考虑地图的形状和尺寸,而是直接映射到地球表面。

in short 单纯定义地理位置数据的 记录/编码 方式, 注意这里不考虑如何展示出来

经度的范围是从 -180 度到 +180 度,纬度的范围是从 -90 度到 +90 度。常见的地理坐标系包括 WGS84(EPSG:4326)、NAD83 等。

EPSG:4326 (WGS84)

因为由美国主导的GPS系统就是在用它,它还有一个名气更大的别名叫作WGS84,WGS(World Geodetic System)是世界大地测量系统的意思,由于是1984年定义的,所以叫WGS84,之前的版本还有WGS72、WGS66、WGS60。
EPSG:4326 使用的是度作为单位,并定义了地球的水平和垂直坐标系统。它的范围是从 -180.0 到 180.0 经度,以及 -90.0 到 90.0 纬度

EPSG:4490 (CGCS2000)

以地球的几何球心为中心的地图就是EPSG:4479,以地球的椭球焦点为中心就是EPSG:4480

我国的GPS系统-北斗导航系统以及国家发行的“天地图”,用的是这一套地理坐标系统,中文名“中国国家2000地理坐标系统”,英文全称翻译名“中国大地坐标系2000”。

非高精度的大多数情况下, 可以认为 WGS84坐标系 = CGCS2000 坐标系;
GCJ-02只是一种坐标偏移标准(算法),它并不是一个坐标系,未被收录在EPSG中

地理编码:

4326 GCS_WGS_1984
4490 GCS_China_Geodetic_Coordinate_System_2000
4555 GCS_New_Beijing
4610 GCS_Xian_1980

投影坐标系统(Projected Coordinate System)

地球是有弧度三维的,我们要在地图或者屏幕上显示就需要转化为二维,这被称为投影(Map projection)。显而易见的是,从三维到二维的转化,必然会导致变形和失真,失真是不可避免的,但是不同投影下会有不同的失真

in short 考虑如何将坐标点实际渲染出来展示, 比如'墨卡托'某些区域对比(高纬度区域被严重放大), 反直觉的面积更大, 反而更小

墨卡托(Mercator)投影,是一种"等角正切圆柱投影”,由荷兰地图学家墨卡托(Gerhardus Mercator 1512-1594)在1569年拟定,假设地球被围在一中空的圆柱里,其标准纬线与圆柱相切接触,然后再假想地球中心有一盏灯,把球面上的图形投影到圆柱体上,再把圆柱体展开,这就是一幅选定标准纬线上的“墨卡托投影”绘制出的地图。

墨卡托投影没有角度变形,由每一点向各方向的长度比相等,它的经纬线都是平行直线,且相交成直角,经线间隔相等,纬线间隔从标准纬线向两极逐渐增大。墨卡托投影的地图上长度和面积变形明显,但标准纬线无变形,从标准纬线向两极变形逐渐增大,但因为它具有各个方向均等扩大的特性,保持了方向和相互位置关系的正确。

Web Mercator (EPSG:3857&EPSG:900913)

伪墨卡托投影还切掉了南北85.051129°纬度以上的地区,以保证整个投影是正方形的。因为墨卡托投影等正形性的特点,在不同层级的图层上物体的形状保持不变,一个正方形可以不断被划分为更多更小的正方形以显示更清晰的细节。很明显,伪墨卡托坐标系是非常显示数据,但是不适合存储数据的,通常我们使用WGS84 存储数据,使用伪墨卡托显示数据。

Web Mercator 最早是由 Google 提出的,当前已经成为 Web Map 的事实标准。但是也许是由于上面”伪“的原因,最初 Web Mercator 被拒绝分配EPSG 代码。于是大家普遍使用 EPSG:900913(Google的数字变形) 的非官方代码来代表它。
直到2008年,才被分配了 EPSG:3785 的代码,但在同一年没多久,又被弃用,重新分配了 EPSG:3857 的正式代码,使用至今。

UTM 投影 (EPSG:32633)

UTM 投影全称为“通用横轴墨卡托投影”,是一种“等角横轴割圆柱投影”,椭圆柱割地球于南纬80度、北纬84度两条等高圈,投影后两条相割的经线上没有变形,而中央经线上长度比0.9996。UTM投影是为了全球战争需要创建的,美国于1948年完成这种通用投影系统的计算。与高斯-克吕格投影相似,该投影角度没有变形,中央经线为直线,且为投影的对称轴,中央经线的比例因子取0.9996是为了保证离中央经线左右约330km处有两条不失真的标准经线。UTM投影分带方法与高斯-克吕格投影相似,是自西经180°起每隔经差6度自西向东分带,将地球划分为60个投影带。我国的卫星影像资料常采用UTM投影。

自建地图的坐标系? (直角坐标系)

在自建室内地图的情况下,通常会使用直角坐标系,因为室内地图往往涉及相对较小的区域,而直角坐标系可以更好地适应这种情况。对于直角坐标系,你可以选择一种合适的投影方式,以便在室内地图中能够准确地表示出距离和方向。

一种常见且适用于室内地图的投影方式是 局部直角坐标投影,也称为 UTM(通用横轴墨卡托投影)的缩小版。UTM 投影是为大范围地图设计的,但在局部区域中也可应用。在自建的室内地图中,你可以选择使用局部直角坐标投影来适应较小的区域。

以下是几种适合直角坐标系的投影方式:

  • UTM 投影(通用横轴墨卡托投影): UTM 投影将地球划分成一系列的投影带,每个带内使用缩小的墨卡托投影。这适用于小范围区域的地图制作,例如城市或地区地图。
  • State Plane 投影(州平面投影): 这是一组用于美国各州的投影方式,适用于较小的区域。每个州都有自己的投影参数,以便在该州内进行精确的地图制作。
  • 平面直角坐标投影: 这些是将地球的表面投影到平面上的直角坐标系,例如高斯-克吕格投影(Gauss-Krüger Projection)和 UTM 投影的特定带。
  • 局部直角投影: 这是一种自定义的投影方式,通常用于室内地图或小区域地图。它们根据特定的投影参数将地球的某个区域映射到平面上。

图层

图层 层级

TileMatrix 指的就是某个层级的所有瓦片;自然而然,TileMatrixSet 就是所有层级的 TileMatrix “集”, 举例,GeoServer 中的内置瓦片阵集有一个是 EPSG:4326,那么第 7 级瓦片阵即 EPSG:4326:7

在 GeoServer 中还有个类似的词是 Gridset,在 TileCaching - Gridsets 下可以找到.

图层 类型

矢量数据:
GeoJSON,KML,GML,shapefile,svg

GeoJSON的 强大之处在于它可以作为一种数据格式媒介,和其它几种数据格式进行相互转化,就例如上文提到的可以和数据库表格做转化,他也可以直接和shape格式的文件做转化. 非常方便. 而且它保存的数据是完整的,数据体积也很小. 对于多边形来讲,记录的就是每个顶点的坐标值.

栅栏数据:
即图片 tif, png, jpg..
图片格式的地图被封装成了叫做WMS的服务. 意思是web map service,网络地图服务

TIF中的元信息
WGS_1984_UTM_Zone_50N这个投影坐标系名字中的 
“WGS_1984”指出了其地理坐标系为“GCS_WGS_1984”;
“UTM_Zone_50N”指出了其投影(投影方法是“通用横轴墨卡托(Universal Transverse Mercator,UTM)”,投影带为北半球第50带)。

瓦片/切片:
image进行切片后的服务,叫做WMTS,全称 web map tile service 网络地图切片服务. WMTS比WMS 好的地方就是它能够加快加载速度,提升加载效率. 可是它同时也失去了灵活性,你看的每一个区域都是被提前划分好的,限制在固定条带内的.

参考知乎

SHP(shapefile)

SHP(shapefile)文件

ESRI Shapefile(shp), 或简称shapefile, 是美国环境系统研究所公司(ESRI)开发的一种空间数据开放格式; 实际上该种文件格式是由多个文件组成的; 其中, 要组成一个Shapefile, 有三个文件是必不可少的, 它们分别是".shp", ".shx"与 ".dbf"文件
.shp — 图形格式, 用于保存元素的几何实体;
.shx — 图形索引格式; 几何体位置索引, 记录每一个几何体在shp文件之中的位置, 能够加快向前或向后搜索一个几何体的效率;
.dbf — 属性数据格式, 以dBase IV的数据表格式存储每个几何形状的属性数据;

文件扩展名 描述
.shp 几何数据文件,包含点、线、多边形等空间要素的几何信息。
.shx 索引文件,提供对.shp文件中几何数据的快速访问。
.dbf 属性数据文件,以dBase IV格式存储每个要素的属性信息。
--可选--
.prj 投影文件,包含坐标系统和投影信息(可选)。
.sbn 空间索引文件,用于提高大型数据集的查询效率(可选)。
.sbx 空间索引文件,与.sbn配合使用(可选)。
.fbn 只读空间索引文件,适用于只读数据集(可选)。
.fbx 只读空间索引文件,与.fbn配合使用(可选)。
.ain 属性索引文件,用于提高基于属性的查询效率(可选)。
.aih 属性索引文件,与.ain配合使用(可选)。
.ixs 地理编码索引文件,用于提高可读写Shapefile的查询效率(可选)。
.mxs 地理编码索引文件,用于提高可读写Shapefile的查询效率(ODB格式,可选)。
.atx 属性索引文件,用于.dbf文件的字段查询优化(可选)。
.shp.xml 元数据文件,以XML格式存储Shapefile的元数据信息(可选)。

GeoJson

GeoJSON 是一种用于表示地理数据的开放标准格式,它以简单易懂的方式存储和交换地理空间信息. 以下是一些关于 GeoJSON 的说明:

  • 结构简洁:GeoJSON 使用了简单的 JSON(JavaScript Object Notation)格式,使得地理数据的存储和处理变得简单明了.
  • 支持多种几何类型:GeoJSON 支持多种常见的几何类型,如点(Point)、线(LineString)、多边形(Polygon)、多点(MultiPoint)、多线(MultiLineString)和多多边形(MultiPolygon)等.
  • 属性扩展性:GeoJSON 中的要素可以包含任意数量和类型的属性信息,这为地理数据的丰富描述提供了灵活性.
结构

type 要素类型

type: "Feature" 表示一个特征要素,"FeatureCollection" 表示为特征要素的集合
geometry: 存储该特征要素的实际形状描述
properties: 存储该要素的属性

{
  "type": "Feature",//单特征
  "geometry": {
    "type": "Point",
    "coordinates": [125.6, 10.1]
  },
  "properties": {
    "name": "Dinagat Islands"
  }
}
{
  "type": "FeatureCollection",//特征集合
  "features": []//features: 可以存在多个feature,并且feature的种类可以不同
}

geometry 几何类型

"geometry.type":
可能的值: "Point", "MultiPoint", "LineString","MultiLineString", "Polygon", "MultiPolygon" 等
说明: 指示地理要素的几何类型

"properties" 属性节点, 一个对象,包含键值对形式的属性信息

  • Point(点):代表一个单个的点,用经度和纬度坐标表示。
{
  "type": "Feature",
  "geometry": {
    "type": "Point",
    "coordinates": [100.0, 0.0]
  },
  "properties": {
    "name": "Sample Point"
  }
}

  • LineString(线):由多个连续的点组成的线。
{
  "type": "Feature",
  "geometry": {
    "type": "LineString",
    "coordinates": [
      [100.0, 0.0],
      [101.0, 1.0]
    ]
  },
  "properties": {
    "name": "Sample Line"
  }
}
  • Polygon(多边形):由闭合的线构成的区域。
{
  "type": "Feature",
  "geometry": {
    "type": "Polygon",
    "coordinates": [
      [
        [100.0, 0.0],
        [101.0, 0.0],
        [101.0, 1.0],
        [100.0, 1.0],
        [100.0, 0.0]
      ]
    ]
  },
  "properties": {
    "name": "Sample Polygon"
  }
}
  • MultiPoint(多点):包含多个点的集合。
  • MultiLineString(多线):包含多个线的集合。
  • MultiPolygon(多边形集合):包含多个多边形的集合。

GeoPackage(SQLite)

GeoPackage 规范 - https://www.geopackage.org/guidance/getting-started.html

GeoPackage 是由 OGC 制定的存储地理信息的开放数据格式,存储形式是独立于平台的 SQLite 数据库文件。GeoPackage 既可存储矢量要素数据,也可存储遥感影像金字塔、地图瓦片矩阵集等栅格瓦片数据。

目前 GeoPackage 标准格式的最新版本是1.0,详细介绍请参考 OGC 官网(www.opengeospatial.org),或:http://www.geopackage.org

GeoPackage 标准的中文版请参考 SuperMap 的开源项目:http://github.com/SuperMap/geopackage_cn。

GeoPackage 的存储形式是一个独立于平台的 SQLite 数据库文件,文件的扩展名为“.gpkg”。SQLite 具有自包含、单文件、跨平台、服务器无关等优势,因此基于 SQLite 存储,简化了 GeoPackage 文件的生产、分发与使用,同时确保了 GeoPackage 文件数据的完整性。

GIS 服务规范

[[N_GIS_GeoServer]]
http://support.supermap.com.cn/datawarehouse/webdochelp/iedge/api/OGC_intro.htm
webgis - 地理空间Web服务标准

在大型项目或国家级信息平台中经常涉及互操作。互操作就是让不同厂家的软件和数据能一起工作,而实现互操作的主要途径就是制定标准。Web服务的标准实质上就是规定请求和响应的具体格式,例如,请求中包含哪几个参数,每个参数是什么类型,响应的返回信息中包含什么结果等。OGC 定义的 Web 地图服务标准,包括WMS、WMTS、WFS、WCS、WPS、CSW以及与Web服务相关的标准,以及 KML和GeoRSS。

WMS(Web Map Service)

WMS是一种用于动态生成地图图像的网络服务. 它接收客户端请求,并根据请求参数生成地图图像,然后将图像返回给客户端. WMS的优点是可以实时生成地图,因此可以提供实时更新的地理数据. 然而,由于每次请求都要生成地图图像,对于大规模数据和频繁请求的情况,性能可能会受到限制.

WMS 是一种动态地图服务,它在每次请求时动态生成地图图像。这意味着当客户端请求地图时,WMS 服务器将根据请求参数(如比例尺、图层、样式等)实时渲染地图图像。
WMS 的主要特点包括:

  • 动态渲染:根据请求参数生成地图图像。
  • 灵活性:可以支持用户定制的地图样式和图层组合。
  • 延迟较高:由于每次请求都需要渲染,响应速度可能较慢,尤其是在高并发场景下。
  • 不支持缓存:由于地图是动态生成的,所以不能很好地利用缓存机制。

in short 动态生成瓦片, 可以做到约 WMS = WFS+WMTS

常用参数

参数名称 描述 必需
SERVICE 指定服务类型,对于 WMS 请求,该值为 "WMS"
VERSION 指定 WMS 的版本,例如 "1.1.1" 或 "1.3.0"
REQUEST 指定请求类型。
- GetCapabilities:获取服务的元数据。
- GetTile:获取瓦块。
- GetFeaturelnfo:可选,获取点选的要素信息。
LAYERS 指定要请求的图层名称,多个图层用逗号分隔
STYLES 指定图层的样式,多个样式用逗号分隔
CRS 指定请求的坐标参考系统(CRS),例如 "EPSG:4326"
BBOX 指定请求的边界框,用于限制地图显示范围
WIDTH 指定请求的地图图像宽度
HEIGHT 指定请求的地图图像高度
FORMAT 指定输出图像的格式,例如 "image/png", "image/jpeg"
BGCOLOR 指定地图背景颜色,格式为 "#RRGGBB" 或 "#RRGGBBAA"
TRANSPARENT 指定是否输出透明背景,值为 "true" 或 "false"
EXCEPTIONS 指定错误处理格式,例如 "application/vnd.ogc.se_xml"
TIME 指定请求的时间范围,用于请求特定时间段的地图数据
ELEVATION 指定请求的高程范围,用于请求特定高程的地图数据

CQL_FILTER 过滤瓦片

CQL_FILTER 是一种用于在OGC Web服务(如WMS和WFS)请求中使用的高级过滤表达式。CQL(Common Query Language)是一种由OGC定义的查询语言,它允许用户通过属性值来过滤要素。

在 geoserver 预览图层, 可以使用 toggle options bar 打开CQL输入框测试

  • 简单的属性等于条件
CQL_FILTER=attribute_name='value'
http://192.168.20.130:8080/geoserver/sny/wms?SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&FORMAT=image%2Fpng&TRANSPARENT=true&STYLES&LAYERS=sny%3Asp_test_dtlx_all&exceptions=application%2Fvnd.ogc.se_inimage&SRS=EPSG%3A4326&WIDTH=768&HEIGHT=384&BBOX=114.2121934890747%2C22.62381076812744%2C114.2451524734497%2C22.64029026031494&CQL_FILTER=DLMC=%27%E4%B9%94%E6%9C%A8%E6%9E%97%E5%9C%B0%27

CQL_FILTER=DLMC='乔木林地' 只要属性 DLMC 等于 乔木林地的要素

  • 组合条件
CQL_FILTER=attribute_name='value' AND other_attribute='other_value'
  • in条件
CQL_FILTER=name IN ('北京','上海','广州')
  • 模糊匹配
CQL_FILTER=attribute_name LIKE '%text%'
  • 空间条件
CQL_FILTER=WITHIN(geom, POINT(123.456 789.012))

根据 用户视图 查询要素 (GetFeatureInfo 请求)

GetFeatureInfo 操作

GetFeatureInfo 操作请求主要参数

请求参数 必需 描述
VERSION=version 请求版本号。
REQUEST=GetFeatureInfo 请求名称。
请求 GetFeatureInfo 操作,请求名称需要设为“GetFeatureInfo”。
LAYERS=layer_list 地图图层列表,地图图层之间以半角英文逗号进行分隔。最左边的图层在最底,下一个图层放到前一个的上面,依次类推。
图层名称必须是 GetCapabilities 操作返回的文档中声明的 Name 元素的值。
(不能请求只有 Title 而没有 Name 属性的 Layer)。如果客户端请求了没有 Name 属性的图层或者不存在的图层,服务器返回一个 Code 为 LayerNotDefined 的异常信息。
BBOX=minx,miny,maxx,maxy Bounding box(地图范围),该参数的值为半角英文逗号分隔的一串实数,形如“minx,miny,maxx,maxy”,分别代表指定 SRS 下的区域坐标最小 X、最小 Y、最大 X、最大 Y。
WIDTH=output_width 地图图片的像素宽度。
HEIGHT=output_height 地图图片的像素高度。
QUERY_LAYERS=layer_list 待查询的图层列表,图层之间以逗号分隔。
INFO_FORMAT=output_format 要素信息的返回格式(MIME 类型)。
可以为 application/vnd.ogc.wms_xml , application/geojson , text/xml , text/html。
FEATURE_COUNT=number 要返回信息的要素的数量(默认为1)。
以(X, Y)为中心点,根据 GetMap 操作中的请求参数 BBOX,Width 和 Height 确定初始查找范围半径,对指定的查询图层进行查找。
如果查询返回结果小于用户指定的 number 值,将查找半径扩大一倍继续查找,如果查询结果数目满足用户要求返回的要素数目,返回结果,否则继续扩大半径。当查找半径达到初始搜索半径的8倍时,终止查询,返回查询结果,进入下一图层的查询。
图层的查询顺序与待查询图层列表中的顺序一致。
X=pixel_column 地图渲染图像上的X和Y坐标(客户端坐标)
Y=pixel_row 地图渲染图像上的X和Y坐标(客户端坐标)
EXCEPTIONS=exception_format WMS 的异常错误报告格式(默认为 application/vnd.ogc.se_xml)。
X 和 Y, WIDTH 和 HEIGHT, BBOX 参数
  1. X 和 Y 参数
  • XY 参数用于指定用户在地图上的点击位置的像素坐标。这些坐标是相对于当前地图视图的左上角来定义的。
  • X 表示用户点击的横向位置(即在视图中的列数),从左到右增加。
  • Y 表示用户点击的纵向位置(即在视图中的行数),从上到下增加。
  1. WIDTH 和 HEIGHT 参数
  • WIDTHHEIGHT 参数用于定义当前地图视图的像素宽度和高度。
  • WIDTH 表示当前地图视图的总宽度,以像素为单位。
  • HEIGHT 表示当前地图视图的总高度,以像素为单位。
  • 这些参数与 XY 配合使用,以确定用户点击的位置相对于整个地图视图的比例。
  1. BBOX 参数
  • BBOX(Bounding Box)参数定义了当前地图视图的四个边界的地理坐标。

GetFeatureInfo 是为了在用户点击地图时获取特定位置的属性信息。这个操作是基于像素坐标的,因为它需要知道用户在地图视图中的点击位置。

GET 
http://192.168.20.130:8080/geoserver/sny/wms?SERVICE=WMS&VERSION=1.1.1&REQUEST=GetFeatureInfo&FORMAT=image%2Fpng&TRANSPARENT=true&QUERY_LAYERS=sny%3Asp_test_dtlx_all&STYLES&LAYERS=sny%3Asp_test_dtlx_all&exceptions=application%2Fvnd.ogc.se_inimage&INFO_FORMAT=application%2Fjson&FEATURE_COUNT=50&X=50&Y=50&SRS=EPSG%3A4326&WIDTH=101&HEIGHT=101&BBOX=113.97629052400589%2C22.666970193386078%2C113.9768323302269%2C22.667511999607086

WMTS(Web Map Tile Service)

WMTS是一种基于切片(Tile)的地图服务. 地图被分成小块切片,并按需传输给客户端. 客户端可以根据需要请求特定的切片,这些切片在服务器上预先生成并存储. WMTS的优点是可以提供较高的性能和响应速度,因为切片已经提前生成并缓存,只需传输所需的切片. 然而,对于需要实时更新的数据,WMTS可能不适用,因为切片需要提前生成.

in short 提前生成瓦片地图, 本质上就是图片数据了, 可以被CDN

常用参数

参数名称 描述 是否必需
SERVICE 指定服务类型,对于 WMTS 请求,该值为 "WMTS"
VERSION 指定 WMTS 的版本,例如 "1.0.0"
REQUEST 指定请求类型,例如 "GetCapabilities", "GetTile"
LAYER 指定要请求的图层名称
STYLE 指定图层的样式名称
TILEMATRIXSET 指定瓦片矩阵集的标识符
TILEMATRIX 指定瓦片矩阵的标识符,与缩放级别相关
TILECOL 指定瓦片的列索引
TILEROW 指定瓦片的行索引
FORMAT 指定输出瓦片的格式,例如 "image/png", "image/jpeg"
WIDTH 指定请求的瓦片宽度(像素)
HEIGHT 指定请求的瓦片高度(像素)
BGCOLOR 指定瓦片背景颜色,格式为 "#RRGGBB" 或 "#RRGGBBAA"
TRANSPARENT 指定是否输出透明背景,值为 "true" 或 "false"
EXCEPTIONS 指定错误处理格式,例如 "application/vnd.ogc.se_xml"
STYLE 指定图层的样式名称
DIM_TIME 指定请求的时间范围,用于请求特定时间段的地图数据
DIM_ELEVATION 指定请求的高程范围,用于请求特定高程的地图数据

TMS(Tile Map Service)

TMS 是类似于WMTS的切片地图服务,但其切片命名和组织方式略有不同. TMS使用行列号来标识切片,而WMTS使用具有唯一标识符的URL. 在实际应用中,TMS和WMTS之间的差异通常不大 TMS服务不是OGC提出的,但也被广大用户所使用

WCS - Web Coverage Service

WCS是OGC 制定的一种发布栅格地理数据的Web服务规范,它所返回的栅格数据是原始数据(raw data),如数字高程中地面的高程值和卫星影像中的光谱值等WCS与WMS不同,因为WMS所返回的是经过视觉化处理的、已经失去原始值的图片。WCS与WFS的不同还在于WFS是针对矢量数据的,而WCS是针对栅格数据的。WCS规范规定了以下操作(OGC,2006b):

  • GetCapabilities:返回该服务的元数据。
  • DescribeCoverage:返回该服务中栅格数据层的详细描述信息, 如时间信息、覆盖范围、坐标体系和所支持的输出格式等。
  • GetCoverage:服务器根据允许客户端所指定的数据层、时空范围、坐标体系、输出格式、内插方式以及对数据进行切割转换等操作, 返回GeoTIFF、HDF-EOS或NIT等格式的数据。

美国国家冰雪数据中心(NSIDC)提供极地冰冻圈的WCS服务,用户可以获取有关结冰区域的数据,包括每月海洋结冰和集中区、积雪覆盖范围及雪水等深线等信息,以支持有关极地冰冠融化和气候变化的研究(Maurer,2007)。

常用参数

参数名称 描述 是否必需
SERVICE 指定服务类型,对于 WCS 请求,该值为 "WCS"
VERSION 指定 WCS 的版本,例如 "1.1.1" 或 "2.0.0"
REQUEST 指定请求类型,例如 "GetCapabilities", "GetCoverage" 等
COVERAGEID 指定要查询的覆盖数据集的标识符
BBOX 指定一个边界框,用于限制返回的覆盖数据范围
SRSNAME 指定请求使用的坐标参考系统(CRS)
FORMAT 指定输出数据的格式,例如 "image/tiff", "application/netcdf"
RESOLUTION 指定请求的分辨率,用于缩小或放大覆盖数据
RANGE 指定请求的值域,用于限制返回的覆盖数据属性值范围
SUBSET 指定请求的子集,用于限制返回的覆盖数据部分
PARAMETER 指定覆盖数据处理的参数,例如压缩选项或其他处理参数
EXP_PARM 指定额外的扩展参数

WFS - Web Feature Service

GeoServer WFS
GeoServer filter_reference
GeoServer CQL
supper map WFS GetFeature, FILTER

Web Feature Service (WFS) 是一种基于 Web 的地理信息查询和传输服务,由开放地理空间联盟(Open Geospatial Consortium, OGC)制定。

包括检索、插入、更新和删除等Web服务规范(OGC ,2005)。WFS定义了以下主要操作。

  • GetCapabilities:获取服务的兀数据。

  • DescribeFeatureType:获取WFS支持的要素类型的结构。

  • GetFeature:获取与一个查询条件相匹配的地理要素及其属性。

  • LockFeature:请求服务器在一项事务期间锁定一个或多个地理要素。

  • Transaction:请求服务器创建、更新或删除地理要素。
    以上操作有必选的,也有可选的。根据所支持的操作,WFS主要可以分为以下两类。

  • 基本型 WFS(Basic WFS):只支持 GetCapabilities、DescribeFeatureType 和GetFeature操作, 只能进行要素的查询和读取,所以又称为只读型WFS。

  • 事务型WTFS(TransactionWFS或WFS-T):除了基本WFS所支持的操作外,还支持transaction操作。 它不仅能支持地理要素的读取,还支持地理要素的在线编辑和处理,也被称为读写型WFS。

在WFS请求和响应中,地理要素的信息传输主要是采用GML格式。2006年,OGC通过了GML简单要素专用标准(GML Simple Features Profile),以加快WFS请求和响应的速度,简化WFS的实施难度。WFS不仅可以用于制图和查询,而且可以用于地理数据的切割、投影转换和在线下载。例如,美国国家气象局气象研究实验室提供一个国家数字天气预报数据库(NDFD) WFS服务。这个服务允许公众、政府机构和企事业单位获取气温、露点、风、降水概率和降水量等数据。

in short 存储的是矢量'要素'数据, 可以编辑, 允许用户检索单一要素等

查询图层属性

在 GeoServer 的 'Layer Preview' > 'All Formats' 可以选择 WFC > GeoJSON 查看一下图层有哪些属性

POST http://localhost:5566/geoserver/topp/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=topp%3Astates&maxFeatures=50&outputFormat=application%2Fjson

> 这个请求,查询的是此图层的全量数据(返回要素数量受maxFeatures参数限制)

常用参数 V1.0

VERSION=version 请求版本号。

默认为“1.0.0”。
SERVICE=WFS 服务类型。

默认为“WFS”。
REQUEST=GetFeature|GetFeatureWithLock 请求名称。

请求 GetFeature 操作,请求名称需要设为“GetFeature”或者“GetFeatureWithLock”。

GetFeatureWithLock 跟 GetFeature 相似,只是如果使用 GetFeatureWithLock,则会对被选择的要素上锁,比如在修改要素时。
PROPERTYNAME=property_list 特性列表。
用来列举查询中被选择的要素特性。
参数列表规则参考 请求参数规则。“*”字符能够表示所有被检索的特性。在每一个 FEATUREID 或 TYPENAME 列表和 PROPERTYNAME 列表形成1:1的映射。缺省值表示所有特性都可以获得。
当 WFS 服务遇到没有选择要素的全部必要特性的查询时,WFS 将会在内部扩大特性列表以保证其包含所有必要特性名,所以,一个 WFS 客户端获取的特性值可能比请求的要多。
如果没有指定特性名称,要素的所有特性将返回。
FEATUREVERSION=ALL|N 要素版本。
如果支持要素版本,“All”表示获取一个要素的所有版本。整数值“N”表示获取一个要素的第 N 个版本。没有值,表示提取最近的要素版本信息。
版本号从1开始,1是最老的版本,如果版本值大于指定的最大版本号,那么将返回最新的版本。查询默认的操作时返回最新的版本。
不支持分版本的系统可以忽略此参数,并返回它所拥有的唯一版本。
目前 SuperMap iServer 不支持该参数。
MAXFEATURES=N 最大要素个数。
MAXFEATURES 参数值设置为一个正整数,用来表示 WFS 对请求响应的最大要素个数。如果没有设置该参数的值,将默认最多返回2000个要素,此默认值可以在 WFS 接口中设置,详见WFS_服务接口
TYPENAME=type_list 要素类型列表。
参数列表规则参考 请求参数规则
如果已经指定了 FEATUREID 参数,则 TYPENAME 可选。
FEATUREID=feature_id 要素标识符。
通过要素标识符来获取要素枚举列表。
该参数与 FILTER 和 BBOX 参数相斥。
FILTER=filter 过滤器。
Filter 参数用来设置查询限制条件。空间的或非空间的限制条件都可以进行设置。
该参数的设置遵照过滤器编码规范。
如果使用过滤器参数,对于每一个在 TYPENAME 参数列表中的要素类型必须规定过滤器。单个以过滤器参数编码的过滤器以英文圆括号表示,“(”和“)”
使用该参数必须要 TYPENAME 参数。
该参数与 FEATUREID 和 BBOX 参数相斥。
目前支持的操作有 DWithin、Beyond、Contains、Crosses、Disjoint、Intersects、Distance 等,请参见 FilterType。目前不支持 FeatureId、Function、Geometry。
请参见FILTER 示例
BBOX=minx,miny,maxx,maxy 边界框。
在 FEATUREID 或者 FILTER 环境下,客户端可以指定边界框。
使用该参数必须要 TYPENAME 参数。
该参数与 FEATUREID 和 FILTER 参数相斥。
请参见 边界框
OUTPUTFORMAT=outputformat 结果集输出格式。
默认为“GML2”。
其他格式(包括非 XML 和二进制的格式)也可以支持,只要在 Capabilities 文档中进行声明即可。
目前 SuperMap iServer 发布的 WFS 服务支持默认的 GML2 格式和 json 格式。

常用参数 V2.0

http://support.supermap.com.cn/datawarehouse/webdochelp/iedge/api/WFS/WFS200/GetFeature/GetFeature_Request.htm

VERSION 请求版本号。
请求 WFS 2.0.0 服务,请求版本号需要设为"2.0.0"。
SERVICE 服务类型。
请求 WFS 2.0.0 服务,服务类型需要设为"WFS"。
REQUEST 请求名称。
请求 GetFeature 操作,请求名称需要设为"GetFeature"。
NAMESPACES 命名空间。
用于指定命名空间和其前缀,形式为 xmlns(前缀为 escaped_url)。如果前缀没有被定义,则默认的命名空间应该被声明。可以通过英文逗号将 xmlns()值的多个命名空间连接起来。
VSPs 提供者特定参数。
GetFeature 请求中允许可选的服务提供者特定参数(vendor-specific parameters,VSPs),这些参数由供应商指定,不属于国际标准的 KVP 参数。这些参数的使用增强了请求的响应结果。VSPs 丢失或错误时,服务可以提供一个默认值。VSPs 在不被服务所知道的情况下被应用时,服务可以选择忽略不知道的请求参数。
WFS 可以选择不声明部分或全部 VSPs。如果 VSPs 包含在 Capabilities XML 中,则 ExtendedCapabilities 元素应该进行相应扩展。包含了 ExtendedCapabilities 扩展元素的其他 Schema 文档可以被引入到 Capabilities XML 文档中。客户端可以从 Capabilities Schema 中读取服务提供者特定的定义,并且使用 VSPs 构成请求。WFS 实现者在为 VSP 选择名字时应该注意,不要与国际标准中定义的 WFS 参数产生冲突。
目前 SuperMap iServer 不支持该参数。
STARTINDEX 开始索引号。
指定结果集在响应文档中开始呈现的索引号。
COUNT 返回数量。
指定返回结果中包含的要素数量。
OUTPUTFORMAT 响应结果编码格式。
限定执行 GetFeature 操作后,响应结果资源的编码格式,默认值为"application/gml+xml; version=3.2"。这个默认值表明文档中列出的响应资源应该使用 GML3.2 编码。  此外,iServer 还支持了以 json 格式输出。
RESULTTYPE 返回类型。
WFS 2.0.0 服务的 GetFeature 操作支持两种格式(响应异常除外)。既可以返回一个完整响应文档,文档中包含满足该请求的资源;也可以返回一个空响应文档,用于指示该操作可以返回的资源总数。最终返回的文档类型由 RESULTTYPE 参数决定。RESULTTYPE 参数的值可以为"results"和"hits",默认值为"results"。"results"表示返回满足操作请求的完整响应文档,"hits"表示返回一个没有资源实例的空响应文档。
RESOLVE 资源引用。
RESOLVE 参数表示选择的(例如本地或远程资源)资源引用,值可以为 local、remote、all 或 none。WFS 2.0.0 服务的 RESOLVE 参数支持的值在 capabilties XML 文档中进行了声明。
目前 SuperMap iServer 不支持该参数。
RESOLVEDEPTH 资源嵌套深度。
RESOLVEDEPTH 参数决定了响应文档中资源嵌套的深度,该参数的有效值范围由非负整数加“*”构成。如果未指定 RESOLVE 参数的值或是值设为 none,服务器会忽略 RESOLVEDEPTH 参数中指定的任何值。
目前 SuperMap iServer 不支持该参数。
RESOLVETIMEOUT 资源解析时间。
RESOLVETIMEOUT 参数决定了服务器从解析资源引用开始,到服务器接收到响应时所需等待的时间。如果 RESOLVE 参数值设为 none,RESOLVETIMEOUT 参数值无效。
目前 SuperMap iServer 不支持该参数。
Adhoc Query Keywords - Adhoc Query Keywords 中特定参数,详见表2
Adhoc Query Keywords 与 Stored Query Keywords 互斥。
Stored Query Keywords - Stored Query Keywords 中特定参数,详见表4
Stored Query Keywords 与 Adhoc Query Keywords 互斥。

根据 经纬度 查询要素 (GetFeature 请求)

http://support.supermap.com.cn/datawarehouse/webdochelp/iedge/api/WFS/WFS100/GetFeature/GetFeature_Request.htm

就是 Intersects (交集查询) 点交集面

var filter = `<Filter xmlns="http://www.opengis.net/ogc" xmlns:gml="http://www.opengis.net/gml">
    <Intersects>
        <PropertyName>the_geom</PropertyName>
        <gml:Point srsName="EPSG:4326">
            <gml:coordinates>114.180059,22.619324</gml:coordinates>
        </gml:Point>
    </Intersects>
</Filter>`
var typeName = `sny:sp_test_dtlx_all`

GET 'http://192.168.50.191:8080/geoserver/wfs?service=WFS&version=1.0.0&request=GetFeature&outputFormat=application/json&typeName='+typeName+'&filter='+filter
FILTER 示例

http://support.supermap.com.cn/datawarehouse/webdochelp/iedge/api/WFS/WFS100/GetFeature/FILTER.htm

  • PropertyIsBetween
    在 World:Capitals 获取 SMID 大于8小于10的 Feature,请求为:
http://localhost:8090/iserver/services/data-World/wfs100?SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=World:Capitals
&PROPERTYNAME=(SMY,SMX,SMUSERID,SMLIBTILEID,SMID,SMGEOMETRYSIZE,COUNTRY,CAP_POP,CAPITAL,the_geom)
&Filter= (<Filter><ogc:PropertyIsBetween xmlns:ogc="http://www.opengis.net/ogc"><ogc:PropertyName>SMID</ogc:PropertyName><ogc:LowerBoundary><ogc:Literal>8</ogc:Literal></ogc:LowerBoundary><ogc:UpperBoundary><ogc:Literal>10</ogc:Literal></ogc:UpperBoundary></ogc:PropertyIsBetween></Filter>)
  • PropertyIsEqualTo
    GET 请求,在 World:Capitals 获取 SMID 等于10的 Feature,请求为:
http://localhost:8090/iserver/services/data-World/wfs100?SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=World:Capitals&PROPERTYNAME=(SMY,SMX,SMUSERID,SMLIBTILEID,SMID,SMGEOMETRYSIZE,COUNTRY,CAP_POP,CAPITAL,the_geom)&Filter= (<Filter>
<ogc:PropertyIsEqualTo xmlns:ogc="http://www.opengis.net/ogc"><ogc:PropertyName>SMID</ogc:PropertyName>
<ogc:Literal>10</ogc:Literal></ogc:PropertyIsEqualTo></Filter>)
  • BBOX
    GET 请求,在 World:Capitals 获取在指定边界框内部的 Feature,请求为:
http://localhost:8090/iserver/services/data-World/wfs100?SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=World:Capitals&PROPERTYNAME=(SMY,SMX,SMUSERID,SMLIBTILEID,SMID,SMGEOMETRYSIZE,COUNTRY,CAP_POP,CAPITAL,the_geom)&Filter= (<Filter xmlns:gml="http://www.opengis.net/gml">

<ogc:BBOX xmlns:ogc="http://www.opengis.net/ogc"> <ogc:PropertyName>the_geom</ogc:PropertyName><gml:Box srsName="http://www.opengis.net/gml/srs/epsg.xml#4326"><gml:coordinates>-160,-80 -160,-30 0,-30 0,-80 -160,-80</gml:coordinates></gml:Box></ogc:BBOX></Filter>)
  • Equals
    GET 请求,在 World:Capital 获取与指定点对象重合的 Feature,请求体为:
http://localhost:8090/iserver/services/data-World/wfs100?SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=World:Capitals&PROPERTYNAME=(SMY,SMX,SMUSERID,SMLIBTILEID,SMID,SMGEOMETRYSIZE,COUNTRY,CAP_POP,CAPITAL,the_geom)&Filter= (<Filter xmlns:gml="http://www.opengis.net/gml">
<ogc:Equals xmlns:ogc="http://www.opengis.net/ogc"> <ogc:PropertyName>the_geom</ogc:PropertyName><gml:Point> <gml:coordinates>45.34414232844949,2.0411730219592243</gml:coordinates> </gml:Point></ogc:Equals></Filter>)
  • Intersects (交集)
    GET 请求,在 World:Continent_Label 获取与指定面对象相交的线 Feature,请求体为:
http://localhost:8090/iserver/services/data-World/wfs100?SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=World:Continent_Label&PROPERTYNAME=(SMID,SMUSERID,SMLENGTH,SMTOPOERROR,SMGEOMETRY,CONTINENT,ID)&Filter= (
<Filter xmlns:gml="http://www.opengis.net/gml">

<ogc:Intersects xmlns:ogc="http://www.opengis.net/ogc">
<ogc:PropertyName>SMGEOMETRY</ogc:PropertyName><gml:MultiPolygon><gml:polygonMember><gml:Polygon><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>-51,30 -51,80 -21,80 -21,30 -51,30</gml:coordinates></gml:LinearRing>
</gml:outerBoundaryIs></gml:Polygon></gml:polygonMember></gml:MultiPolygon>
</ogc:Intersects>
</Filter>)
  • and or (多条件)

https://docs.geoserver.org/2.25.x/en/user/filter/filter_reference.html#filter-expression

http://192.168.50.191:8080/geoserver/wfs?service=WFS&outputFormat=application/json&version=1.0.0&request=GetFeature&typeName=sny:sp_test_dtlx_all&filter=
<And>
   <PropertyIsEqualTo>
      <PropertyName>FX_DLMC1</PropertyName>
      <Literal>林地</Literal>
   </PropertyIsEqualTo>
   <Intersects>
      <PropertyName>the_geom</PropertyName>
      <Literal>
         <gml:Point>
              <gml:coordinates>113.95646068720805,22.78628928057321</gml:coordinates>
         </gml:Point>
      </Literal>
   </Intersects>
</And>

关于 PropertyName参数

在 WFS 查询中,几何数据是通过几何字段(例如 geomthe_geom 或者 geometry)来表示的,它代表要素的空间信息(如点、线、面)。
虽然 Shapefile 中几何数据不在属性字段中,但 WFS 服务会将几何字段作为一种属性,

  • 你可以通过 DescribeFeatureType 请求来确定几何字段的名称。
  • 或者在GeoServer 中 Publish 图层时 Feature Type Details 可以看到所有字段。

DescribeFeatureType 查询

http://192.168.50.191:8080/geoserver/ows?service=WFS&version=1.0.0&request=DescribeFeatureType&typeName=sny:sp_test_dtlx_all
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:gml="http://www.opengis.net/gml" xmlns:sny="sny" xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="sny">
  <xsd:import namespace="http://www.opengis.net/gml" schemaLocation="http://192.168.50.191:8080/geoserver/schemas/gml/2.1.2/feature.xsd"/>
  <xsd:complexType name="sp_test_dtlx_allType">
    <xsd:complexContent>
      <xsd:extension base="gml:AbstractFeatureType">
        <xsd:sequence>
          <xsd:element maxOccurs="1" minOccurs="0" name="the_geom" nillable="true" type="gml:MultiPolygonPropertyType"/> //几何参数
          <xsd:element maxOccurs="1" minOccurs="0" name="OBJECTID" nillable="true" type="xsd:long"/>
          <xsd:element maxOccurs="1" minOccurs="0" name="BSM" nillable="true" type="xsd:string"/>
          <xsd:element maxOccurs="1" minOccurs="0" name="DLBM" nillable="true" type="xsd:string"/>
          <xsd:element maxOccurs="1" minOccurs="0" name="DLMC" nillable="true" type="xsd:string"/>
          ...........
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:element name="sp_test_dtlx_all" substitutionGroup="gml:_Feature" type="sny:sp_test_dtlx_allType"/>
</xsd:schema>

SLD - Styled Layer Descriptor

SLD是风格化图层描述器(Styled Layer Descriptor)的简称,是2005年OGC提出的一个标准,这个标准在一定条件下允许WMS服务器对地图可视化的表现形式进行扩展。

QGIS 生成SLD

https://docs.geoserver.org/latest/en/user/styling/qgis/index.html

  1. Double click the layer to open the Properties dialog and switch to the Symbology page.
  2. Choose a Graduated rendering, on the PERSONS column, and click on Classify button to generate 1.5 standard deviations, select the spectral color ramp, switch mode to Quantile and finally and click on the Classify button to generate a 5 classes map, as shown in figure.
  3. Switch to the Labels page, choose Single labels, label with the STATE NAME` attribute and choose your preferred text rendering options, as shown in figure
  4. Go back At the Properties dialog, from the bottom of the Styles page, choose Style ‣ Save Style.
  5. Choose export in the SLD format, placing the file in the desired location.
  6. Go in GeoServer, create a new style, use the Upload a new style dialog to choose the exported file, and click on upload link.

An Example

根据图层属性 'DLMC': 等于 '乔木林地' 为绿色, 等于'水库水面' 为蓝色;

<?xml version="1.0" encoding="UTF-8"?>
<StyledLayerDescriptor version="1.0.0" xsi:schemaLocation="http://www.opengis.net/sld StyledLayerDescriptor.xsd"
    xmlns="http://www.opengis.net/sld"
    xmlns:ogc="http://www.opengis.net/ogc"
    xmlns:xlink="http://www.w3.org/1999/xlink"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <NamedLayer>
        <Name>LandCoverLayer</Name>
        <UserStyle>
            <FeatureTypeStyle>
                <Rule>
                    <Name>TreeForest</Name>
                    <Title>乔木林地</Title>
                    <ogc:Filter>
                        <ogc:PropertyIsEqualTo>
                            <ogc:PropertyName>DLMC</ogc:PropertyName>
                            <ogc:Literal>乔木林地</ogc:Literal>
                        </ogc:PropertyIsEqualTo>
                    </ogc:Filter>
                    <PolygonSymbolizer>
                        <Fill>
                            <CssParameter name="fill">#006400</CssParameter>
                        </Fill>
                    </PolygonSymbolizer>
                </Rule>
                <Rule>
                    <Name>ReservoirWater</Name>
                    <Title>水库水面</Title>
                    <ogc:Filter>
                        <ogc:PropertyIsEqualTo>
                            <ogc:PropertyName>DLMC</ogc:PropertyName>
                            <ogc:Literal>水库水面</ogc:Literal>
                        </ogc:PropertyIsEqualTo>
                    </ogc:Filter>
                    <PolygonSymbolizer>
                        <Fill>
                            <CssParameter name="fill">#0000FF</CssParameter>
                        </Fill>
                    </PolygonSymbolizer>
                </Rule>
            </FeatureTypeStyle>
        </UserStyle>
    </NamedLayer>
</StyledLayerDescriptor>

3D Tiles

https://zhuanlan.zhihu.com/p/350265716

3D Tiles 是在glTF的基础上,加入了分层LOD的概念(可以把3D Tiles简单地理解为带有 LOD 的 glTF ),专门为流式传输和渲染海量 3D 地理空间数据而设计的,例如倾斜摄影、3D 建筑、BIM/CAD、实例化要素集和点云。它定义了一种数据分层结构和一组切片格式,用于渲染数据内容。3D Tiles 没有为数据的可视化定义明确的规则,客户可以按照自己合适的方式来可视化 3D 空间数据。

同时,3D Tiles 也是 OGC 标准规范成员之一,可用于在台式机、Web端和移动应用程序中实现与海量异构3D地理空间数据的共享、可视化、融合以及交互功能。

在 3D Tiles 中,一个瓦片集(Tileset)是由一组瓦片(Tile)按照空间数据结构(树状结构)组织而成的,它至少包含一个用于描述瓦片集的 JSON 文件(包含瓦片集的元数据和瓦片对象),其中每一个瓦片对象可以引用下面的其中一种格式,用于渲染瓦片内容:

  1. ​Batched 3D Model (b3dm)​​: 用于异构三维模型,如带纹理的建筑物或地形。
  2. ​Instanced 3D Model (i3dm)​​: 用于实例化模型,比如重复的树木、路灯等。
  3. ​Point Cloud (pnts)​​: 用于点云数据。
  4. ​Composite (cmpt)​​: 用于将多个不同格式的瓦片组合成一个瓦片。
  5. ​Vector Data (vctr)​​: 规范中尚未正式定义,但未来可能支持矢量数据。
  6. ​GlTF (glTF)​​: 实际上,b3dm和i3dm内部都使用glTF作为模型格式,但直接使用glTF作为瓦片内容的情况在规范中并不常见。

b3dm 和 i3dm 格式是基于 glTF(一种专为高效传输 3D 内容而设计的开放性规范)构建的,它们的瓦片内容在二进制体中嵌入了 glTF 资源,包含模型的几何和纹理信息,而 pnts 格式却没有嵌入 glTF 资源。

tileset.json 格式

https://github.com/CHENJIAMIAN/Blog/blob/master/Cesium-3DTiles 1.1 格式规范.md

一个简单的3D Tiles数据示例说起。下面代码为一个3D Tiles的主瓦片集JSON 文件(tileset.json)的一部分,也是调用3D Tiles 数据的入口文件。为了尽可能少占篇幅,children部分已省略

{
  "asset" : {
    "version": "1.0",
    "tilesetVersion": "e575c6f1-a45b-420a-b172-6449fa6e0a59",
  },
  "properties": {
    "Height": {
      "minimum": 1,
      "maximum": 241.6
    }
  },
  "geometricError": 494.50961650991815,
  "root": {
    "boundingVolume": {
      "region": [
        -0.0005682966577418737,
        0.8987233516605286,
        0.00011646582098558159,
        0.8990603398325034,
        0,
        241.6
      ]
    },
    "geometricError": 268.37878244706053,
    "refine": "ADD",
    "content": {
      "uri": "0/0/0.b3dm",
      "boundingVolume": {
        "region": [
          -0.0004001690908972599,
          0.8988700116775743,
          0.00010096729722787196,
          0.8989625664878067,
          0,
          241.6
        ]
      }
    },
    "children": [..]
  }
}

上面代码中 root 下面的内容,就是一个Tile,即一个瓦片。

Pasted image 20250724110432

posted @ 2026-03-21 17:37  daidaidaiyu  阅读(0)  评论(0)    收藏  举报