3D城市模型COLLADA数据格式详解

3D城市模型COLLADA数据格式详解

1. 概述

本文档基于3D城市模型COLLADA数据规范(v1.8),结合旧金山(San Francisco)实际数据集,详细说明该数据格式的组织结构、文件命名规范、数据内容及使用方法。

1.1 数据源

  • 数据标准 : COLLADA 1.4.1
  • 城市: 美国加利福尼亚州旧金山

1.2 数据特点

  • 基于瓦片(Tile)的城市3D模型数据
  • 包含建筑物、地形、道路、水体等城市要素
  • 支持多细节层次(LOD):LOW、STANDARD、HIGH
  • 使用PNG纹理贴图
  • 采用横轴墨卡托(Transverse Mercator)投影坐标系统

2. 目录结构

复制代码
SAN_FRANCISCO/
├── CM_USA_CA_SAN_FRANCISCO_XXX_YYY_B2.DAE     # 边界元数据文件
├── CM_USA_CA_SAN_FRANCISCO_XXX_YYY_M.DAE      # 主模型数据文件
├── 3D_LANDMARKS/                              # 地标建筑目录
│   ├── [建筑名称]/
│   │   ├── LOW/                              # 低细节模型
│   │   │   ├── [建筑名称]_L.DAE
│   │   │   └── [建筑名称]_L.PNG
│   │   └── STANDARD/                         # 标准细节模型
│   │       ├── [建筑名称]_S.DAE
│   │       └── [建筑名称]_S.PNG
├── ASSETS/                                    # 辅助资产文件
│   ├── CM_USA_CA_SAN_FRANCISCO.csgis          # 压缩的GIS元数据(zlib格式)
│   ├── CM_USA_CA_SAN_FRANCISCO.dbf            # Shapefile数据库文件(dBASE格式)
│   ├── CM_USA_CA_SAN_FRANCISCO.plorg          # 压缩的数据组织信息(zlib格式)
│   ├── CM_USA_CA_SAN_FRANCISCO.prj            # 投影坐标系统定义(WKT格式)
│   ├── CM_USA_CA_SAN_FRANCISCO.shp            # Shapefile几何数据(ESRI格式)
│   └── CM_USA_CA_SAN_FRANCISCO.shx            # Shapefile索引文件
└── TEXTURES/                                  # 纹理资源目录
    └── HERE/
        ├── HIGH/                             # 高质量纹理
        ├── LOW/                              # 低质量纹理
        └── STANDARD/                         # 标准质量纹理
            └── DAY/
                ├── ARROWS/                   # 道路箭头标识
                ├── BUILDINGS/                # 建筑纹理
                │   ├── B2/                   # 二维建筑纹理(238张)
                │   ├── B3/                   # 三维建筑纹理(100张)
                │   └── COMMON/               # 通用纹理(屋顶等)
                └── OTHER/                    # 其他纹理(地形、道路等)

3. 文件命名规范

3.1 瓦片文件命名

格式 : CM_[国家]_[州]_[城市]_XXX_YYY_[类型].DAE

示例 : CM_USA_CA_SAN_FRANCISCO_000_000_M.DAE

字段说明:

  • CM: City Model(城市模型)
  • USA: 国家代码(美国)
  • CA: 州代码(加利福尼亚)
  • SAN_FRANCISCO: 城市名称
  • XXX: 瓦片X索引(3位数字,从000开始)
  • YYY: 瓦片Y索引(3位数字,从000开始)
  • 类型:
    • B2: 二维边界数据文件
    • M: Main(主模型数据文件)
    • S: Spline(样条曲线文件,如道路中心线)

3.2 瓦片网格系统

数据采用规则网格瓦片组织:

  • 瓦片尺寸: 400m × 400m
  • 索引方式: XXX(列)× YYY(行)
  • 覆盖范围: 旧金山数据集包含约8×16的瓦片网格

示例瓦片索引:

复制代码
000_000 | 001_000 | 002_000 | ...
000_001 | 001_001 | 002_001 | ...
000_002 | 001_002 | 002_002 | ...
...

3.3 地标建筑命名

格式 : [国家]_[州]_[城市]_[建筑名称]

示例:

  • USA_CA_SANFRANCISCO_TRANSAMERICAPYRAMID (泛美金字塔大厦)
  • USA_CA_SANFRANCISCO_COITTOWER (科伊特塔)
  • USA_CA_SANFRANCISCO_FERRYBUILDING (渡轮大厦)

