地理配准插件

地理配准,是指将模型地理位置与实际的地理坐标系统进行匹配的过程。

地理配准插件

地理配准,是指将模型地理位置与实际的地理坐标系统进行匹配的过程。

在场景中,我们可以通过传入的模型基准点数据,绘制包围盒来定位模型;通过移动模型基准点,来更新图层上的包围盒位置。

1. 功能说明

地理配准插件的主要功能就是获取并更新图层上模型基准点的地理位置坐标。具体功能可参考后续方法,其中有详细的介绍和使用。

2. 构造

在SDK中实例化地理配准插件,代码示例如下:

const georeferencingPlugin = new ubm.GeoreferencingPlugin()

3. 属性

属性类型可选说明
isShowHandleboolean---是否显示操作手柄,默认显示

3.1 操作手柄

可控制初始化是否显示模型基准点的操作手柄,true:显示,false:隐藏,代码示例如下:

georeferencingPlugin.model.isShowHandle = true

4. 方法

方法说明
draw()绘制指定图层
transform()基准点位置变换
update()监听基准点更新
clear()清除几何
hideObb()隐藏指定图层的包围盒
showObb()显示指定图层的包围盒
preview()预览更新位置后的包围盒和基准点
reset()重置指定图层的基准点

4.1 绘制指定图层

draw(layer: ILayer, option?: IDrawOption): Promise<IGeoreferencingData>
  • 参数layer,可参考模型基础进行了解使用,当前只支持BIM模型
  • 参数option的数据类型IDrawOption的数据结构如下:
interface IDrawOption {
  // 包围盒选项
  boundingBox: IGeoreferencingBoundingBox
  // 基准点选项
  originalPoint: IGeoreferencingPoint
}
  • 包围盒选项boundingBox的数据结构如下:
interface IGeoreferencingBoundingBox {
  // 包围盒颜色, 默认值'rgba(180, 246, 218, 0.35)'
  color?: string
  // 是否绘制包围盒, 默认为false
  show?: boolean
}
  • 基准点originalPoint的数据结构如下:
interface IGeoreferencingPoint {
  // 基准点颜色, 默认为 'red'
  color?: string
  // 基准点尺寸, 默认为1
  size?: number
  // 基准点数据
  data?: IGeoreferencingData
}
  • 基准点数据IGeoreferencingData的数据结构如下:
interface IGeoreferencingData {
  // 纬度
  latitude: number
  // 经度
  longitude: number
  // 高度
  z: number
  // 坐标系
  wkid: number
  // 角度
  angle: number
}
  • 绘制指定图层,then之后得到基准点数据,代码示例如下:
georeferencingPlugin.model.draw(layer, { boundingBox: { show: true} }).then((res) => {console.log('res', res);})

4.2 基准点位置变换

transform(layer: ILayer, data: IGeoreferencingData): void

基准点位置变换,需传入更新的基准点数据,代码示例如下:

georeferencingPlugin.model.transform(layer, {
  "latitude": 39.9074723423126,
  "longitude": 116.39334676607142,
  "z": 80,
  "wkid": 4326,
  "angle":45
})

4.3 监听基准点更新

update(calllback: (res: IPointTranform) => void): void
  • 更新的基准点数据IPointTranform的数据结构:
interface IPointTranform {
  // 更新状态 
  status: IUpdateStatus
  // 更新的数据
  transform: IGeoreferencingData
  // 图形id
  layerId: string
}
  • 更新状态数据结构:
type IUpdateStatus = 'start' | 'doing' | 'stop'
  • 可从方法draw()的回调函数中获取更新的基准点数据,代码示例如下:
georeferencingPlugin.model.update((res) => {
  console.log("res",res)
  if(res.status === 'stop'){
    console.log('update', res);
  }
})

4.4 清除

clear(layer: ILayer, type?: string): void

参数type:包围盒'obb' | 基准点'point',如果不设置,则当前图层两者都清除

清除全部,代码示例如下:

georeferencingPlugin.model.clear(layer)

4.5 隐藏包围盒

hideObb(layer: ILayer): void

隐藏指定图层的包围盒,代码示例如下:

georeferencingPlugin.model.hideObb(layer)

4.6 显示包围盒

showObb(layer: ILayer): void

显示指定图层的包围盒,代码示例如下:

georeferencingPlugin.model.showObb(layer)

4.7 更新预览

preview(layer: ILayer): void

预览更新位置后的包围盒和基准点,代码示例如下:

georeferencingPlugin.model.preview(layer)

4.8 重置

reset(layer: ILayer): void

把移动后的包围盒和基准点重置回初始化加载时的状态,代码示例如下:

georeferencingPlugin.model.reset(layer)

BIMFlux AI