FME中KML的镜头和视点的设置

原文发布时间:2014-05-28

作者:毛毛虫

下面先介绍下KML中视点<LookAt>和镜头<Camera>元素的相关概念。

1、  视点元素

<LookAt>元素用于指定地球上正被查看的点、景点与视点间的距离以及视图的角度。该元素的语法如下:

<LookAt id="ID">

<longitude></longitude><!--指定从-180180的经度值-->

<latitude></latitude><!--指定从-9090的纬度值-->

<altitude>0</altitude><!—描述当前视点的海拔,以米为单位-->

<range></range><!--视点与景点的距离-->

<tilt>0</tilt><!--代表视点到指定点的角度(视角)-->

<heading>0</heading><!--当前视角在水平面上的投影和正北的夹角-->

<altitudeMode>clampToGround</altitudeMode><!--kml:高程模式 -->

</LookAt>

下图展示了<LookAt>视点的构建方式:

FME中KML的镜头和视点的设置

<LookAt> 元素可指定以下问题的答案:

FME中KML的镜头和视点的设置

2、  镜头元素

<Camera>元素可以在空间中的任意位置定位视点,并且可以沿任意方向旋转视图。该元素的语法如下:

<Camera id="ID">

<longitude>0</longitude>

<latitude>0</latitude>

<altitude>0</altitude>

<heading>0</heading>

<tilt>0</tilt>

<roll>0</roll>

<altitudeMode>clampToGround</altitudeMode>

</Camera>

<Camera>元素可指定以下问题的答案:

问题

<Camera>中的规范

镜头位于空间中的什么位置?

将镜头放置在由<longitude><latitude><altitude><altitudeMode>指定的点处。通常情况下,将镜头放置在地面上不是明智的做法。

镜头的朝向能否确保视图是北面朝上?

如果是,则使用默认的<heading>0。如果不是,请参照罗盘的点旋转镜头,旋转值范围为0(不含)到360°

镜头方向是否直指地球?

如果是,则使用默认的<tilt>0。如果不是,请旋转镜头(旋转值范围为0180°),来指定绕X轴旋转的角度(<tilt>值可以为负值,但这会导致视图上下颠倒)。

通过镜头观看景物时,镜头是否水平?

如果是,则使用默认的<roll>0。请注意:<roll>用作<Camera>的子元素时,其值通常为0

下图显示了附加到虚拟镜头的 X Z 轴。

  • 轴指向镜头右侧,称为向右矢量
  • 轴定义相对于屏幕的向上方向,称为向上矢量
  • 轴从屏幕的中心指向视点(镜头沿着 ?Z 轴方向俯瞰),称为查看矢量
FME中KML的镜头和视点的设置

3、  <Camera><LookAt>之间的区别

<Camera>元素可以让您更加灵活地指定视图。最重要的是,您可以倾斜镜头视图,以便越过地平线观察星空。<Camera>可以提供全面而*的视角,以全景六度来控制视图,因此您可以在空间中定位镜头,然后将它绕着 X Z 轴旋转。如果未指定旋转值,则这两个元素的作用是相同的。

4、  AbstractView中的时间

<Camera><LookAt>均可包含时间信息,时间信息会对历史图像、光照以及标有时间的所有对象产生影响。AbstractView内使用<gx:TimeSpan><gx:TimeStamp>可以在 Google 地球中跨空间和时间飞到特定地点。


下面看一下FME中设置<Camera><LookAt>的转换器KMLViewSetter

FME中KML的镜头和视点的设置

 Location参数类中的Longitude, Latitude, AltitudeAltitude Mode分别对应了KML中的longitudelatitudealtitudealtitudeMode对应,表示视点或镜头的经度、纬度、高度和高程模式。

View参数类设置了镜头或视点的相关方向设置。

Time参数对应时间信息的设置。

对于LookAt元素,相关的属性如下:

    • kml_lookat_longitude (必须),对于<LookAt>元素的<longitude>
    • kml_lookat_latitude (必须对应<LookAt>元素的<latitude>
    • kml_lookat_altitude对应LookAt元素的<altitude>
    • kml_lookat_altitude_mode对应LookAt元素的<altitudeMode>
    • kml_lookat_heading对应LookAt元素的<heading>
    • kml_lookat_tilt对应LookAt元素的<tilt>
    • kml_lookat_range对应LookAt元素的<range>

对于Camera元素,定义了“全景六度”虚拟相机视图元素。相关属性如下:

KML 元素属性

KML 元素

kml_camera_longitude

<Camera><longitude>

kml_camera_latitude

<Camera><latitude>

kml_camera_heading

<Camera><heading>

kml_camera_altitude

<Camera><altitude>

kml_camera_tilt

<Camera><tilt>

kml_camera_roll

<Camera><roll>

kml_camera_altitude_mode

<Camera><altitudeMode>

kml_gx_camera_altitude_mode

<Camera><gx:altitudeMode>