细节层次后缀:

  • _L.DAE: Low(低细节)
  • _S.DAE: Standard(标准细节)

4. 文件类型详解

4.1 B2文件(Building文件)

用途: 存储建筑物的边界信息和元数据

内容:

  • 瓦片基本信息(瓦片ID、尺寸)
  • 最小边界矩形(MBR)
  • 投影坐标系统定义
  • 地理坐标系统参数

示例 : CM_USA_CA_SAN_FRANCISCO_000_000_B2.DAE

xml 复制代码
<visual_content_metadata 
    tile_id="000_000" 
    tile_width="400" 
    tile_height="400" 
    spline_curve_file="CM_USA_CA_SAN_FRANCISCO_000_000_S.DAE" 
    dtm_integrated="false"/>
<minimum_bounding_rectangle 
    XMax="-3635.11768" 
    XMin="-4035.11768" 
    YMax="-2799.99976" 
    YMin="-3199.99976"/>

4.2 M文件(主模型文件)

用途: 包含瓦片内的所有3D几何模型和场景数据

内容:

  • 地形(TERRAIN)
  • 道路(ROAD, feature_type: 9999999)
  • 水体(WATER, feature_type: 507116)
  • 人行横道(PEDESTRIAN_CROSSWALK)
  • 转向箭头标识(TURN_ARROW_DECAL)
  • 植被覆盖(Grass, Park, feature_type: 900150)
  • 其他地物

特点:

  • 包含完整的COLLADA库(images、effects、materials、geometries、visual_scenes)
  • 文件大小从几KB(空旷区域)到数MB(密集城区)
  • 包含纹理引用和材质定义

4.3 ASSETS文件(辅助资产文件)

ASSETS 目录包含城市模型的辅助元数据和空间索引文件:

4.3.1 投影坐标系统文件
文件 格式 说明
.prj WKT文本 投影坐标系统定义(Well-Known Text格式)

示例内容(CM_USA_CA_SAN_FRANCISCO.prj):

复制代码
GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]]

此文件定义了数据集使用的地理坐标系统(WGS 84)。

4.3.2 Shapefile 文件组
文件 格式 说明
.shp ESRI Shapefile 存储几何图形(点、线、面)
.shx Shapefile索引 加速空间查询的索引文件
.dbf dBASE III+ 属性数据表

用途: 存储城市模型的边界多边形(Polygon)和相关属性。

注意: 旧金山数据集中的 Shapefile 仅包含 1 条记录,表示整个城市模型的外边界范围。

5. COLLADA文件结构

5.1 基本结构

xml 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<COLLADA xmlns="http://www.collada.org/2005/11/COLLADASchema" version="1.4.1">
    <asset>...</asset>                      <!-- 元数据 -->
    <library_images>...</library_images>    <!-- 图像库 -->
    <library_effects>...</library_effects>  <!-- 效果库 -->
    <library_materials>...</library_materials>  <!-- 材质库 -->
    <library_geometries>...</library_geometries>  <!-- 几何库 -->
    <library_visual_scenes>...</library_visual_scenes>  <!-- 场景库 -->
    <scene>...</scene>                      <!-- 场景实例 -->
    <extra>...</extra>                      <!-- 扩展信息 -->
</COLLADA>

5.2 Asset节点(元数据)

xml 复制代码
<asset>
    <contributor>
        <author>HERE</author>
        <copyright>Copyright 2022 HERE</copyright>
    </contributor>
    <created>2022-04-08T23:49:00.0Z</created>
    <modified>2022-04-08T23:49:00.0Z</modified>
    <revision>1.4.1</revision>
    <unit/>
    <up_axis>Z_UP</up_axis>  <!-- Z轴向上 -->
</asset>

关键字段:

  • author: 数据提供商(HERE)
  • created/modified: 创建和修改时间(UTC格式)
  • up_axis: 坐标系统上方向(Z_UP表示Z轴向上)
  • unit: 长度单位(米)

5.3 Library_images(图像库)

定义所有纹理图像资源:

