数据格式同样都是osgb,不同软件生产的,建模是参数不一样,还是有很大区别的。尤其在应用阶段。
本文从建模软件、数据组织结构、metadata.xml(投影信息)、应用几个方面进行了经验性总结。不论您是初步开始建模,还是倾斜模型的应用方都可以有个了解,便于和业主或承建方能快速对清楚诉求。
1.大疆智图生产的osgb
不同的数据范围、体积、分块方式略有差异,下图是一份常见的大疆智图生产的osgb的文件结构
瓦片文件夹内部结构:
几个特性:
- 默认成果由terra_osgbs文件夹包裹
- 瓦片文件夹Block开头
- 瓦片文件夹内部有文件夹同名osgb文件及不同level的名称文件组成
- 配套metadata.xml文件
2.ContextCapture(Smart3D)生产的osgb:
不同的数据范围、体积、分块方式略有差异,下图是一份常见的ContextCapture(Smart3D)生产的osgb的文件结构
瓦片内文件结构
几个特性:
- 默认成果由Data文件夹+metadata.xml组成
- 瓦片文件夹Tile_开头
- 瓦片文件夹内部有文件夹同名osgb文件及不同level的名称文件组成
- 配套metadata.xml文件
3.metadata.xml是什么?
metadata.xml是一个xml格式文件,主要用于定义投影,根据不同投影类型的定义,共计有6中常见的结构(随着生产软件的升级,并非绝对),这里进行罗列展示
3.1EPSG模式metadata.xml
EPSG代表标准的投影定义 注:图新当前对4326-wgs84经纬度不支持,4490-国家2000经纬度不支持
<ModelMetadata version="1">
<!-- Spatial Reference System -->
<SRS>EPSG:4547</SRS>
<!-- Origin in Spatial Reference System -->
<SRSOrigin>550901.32348177815,3360977.338184359,58.849999999403899</SRSOrigin>
<Texture>
<ColorSource>Visible</ColorSource>
</Texture>
</ModelMetadata>
3.2EPSG带+模式metadata.xml
EPSG代号代表投影,+号后面是高程基准的EPSG定义。
<ModelMetadata version="1">
<!-- Spatial Reference System -->
<SRS>EPSG:4544+5773</SRS>
<!-- Origin in Spatial Reference System -->
<SRSOrigin>622346.24540907482,4315810.9692699434,1156.2578820004351</SRSOrigin>
<Texture>
<ColorSource>Visible</ColorSource>
</Texture>
</ModelMetadata>
3.3ENU模式metadata.xml
也叫东北天,相当于坐标原点给一个经纬度坐标,其他位置都是相对坐标原点的平面坐标
<?xml version="1.0" encoding="utf-8"?>
<ModelMetadata version="1">
<!--Spatial Reference System-->
<SRS>ENU:38.318253169999998,117.86893173</SRS>
<!--Origin in Spatial Reference System-->
<SRSOrigin>0,0,106.90241103</SRSOrigin>
<Texture>
<ColorSource>Visible</ColorSource>
</Texture>
</ModelMetadata>
3.4LOCAl模式metadata.xml
比较少见,也叫“任意坐标系”、“地方坐标系”模式,出现情况: 如果数据有控制点,控制点并未定义椭球参数、分带模式、中央经线、假东、假北等参数的情况下。没有和地理关系的对照。 目前只发现大疆智图生产的数据有这样的定义
<ModelMetadata version="1">
<!-- Spatial Reference System -->
<SRS>EPSG:4544+5773</SRS>
<!-- Origin in Spatial Reference System -->
<SRSOrigin>622346.24540907482,4315810.9692699434,1156.2578820004351</SRSOrigin>
<Texture>
<ColorSource>Visible</ColorSource>
</Texture>
</ModelMetadata>
3.5无SRS模式metadata.xml
比较少见,xml内没有SRS标签 主要是CC生产,控制点未设置投影类型,如3.4大疆智图生产的LOCAL模式。这个模式比较头疼,CC未写入原点坐标,只能在CC中查看原点坐标。 拿到这样数据的用户,是没办法在其他软件中正常进行地理定位的。
<ModelMetadata version="1">
<!-- Spatial Reference System -->
<SRS>EPSG:4544+5773</SRS>
<!-- Origin in Spatial Reference System -->
<SRSOrigin>622346.24540907482,4315810.9692699434,1156.2578820004351</SRSOrigin>
<Texture>
<ColorSource>Visible</ColorSource>
</Texture>
</ModelMetadata>
3.6prj字符串模式metadata.xml
比较少见,大疆智图生产过程中,如果选择了外部的prj文件,并且prj文件内没有epsg的定义,会直接写入prj字符串到SRS。 注意!!!:如果在标准的prj中修改了假东、假北、椭球参数等参数,大疆会使用这些参数进行建模,但是生产出的medata.xml文件是EPSG的模式。 其他软件如果按照EPSG解析就会出错。
<ModelMetadata version="1">
<!-- Spatial Reference System -->
<SRS>PROJCS["",GEOGCS["China Geodetic Coordinate System 2000",DATUM["China_2000",SPHEROID["CGCS2000",6378137,298.257222101,AUTHORITY["EPSG","1024"]],AUTHORITY["EPSG","1043"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4490"]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",117],PARAMETER["scale_factor",1],PARAMETER["false_easting",500000],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AUTHORITY["EPSG","4549"]]</SRS>
<!-- Origin in Spatial Reference System -->
<SRSOrigin>564373,4198255,0</SRSOrigin>
<Texture>
<ColorSource>Visible</ColorSource>
</Texture>
</ModelMetadata>
4.osgb是什么,为什么选择osgb?
此处不做深入介绍,大概知道osgb的一些特性
4.1osgb是什么?
osgb是OpenSceneGraph(做三维渲染引擎的)开源组织维护的一个二进制流类型的数据结构,由国内的王锐首次提出、定义并维护至今。
如果要做osgb文件流本身的读取、写入可参考相关规范。
普通的应用开发者,只需要关注osgb文件的组织结构即可,知道如何优化解决自身业务问题即可,支持该类型数据的三维渲染引擎都有解析方法。
osgb的核心是瓦片切分,lod(层次细节模型)构建。
LOD技术指根据物体模型的节点在显示环境中所处的位置和重要度,决定物体渲染的资源分配,降低非重要物体的面数和细节度,从而获得高效率的渲染运算。
4.2为什么选择osgb?
建模软件生成的数据格式为什么选择osgb?
- osgb是开源协议,不涉及版权问题
- osgb的lod有分页机制,调度灵活
- osgb是二进制流文件,提交小
5.osgb倾斜摄影的一些说明
图新地球加载osgb数据非常灵活、简单,也是第一批支持osgb格式倾斜模型的三维GIS平台。
5.1lfp文件
用户在导入osgb到图新地球桌面端时,会根据xml的解析,自动生成一个lfp格式的索引文件。后面无需重复解析,并可灵活修改数据的位置。
lfp是图新自己定义的一个xml文件。是图新地球桌面端图层管理的基本单元。
5.2lob文件
图新在使用osgb文件时,尤其前期做web加载解析时发现,osgb还有较大优化空间,尤其是当前数据生产厂商生成的osgb文件,在web传输、解析下可以做进一步优化扩展。 图新定义了自己的倾斜模型文件协议lob(当前并未开源,主要自己使用)
5.3合并根节点
图新可以在现有osgb瓦片(CC和大疆智图生产的数据均支持)的基础上向上抽析,一直到只有一个根节点。可以加快数据的调度显示速度。
CC后来已经可以生成合并根节点的数据,只是对电脑性能要求更高
大疆智图生成的数据,根目录下有一个名称为Block.osgb或者Model.osgb,加载这个文件,会自动索引所有的数据。只是这个文件只是做了索引或者对每一个瓦片的首个文件做了合并,并未重新抽析。导致Model.osgb文件经常超过100M,web下基本无法应用。 遇到此情况可直接删除。
5.4【和3dTiles的关系】
当前市面上出现了不少osgb转3dtiles的工具,主要解决cesium等开源渲染引擎加载osgb格式的倾斜模型。
3dtiles同样是一个优秀的开源数据协议。
如果你是一个开发者,发现转换后,cesium加载数据卡顿,可尝试上面介绍的【合并根节点】,先对osgb进行根节点合并再转换。可有效提升数据的组织调度效率。