I3S标准
OGC新的国际三维标准
概述
为了进一步拓展对3D内容的支持,开放地理空间联盟(OGC)宣布Esri发起的I3S标准规范将作为OGC新的国际三维标准。
该标准包括I3S规范,全称为OGC Indexed 3D Scene Layer ,以及基于该规范的三维数据格式规范SceneLayer Package(SLPK),专注于在互联网或离线环境中提供高性能三维可视化和空间分析。标准采用知识共享署名-非商业性使用-相同方式共享 4.0 (CC BY-NC-SA 4.0)国际许可协议进行许可。目前,已经率先被Esri的ArcGIS、Bentley的ContextCapture、Skyline的PhotoMesh等产品支持。
Indexed 3D Scene Layer (I3S) 和Scene Layer Package(*.slpk)早前由Esri以及众多支持机构提交到OGC标准流程中,希望供有3D可视化需求的人群使用。之后,OGC在标准审核与批准过程中对该标准文档进行了修改。目前正式推出的三维标准,作为开放规范,可以被任何供应商的产品、技术及解决方案支持。
OGC标准执行总监Scott Simmons表示,“ OGC I3S和SLPK规范对快速发展的3D可视化和分析需求做出了重要贡献,进一步满足了日益增长的网络三维地图需求。”
i3s是一种用树结构来组织大体积量三维数据的数据格式标准,比如在位图界的jpg格式一样,只不过i3s是“标准”。i3s采用json文件来描述数据,采用二进制文件(格式为.bin)来存储三维地理数据。i3s是OGC规范,目前OGC版本是1.0,但是在Esri维护的社区项目中,i3s已经演进到1.7了。可以说是“一般”与“特殊”的区别。OGC标准一旦制定就不应该频繁更改,但是社区维护版本可以根据实际生产需要,基于OGC标准做结构优化等。i3s标准将三维地理数据切分,用“节点”的概念组织起来,然后这些节点被有序地写在“节点页”中。说白了就是树形结构。i3s将三维地理数据组织起来后,可以放在服务器上通过REST接口访问。i3s目前由slpk格式的文件实现。
I3S(Indexed 3D Scene Layer )
I3S作为开放的标准,可用于流式传输具有大数据量、多种类型地理数据集的三维内容。三维内容可包含离散的三维模型、密集格网(倾斜摄影测量建模成果,3D Mesh)、三维矢量点、点云以及其它内容。
I3S支持非常大的数据集的存储和传输,可大至包含数百万个具有属性对象的离散三维模型或覆盖数千平方公里的倾斜摄影测量建模成果。I3S具有为三维专门设计,为Web、移动和云专门设计,可扩展支持多种类型的三维数据的特点。
为三维数据专门设计
I3S专门设计用于支持三维地理空间的内容,并支持必要的坐标系统、高度模型以及丰富的图层类型。
为Web、移动和云专门设计
I3S在底层设计时就考虑到友好地支持Web、移动和云。I3S基于JSON、REST以及最新的Web标准,可高效地在Web和移动端解析和呈现。流式处理大数据量三维数据集的设计旨在实现在Web和移动端的高性能和高可扩展性。
支持多种类型的三维数据
支持I3S标准的数据格式(SPK/SLPK)具备声明性和可扩展性,并已经用于不同类型的三维数据:
a.离散三维模型(3D Objects):主要指独立建模物、建筑构造物;
b.密集格网(Integrated Meshes):主要指倾斜摄影测量建模成果;
c.点(Points):主要指城市小品如行道树、城市道路设施等;
d.点云(Point Clouds):主要指Las数据集,暂不支持在10.5中发布成Scene Service;
e.未来进一步支持数据类型包括:
线(Lines):如道路、管线等;
面(Polygons):如森林覆盖等;
I3S目前支持的数据类型
ArcGIS平台全面支持I3S
ArcGIS平台以I3S标准为核心,提供了集三维内容创建、管理、可视化和共享为一体的完整的三维体系。I3S贯穿整个ArcGIS平台,全产品线核心产品全部实现对I3S的支持。
数据层
ArcGIS平台提供切片缓存数据存储,用于存储基于I3S标准的三维图层缓存。
服务器层
服务器产品ArcGISEnterprise支持发布遵循I3S标准的场景服务。
应用层
a.桌面产品
ArcGIS Pro可进行三维内容的制作及发布,支持加载基于I3S标准的数据格式SLPK及场景服务,同时Pro提供数据转换工具可以将multipatch等数据转成SLPK进行加载;并可直接共享到ArcGIS Enterprise并发布成场景服务;
CityEnigne支持模型直接生成SLPK格式,并可直接共享到ArcGISEnterprise并发布成场景服务;
另外,桌面端其他产品如无人机数据处理应用Drone2Map for ArcGIS可将无人机影像生成SLPK、轻量级三维应用ArcGIS Earth支持场景服务及SLPK数据加载浏览。
b.Web端
3D场景查看器(SceneViewer)、地图故事、Web AppBuilder等应用支持I3S标准三维图层加载、交互及可视化,开发人员也可使用ArcGIS API for Java调用场景服务开发业务应用。
c.移动端
开发产品ArcGISRuntime SDKs支持调用场景服务,也可离线加载SLPK数据,进行三维场景的可视化及交互操作。
i3s对三维地理数据的分类
- 3d模型——传统3d建模的精模转换数据
- 表面模型——倾斜摄影数据
- 三维点
- 三维点云
- 建筑——BIM数据
为什么不用bim文件、为什么不用现有的三维数据格式呢?
首先,商业软件的三维数据格式并不开源,而i3s格式是开源的,只要熟读标准可以自己编程创建(难度比较大就是了)。
其次,开源的三维数据格式不具备地理信息。
最后,bim数据不面向地理信息系统。
所以,在三维GIS萌芽的今天(指这个年代),一种开源的三维地理数据规范就显得十分重要。
i3s标准的数据组织和结构
i3s使用的是树结构组织数据,同时支持规则四叉树或者R树组织。每个树节点代表的地理数据的范围,由外包围球(mbs)或外包围(obb)盒表示。
节点和节点页
一份三维地理数据应该合理的切分,i3s使用树结构切分,以适应大量数据的快速分发、显示。
切分的结果就是“节点(Node)”,组织这些节点的结构叫做“节点页(NodePage)”。
在1.6及早期版本中,节点信息是写在一个叫3DNodeIndexDocument.json.gz文件中的,即3DNodeIndexDocument文档,节点一多,遍历小文件频率增加,对IO性能有不小的影响。
所以在1.7版本中,将这个3DNodeIndexDocument文档聚合到“节点页”中去了,类似于索引的功能(i3s的i就是index嘛)。
节点构成
节点由两个部分构成:要素和节点资源。
即 Node = Feature + NodeResources
要素的概念和二维上的要素是一样的,都表示一个地理实体,比如一栋建筑。
节点资源,包括要素的几何数据、属性数据(这两个数据见我的博客《聊聊GIS数据的四个分层》),以及三维数据中的材质纹理信息。
即 NodeResources = Geometry + Attributes + Textures
注意:并不是所有的节点都包括这三大资源的。3d模型类型的地理数据和建筑数据均包括这三大资源。
① Geometry
几何数据在不同版本的i3s(社区版本)有不同的表达。在1.7版本中,3d模型和表面模型几何数据用draco压缩格式的二进制文件存储。
在构造三角面时,顺序为逆时针方向(这点我不太清楚,图形学的朋友可以深入一下)。
所有几何顶点的坐标均相对于1.1中提及的obb或者mbs的中心的。obb或者mbs的中心若为零点原点,则还需要加上顶点偏移,使其偏移到正确的坐标系上,这个偏移量在json文件中是有的。
应指定坐标轴的正方向,默认是x-东,y-北,z-高程。
② Attribute
同一个要素的几何数据和属性数据分别存在两个不同的二进制文件中。属性数据的顺序和几何数据的顺序一样。
③ Texture
纹理就是指纹理图像文件,被存储为二进制文件。
为了确保与1.6版本的兼容性,1.7的i3s标准还需要包括3dNodeIndexDocument.json描述文件,以及可用于任何节点的sharedResources目录。
i3s中的统计数据
统计数据用来定义符号,这样可以避免读取所有的数据。比如,你要用唯一值进行制图,那就可以从统计信息里获取唯一值,而不是遍历一次节点的属性数据进行统计。当然,统计数据还可以用来做空间过滤。
坐标系和高程
i3s使用WKT来指定坐标系统。使用WKT1或者WKT2均可。全局i3s数据仅支持WGS84坐标系和中国国家2000坐标系,注意是仅支持地理坐标系,x和y代表十进制的经度、纬度。局部小场景支持任意坐标系统。若WKID不是4326或者4490,那就被视作局部小场景i3s数据。1.5版本添加了对高程坐标系的支持。
热门知识