xml 复制代码
<library_images>
    <image id="file-terrain_grass_color" name="file-terrain_grass_color">
        <init_from>./TEXTURES/HERE/HIGH/DAY/OTHER/USA_L_GRASS-COLOUR_5.PNG</init_from>
    </image>
    <image id="file-roads_street_solid" name="file-roads_street_solid">
        <init_from>./TEXTURES/HERE/HIGH/DAY/OTHER/USA_R_STREET-SOLID.PNG</init_from>
    </image>
    <!-- 更多图像... -->
</library_images>

纹理路径格式 : ./TEXTURES/HERE/[质量]/DAY/[类别]/[文件名].PNG

5.4 Library_effects(效果库)

定义材质的视觉效果(着色模型、纹理采样等):

xml 复制代码
<effect id="terrain_grass_color-fx">
    <profile_COMMON>
        <newparam sid="file-terrain_grass_color-surface">
            <surface type="2D">
                <init_from>file-terrain_grass_color</init_from>
                <format>A8R8G8B8</format>  <!-- 32位ARGB格式 -->
            </surface>
        </newparam>
        <newparam sid="file-terrain_grass_color-sampler">
            <sampler2D>
                <source>file-terrain_grass_color-surface</source>
                <wrap_s>WRAP</wrap_s>       <!-- 水平环绕 -->
                <wrap_t>WRAP</wrap_t>       <!-- 垂直环绕 -->
                <minfilter>LINEAR_MIPMAP_LINEAR</minfilter>
                <magfilter>LINEAR</magfilter>
            </sampler2D>
        </newparam>
        <technique sid="common">
            <lambert>  <!-- Lambert着色模型 -->
                <emission><color>0 0 0 1</color></emission>
                <ambient><color>1 1 1 1</color></ambient>
                <diffuse>
                    <texture texture="file-terrain_grass_color-sampler" texcoord="TEX0"/>
                </diffuse>
            </lambert>
        </technique>
    </profile_COMMON>
</effect>

着色模型: 使用Lambert漫反射模型

5.5 Library_materials(材质库)

关联效果到材质:

xml 复制代码
<library_materials>
    <material id="terrain_grass_color" name="terrain_grass_color">
        <instance_effect url="#terrain_grass_color-fx"/>
    </material>
</library_materials>

5.6 Library_geometries(几何库)

定义3D几何数据(顶点、法线、纹理坐标、面):

xml 复制代码
<geometry id="MESH_TERRAIN" name="MESH_TERRAIN">
    <mesh>
        <!-- 顶点位置数组 -->
        <source id="MESH_TERRAIN-positions">
            <float_array id="MESH_TERRAIN-positions-array" count="12">
                -4035.11768 -3199.99976 0 
                -3635.11768 -3199.99976 0 
                -3635.11768 -2799.99976 0 
                -4035.11768 -2799.99976 0
            </float_array>
            <technique_common>
                <accessor count="4" stride="3">
                    <param name="X" type="float"/>
                    <param name="Y" type="float"/>
                    <param name="Z" type="float"/>
                </accessor>
            </technique_common>
        </source>
        
        <!-- 法线数组 -->
        <source id="MESH_TERRAIN-normals">
            <float_array id="MESH_TERRAIN-normals-array" count="12">
                0 0 1 0 0 1 0 0 1 0 0 1
            </float_array>
            <technique_common>
                <accessor count="4" stride="3">
                    <param name="X" type="float"/>
                    <param name="Y" type="float"/>
                    <param name="Z" type="float"/>
                </accessor>
            </technique_common>
        </source>
        
        <!-- 纹理坐标数组 -->
        <source id="MESH_TERRAIN-texcoords">
            <float_array id="MESH_TERRAIN-texcoords-array" count="12">
                -403.51178 -318.999969 
                -363.51178 -318.999969 
                -363.51178 -278.999969 
                -403.51178 -278.999969 
                -403.51178 -278.999969 
                -363.51178 -318.999969
            </float_array>
            <technique_common>
                <accessor count="6" stride="2">
                    <param name="S" type="float"/>
                    <param name="T" type="float"/>
                </accessor>
            </technique_common>
        </source>
        
        <!-- 顶点定义 -->
        <vertices id="MESH_TERRAIN-vertices">
            <input semantic="POSITION" source="#MESH_TERRAIN-positions"/>
        </vertices>
        
        <!-- 三角形面 -->
        <triangles count="2" material="SubMesh0">
            <input offset="0" semantic="VERTEX" source="#MESH_TERRAIN-vertices"/>
            <input offset="0" semantic="NORMAL" source="#MESH_TERRAIN-normals"/>
            <input offset="1" semantic="TEXCOORD" source="#MESH_TERRAIN-texcoords" set="0"/>
            <p>3 3 0 0 1 1 2 2 3 3 1 1</p>
        </triangles>
    </mesh>
