原文发布时间:2014-05-28
作者:毛毛虫
FME中的转换器KMLRegionSetter设置区域相关的属性。在介绍这个转换器之前,首先说明下KML中的几个概念。
1、 区域
区域是一个强大的KML 地图项,可让您向 Google 地球添加大型数据集,而不会降低其性能。只有当数据位于用户视图内且占用一定的屏幕部分时,区域才会加载并绘制该数据。通过区域,您可以为数据提供单独的细节级别,但只有当数据占用了足够显示细节的屏幕部分时,才会加载微妙的细节。
任何地图项都可以包含区域。区域会影响地标几何图形或叠加层图片的可见性。区域可定义受影响的几何图形或叠加层的剔除和细节级别行为。区域通过 KML 层次结构而继承,并影响在层次结构中较低层定义的地图项的可见性。
在区域中,<minLodPixels>和<maxLodPixels>元素可让您指定屏幕的区域(以方形像素为单位)。当数据投影到屏幕上时,所占用的屏幕区域必须大于<minLodPixels>且小于<maxLodPixels>,数据才可显示。区域的投影大小超出这些限制后,投影将不再可见,区域会变为非**状态。在特殊情况下,当您希望数据**到无限大时,可以为<maxLodPixels>指定?1(默认值)。
2、 边框
区域具有可定义数据边框的<LatLonAltBox>。边框是包括一组对象或数据点的范围。与GroundOverlay中的<LatLonBox>类似,区域中的<LatLonAltBox>包含东、西、南、北边界。如果区域包含的数据为3D或2D海拔,那么该区域的<LatLonAltBox>还需要包含最低海拔<minAltitude>和最高海拔<maxAltitude>。
(图片已丢失)
3、 细节级别 (LOD)
与区域关联的次要概念是细节级别,简称 LOD。由于计算机屏幕的空间有限,因此最有效的方法就是设置区域,从而只在像素足以充分显示数据时才加载大量数据。当区域占用相当小的一部分屏幕(可能因为用户正在从远处查看,或从倾斜角度查看平面区域)时,LOD 机制可让您(KML 编写者)指定低分辨率的数据集来替代全分辨率数据。此低分辨率数据集的加载速度更快,但由于它还是占用了一小部分屏幕,因此用户可能无法辨别其差异。
4、 淡变范围
您还可以为区域指定淡变范围,从而允许对象逐渐从透明过渡到不透明以及反向过渡。Google 地球使用“maxFadeExtent”来确定区域处于最大可见度时从完全透明到完全不透明的梯度,使用“minFadeExtent”来确定区域处于最小可见度时的淡出梯度。淡变范围是可选的,但它们可阻止不同分辨率的LineString或多边形之间的“弹出”效果。淡变对性能的影响较大,因此不应与图像一起使用。
下面看一下转换器KMLRegionSetter的相关设置:
通过上面对KML中区域的相关概念的介绍,可以看出转换器KMLRegionSetter中的参数是与KML中的概念对应的。
Region Bounding Box和Bounding Box Parameters两部分的参数设置对应了区域中的可定义数据边框的<LatLonAltBox>。
Display Criteria部分的参数Minimum Display Size和Maximum Display Size对应了<minLodPixels>和<maxLodPixels>。其中设置Maximum Display Size参数的值为-1,表示无限值。即一旦要素出现,进一步放大要素也不会再消失。
参数Minimum Fade Extent和Maximum Fade Extent对应“minFadeExtent”和“maxFadeExtent”,表示从透明到不透明及从不透明到透明的渐变。默认值0表示不使用淡变范围。