FME中KML的镜头和视点的设置
原文发布时间:2014-05-28
作者:毛毛虫
下面先介绍下KML中视点<LookAt>和镜头<Camera>元素的相关概念。
1、 视点元素
<LookAt>元素用于指定地球上正被查看的点、景点与视点间的距离以及视图的角度。该元素的语法如下:
<LookAt id="ID">
<longitude></longitude><!--指定从-180到180的经度值-->
<latitude></latitude><!--指定从-90到90的纬度值-->
<altitude>0</altitude><!—描述当前视点的海拔,以米为单位-->
<range></range><!--视点与景点的距离-->
<tilt>0</tilt><!--代表视点到指定点的角度(视角)-->
<heading>0</heading><!--当前视角在水平面上的投影和正北的夹角-->
<altitudeMode>clampToGround</altitudeMode><!--kml:高程模式 -->
</LookAt>
下图展示了<LookAt>视点的构建方式:
<LookAt> 元素可指定以下问题的答案:
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。如果不是,请旋转镜头(旋转值范围为0到180°),来指定绕X轴旋转的角度(<tilt>值可以为负值,但这会导致视图上下颠倒)。 |
通过镜头观看景物时,镜头是否水平? |
如果是,则使用默认的<roll>值0。请注意:<roll>用作<Camera>的子元素时,其值通常为0。 |
下图显示了附加到虚拟镜头的 X、Y 和 Z 轴。
- X 轴指向镜头右侧,称为“向右矢量”。
- Y 轴定义相对于屏幕的“向上”方向,称为“向上矢量”。
- Z 轴从屏幕的中心指向视点(镜头沿着 ?Z 轴方向俯瞰),称为“查看矢量”。
3、 <Camera>和<LookAt>之间的区别
<Camera>元素可以让您更加灵活地指定视图。最重要的是,您可以倾斜镜头视图,以便越过地平线观察星空。<Camera>可以提供全面而*的视角,以全景六度来控制视图,因此您可以在空间中定位镜头,然后将它绕着 X、Y 和 Z 轴旋转。如果未指定旋转值,则这两个元素的作用是相同的。
4、 AbstractView中的时间
<Camera>和<LookAt>均可包含时间信息,时间信息会对历史图像、光照以及标有时间的所有对象产生影响。在AbstractView内使用<gx:TimeSpan>或<gx:TimeStamp>可以在 Google 地球中跨空间和时间飞到特定地点。
下面看一下FME中设置<Camera>和<LookAt>的转换器KMLViewSetter。
Location参数类中的Longitude, Latitude, Altitude和Altitude Mode分别对应了KML中的longitude、latitude、altitude和altitudeMode对应,表示视点或镜头的经度、纬度、高度和高程模式。
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_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> |