</geometry>

数据组织:

  • positions: XYZ顶点坐标(单位:米)
  • normals: 法线向量(单位向量)
  • texcoords: 纹理UV坐标(S, T)
  • triangles: 三角形索引(支持多重索引)

5.7 Library_visual_scenes(场景库)

组织场景中的节点和几何实例:

xml 复制代码
<library_visual_scenes>
    <visual_scene id="VisualScene" name="VisualScene">
        <node id="TERRAIN" name="TERRAIN">
            <instance_geometry url="#MESH_TERRAIN">
                <bind_material>
                    <technique_common>
                        <instance_material symbol="SubMesh0" target="#terrain_grass_color">
                            <bind_vertex_input semantic="TEX0" input_semantic="TEXCOORD" input_set="0"/>
                        </instance_material>
                    </technique_common>
                </bind_material>
            </instance_geometry>
            <extra>
                <technique profile="VISUALS">
                    <feature_type type="TERRAIN"/>
                    <coverage_info outside_coverage_area="true"/>
                </technique>
            </extra>
        </node>
    </visual_scene>
</library_visual_scenes>

节点类型(通过node id和feature_type识别):

  • TERRAIN: 地形
  • WATER_[ID]: 水体(feature_type: 507116)
  • ROAD_[ID]: 道路(feature_type: 9999999)
  • PEDESTRIAN_CROSSWALK: 人行横道
  • TURN_ARROW_DECAL: 转向箭头标识

5.8 Extra节点(扩展信息)

包含HERE特有的元数据:

xml 复制代码
<extra>
    <technique profile="VISUALS">
        <visual_content_metadata 
            tile_id="000_000" 
            tile_width="400" 
            tile_height="400" 
            spline_curve_file="CM_USA_CA_SAN_FRANCISCO_000_000_S.DAE" 
            dtm_integrated="false"/>
        <minimum_bounding_rectangle 
            XMax="-3635.11768" 
            XMin="-4035.11768" 
            YMax="-2799.99976" 
            YMin="-3199.99976"/>
        <projection_coordinate_system name="PA_Projection_Coordinate_System">
            <geographic_coordinate_system name="GCS_North_American_1983">
                <datum name="D_North_American_1983">
                    <spheroid name="GRS_1980" 
                              semi_major_axis="6378137" 
                              semi_minor_axis="6356752.314245179"/>
                </datum>
                <prime_meridian name="Greenwich" longitude_value="0"/>
                <unit name="Degree" conversion_factor="0.01745329251994328"/>
            </geographic_coordinate_system>
            <projection name="Transverse_Mercator" unit="Metres" unit_conversion_factor="1">
                <parameter name="SCALE_FACTOR" value="1"/>
                <parameter name="X_FALSE" value="0"/>
                <parameter name="Y_FALSE" value="0"/>
                <parameter name="CENTRAL_MERIDIAN" value="-122.4061349773356"/>
                <parameter name="LATITUDE_OF_ORIGIN" value="37.78819876292745"/>
            </projection>
        </projection_coordinate_system>
    </technique>
</extra>

6. 坐标系统

6.1 投影坐标系统

类型: 横轴墨卡托投影(Transverse Mercator)

参数:

  • 中央子午线 (CENTRAL_MERIDIAN): -122.4061349773356°(旧金山中心经度)
  • 原点纬度 (LATITUDE_OF_ORIGIN): 37.78819876292745°(旧金山中心纬度)
  • 比例因子 (SCALE_FACTOR): 1
  • 东伪偏移 (X_FALSE): 0
  • 北伪偏移 (Y_FALSE): 0
  • 单位: 米(Metres)

6.2 地理坐标系统

基准 : NAD83(North American Datum 1983)
椭球: GRS 1980

  • 长半轴: 6378137 m
  • 短半轴: 6356752.314245179 m

6.3 坐标转换

瓦片内的坐标为局部笛卡尔坐标系(米),原点位于投影中心:

  • X轴: 向东为正
  • Y轴: 向北为正
  • Z轴: 向上为正

坐标范围示例 (瓦片 000_000):

  • X: [-4035.11768, -3635.11768] (400m宽)
  • Y: [-3199.99976, -2799.99976] (400m高)
  • Z: 0 及以上(地面和建筑高度)

7. 纹理资源

7.1 纹理目录结构

复制代码
TEXTURES/HERE/
├── HIGH/       # 高质量纹理
├── LOW/        # 低质量纹理
└── STANDARD/   # 标准质量纹理
    └── DAY/
        ├── ARROWS/      # 道路箭头标识纹理
        ├── BUILDINGS/   # 建筑纹理
        │   ├── B2/     # 2.5D建筑纹理(238个)
        │   ├── B3/     # 3D建筑纹理(100个)
        │   └── COMMON/ # 通用建筑纹理(18个,主要是屋顶)
        └── OTHER/       # 其他纹理

7.2 纹理命名规范

地形纹理 (Terrain, 前缀: USA_L_):

  • USA_L_GRASS-COLOUR_5.PNG: 草地
  • USA_L_PARK-COLOUR_5.PNG: 公园
  • USA_L_WATER-COLOUR_5.PNG: 水体
  • USA_L_WOODLAND-COLOUR_5.PNG: 林地
  • USA_L_BEACH-COLOUR_5.PNG: 海滩
  • USA_L_CONCRETE-COLOUR_5.PNG: 混凝土
  • USA_L_GOLF-COLOUR_5.PNG: 高尔夫球场
  • USA_L_HOSPITAL-COLOUR_5.PNG: 医院
  • USA_L_CEMETERY-COLOUR_5.PNG: 墓地
  • USA_L_MLU-COLOUR_5.PNG: 混合土地利用

道路纹理 (Road, 前缀: USA_R_):

  • USA_R_STREET-SOLID.PNG: 道路实线
  • USA_R_STREET-DASHED.PNG: 道路虚线
  • USA_R_STREET-UNMARKED.PNG: 道路无标线
  • USA_R_STREET-STOPLINE.PNG: 停止线
  • USA_R_STREET-CROSSWALK.PNG: 人行横道线
  • USA_R_STREET-LANE-FILLER.PNG: 车道填充
  • USA_R_STREET-INNER-SHOULDER_2.PNG: 内侧路肩
  • USA_R_STREET-RAMP-SOLID.PNG: 匝道实线
  • USA_R_HIGHWAY-*.PNG: 高速公路纹理(同上)
  • USA_R_WALKWAY-*.PNG: 人行道纹理
  • USA_R_CONCRETE.PNG: 混凝土路面
  • USA_T_RAILROAD.PNG: 铁路

箭头纹理 (Arrow, 前缀: ARROW_USA_):

  • ARROW_USA_STRAIGHT.PNG: 直行
  • ARROW_USA_RIGHT.PNG: 右转
  • ARROW_USA_STRAIGHTRIGHT.PNG: 直行或右转
  • ARROW_USA_RIGHTLEFT.PNG: 左转或右转
  • ARROW_USA_STRAIGHTRIGHTLEFT.PNG: 直行、左转或右转
  • ARROW_USA_UTURN.PNG: 掉头

屋顶纹理 (Roof, 前缀: ROOF_):

  • ROOF_001_RSG.PNG ~ ROOF_029_RTB.PNG: 各种屋顶纹理
    • 命名中间字母含义: R=Roof, S/T/U/Z=类型代码, G/B/R/W=颜色代码

7.3 纹理格式

  • 格式: PNG (Portable Network Graphics)
  • 色彩模式: ARGB(32位,包含透明通道)
  • 分辨率: 根据质量等级不同(HIGH > STANDARD > LOW)

8. 特征类型(Feature Types)

8.1 常见特征类型代码

代码 名称 说明
TERRAIN 地形 自然地表,包括草地、公园等
507116 水体 河流、湖泊、海洋等水域
900150 公园/草地 特定植被覆盖区域
9999999 道路 街道、高速公路等道路面
PEDESTRIAN_CROSSWALK 人行横道 斑马线
TURN_ARROW_DECAL 转向箭头 道路转向指示标识

8.2 特征属性

每个几何节点的 <extra> 部分包含特征元数据:

xml 复制代码
<extra>
    <technique profile="VISUALS">
        <face_PVID>715616466</face_PVID>  <!-- 面ID -->
        <feature_type type="507116"/>      <!-- 特征类型 -->
        <coverage_info outside_coverage_area="true"/>  <!-- 覆盖信息 -->
    </technique>
</extra>

9. 3D地标建筑

9.1 地标结构

地标建筑单独存放在 3D_LANDMARKS/ 目录,每个地标包含:

  • 目录: 以建筑名称命名
  • 细节层次 :
    • LOW/: 低细节模型(用于远距离显示)
    • STANDARD/: 标准细节模型(用于中近距离显示)
  • 文件 :
    • .DAE: COLLADA模型文件
    • .PNG: 建筑专用纹理(通常包含建筑立面贴图)

9.2 旧金山地标建筑列表(部分)

著名建筑:

  • 泛美金字塔 (TRANSAMERICAPYRAMID)
  • 旧金山市政厅 (CITYHALL)
  • 渡轮大厦 (FERRYBUILDING)
  • 科伊特塔 (COITTOWER)
  • 美国银行大厦 (BANKOFAMERICA)
  • 销售力量大厦 (SALESFORCTOWR) - 旧金山最高建筑
  • 金门剧院 (GRACECATHEDRAL)
  • 旧金山现代艺术博物馆 (MUSEUM_MART)
  • 39号码头 (PIER39)
  • 甲骨文球场 (ORACLE_PARK)

酒店与商业:

  • 希尔顿酒店 (HILTON)
  • 凯悦酒店 (HYATT)
  • 万豪酒店 (MARRIOTT)
  • 圣弗朗西斯酒店 (STFRANCIS)
  • 马克霍普金斯酒店 (MARKHOPKINS)
  • 梅西百货 (MACYS)

会议中心:

  • 莫斯康会议中心 (MOSCONE / MOSCONE_NORTH)
  • 儿童博物馆 (CHLDRNSMUSAUM)

9.3 地标模型特点

  • 独立坐标系: 地标模型通常使用独立的本地坐标系
  • 高精度: 比普通瓦片建筑具有更高的几何和纹理精度
  • 专用纹理: 每个地标有自己的纹理文件(非共享纹理)
  • 多部分模型: 大型建筑可能分为多个部分(PART1, PART2等)

9.4 地标位置信息与POI数据

根据 HERE COLLADA 数据规范(XSD Schema),完整的地标建筑数据集应该包含

9.4.1 标准数据组成
  1. POI 数据库(Points of Interest)

    • 格式: SQLite 或其他结构化数据库
    • 内容 :
      • POI_PVID → 地理坐标(经度、纬度、高度)
      • 建筑朝向(orientation/rotation)
      • 建筑元数据(名称、类型、楼层等)
    • 用途: 提供地标建筑的全局定位信息
  2. 地标 DAE 文件中的 POI_PVID 引用

    • 位置 : <extra><technique profile="VISUALS"> 节点中
    • 格式:
    xml 复制代码
    <extra>
        <technique profile="VISUALS">
            <aggr_feature_PVID PVID="12345">
                <POI_PVID>67890</POI_PVID>  <!-- 关联的POI永久版本ID -->
            </aggr_feature_PVID>
        </technique>
    </extra>
    • 用途: 将地标模型与 POI 数据库中的位置信息关联

10. 数据使用指南

10.1 数据加载流程

  1. 确定视口范围: 计算需要显示的地理区域
  2. 计算瓦片索引: 根据坐标范围确定需要加载的瓦片
  3. 加载M文件: 解析COLLADA文件,读取地形数据
  4. 加载B2文件: 解析COLLADA文件,读取建筑数据
  5. 加载纹理: 根据材质引用加载对应的PNG纹理
  6. 加载地标: 如果视口包含地标建筑,加载对应的LOD模型
  7. 构建场景: 将几何、材质、纹理组装成渲染场景

10.2 瓦片索引计算

假设已知投影坐标 (X, Y):

复制代码
瓦片列索引 XXX = floor((X - X_origin) / tile_width)
瓦片行索引 YYY = floor((Y - Y_origin) / tile_height)

其中:

  • X_origin, Y_origin: 瓦片网格原点
  • tile_width = 400m
  • tile_height = 400m

10.3 LOD选择策略

根据相机距离选择合适的细节层次:

距离范围 纹理质量 地标LOD 备注
> 5000m LOW 不加载 远景
1000-5000m LOW LOW 中远景
500-1000m STANDARD LOW 中景
100-500m STANDARD STANDARD 近景
< 100m HIGH STANDARD 特写

10.4 内存优化建议

  • 按需加载: 只加载可见瓦片
  • 卸载机制: 及时卸载视口外的瓦片
  • 纹理共享: 多个瓦片共享TEXTURES目录中的纹理
  • 压缩纹理: 运行时可将PNG转换为GPU压缩格式(DXT、ETC等)
  • 几何简化: 根据距离动态简化网格

10.5 坐标转换

投影坐标 → 经纬度 :

使用逆横轴墨卡托变换(需要投影参数)

经纬度 → 投影坐标 :

使用正横轴墨卡托变换

局部坐标 → 世界坐标 :

直接使用瓦片内的坐标(已是米制)

11. 数据质量说明

11.1 几何精度

  • 位置精度: 约1米
  • 高度精度: 约0.1米
  • 瓦片对齐: 相邻瓦片边界可能存在微小间隙或重叠

11.2 覆盖范围

  • 地形: 100%覆盖
  • 道路: 主要道路完整覆盖
  • 建筑: 城市中心区密集,郊区稀疏
  • 地标: 精选著名建筑

12. 常见问题

12.1 为什么有些瓦片的M文件很小?

这些瓦片可能位于水域、公园等开阔区域,只包含简单的地形平面。

12.2 如何确定一个瓦片是否包含建筑?

解析M文件,查找 feature_type 不为 TERRAIN 的节点。

12.3 纹理路径中的 "./TEXTURES" 如何解析?

相对于DAE文件所在目录,指向同级的 TEXTURES 目录。

12.4 dtm_integrated="false" 是什么意思?

表示数字地形模型(DTM)未集成到此文件中,地形高度为独立数据。

12.5 为什么坐标是负数?

这是投影坐标系的特点,原点在投影中心(旧金山市中心),负值表示在原点西侧和南侧。

12.6 如何处理跨瓦片的建筑?

大型建筑可能跨越多个瓦片,需要同时加载相邻瓦片并合并显示。

12.7 S文件(Spline)在哪里?

样条曲线文件可能单独提供或不包含在此数据集中,主要用于道路中心线等矢量数据。

13. 技术支持与参考

13.1 相关标准

13.2 工具推荐

  • COLLADA查看器: Blender, Autodesk Maya, FBX Converter
  • GIS软件: QGIS, ArcGIS(用于坐标转换)
  • 3D渲染引擎: Unity, Unreal Engine, Three.js, Cesium
  • C++ 格式读取库 : assimp

13.3 HERE地图平台

14. 基于 Assimp 实现的 Viewer

相关推荐
Coovally AI模型快速验证7 小时前
超越传统3D生成:OccScene实现感知与生成的跨任务共赢
人工智能·深度学习·机器学习·计算机视觉·3d·目标跟踪
3DVisionary8 小时前
3D光学弯管测量系统:空调管路高效质量管控利器
数码相机·3d·量子计算·3d光学测量·弯管检测·空调管路·质量管控
CV实验室8 小时前
CV论文速递: 覆盖医学影像分析、视频理解与生成、3D场景理解与定位等方向! (10.27-10.31)
人工智能·计算机视觉·3d·音视频
CHOTEST中图仪器8 小时前
光学3D表面轮廓仪中Rz代表什么?如何精准测量Rz?
3d·rz·微观形貌·3d光学轮廓仪
多恩Stone1 天前
【3DV 进阶-5】3D生成中 Inductive Bias (归纳偏置)的技术路线图
人工智能·python·算法·3d·aigc
网络改变中国1 天前
【2D/3D户型图编辑器实现-技术栈选择】附demo演示
3d·编辑器·户型图编辑器·户型图识别·户型图画板·墙体绘制
苏州知芯传感1 天前
赋能机器人精“准”触觉:MEMS 3D视觉在动态抓取与焊缝跟踪中的破局
3d·机器人
友思特 智能感知2 天前
友思特应用 | 基于高精度双目散斑 3D 相机的放射治疗视觉定位应用
3d·机器视觉·3d相机·医疗设备·医疗定位
武子康2 天前
AI研究-117 特斯拉 FSD 视觉解析:多摄像头 - 3D占用网络 - 车机渲染,盲区与低速复杂路况安全指南
人工智能·科技·计算机视觉·3d·视觉检测·特斯拉·model y