KML输出

作者

dvaid假名(gmail.com上的david.kana)

作者

thomas.bonfort(gmail.com的thomas.bonfort)

作者

Yewondwossen Assefa(加州dmsolutions.ca的Yassefa)

作者

迈克尔·史密斯(美国陆军司令部的迈克尔·史密斯)

最后更新

2019-12-13

介绍

本文档的目的是描述最初在MapServer 6.0版本中添加的KML/KMZ输出支持。

KML驱动程序的主要目标是生成主要由GoogleEarth应用程序使用的KML输出。

一般功能

通过在映射文件中使用KML或kmz图像类型提供KML支持。然后可以使用MapServer cgi(示例mode=map)或通过WMS请求生成输出。

输出格式

输出格式的默认名称为kml或kmz,此名称可用于在映射文件中设置imagetype参数。

格式也可以在映射文件中定义:

OUTPUTFORMAT
  NAME kml
  DRIVER "KML"
  MIMETYPE "application/vnd.google-earth.kml+xml"
  IMAGEMODE RGB
  EXTENSION "kml"
  FORMATOPTION 'ATTACHMENT=gmap75.kml'  #name of kml file returned
  FORMATOPTION "maxfeaturestodraw=100"
END

OUTPUTFORMAT
  NAME kmz
  DRIVER "KMZ"
  MIMETYPE "application/vnd.google-earth.kmz"
  IMAGEMODE RGB
  EXTENSION "kmz"
  FORMATOPTION 'ATTACHMENT=gmap75.kmz'  #name of kmz file returned
END

构建

  • 在Windows上:nmake.opt中有一个标志KML

  • 在Linux上:--使用kml

  • KML驱动程序需要AGG驱动程序

  • 要获得kmz支持,至少需要针对GDAL1.8构建MapServer

限制功能数量

默认情况下绘制的矢量特征数设置为每层1000个。要控制功能的数量,用户可以设置:

  • 仅适用于层的层级元数据:“MaxFeaturesToDraw”“100”

  • 适用于所有层的地图级别Metada:“MaxFeaturesToDraw”“100”

  • 适用于所有层的输出格式选项:格式选项“MaxFeaturesToDraw=100”

地图

就KML对象而言,mapserverkml输出将生成一个<Document>元素来包含MapServer map文件中的所有层。文档支持的功能包括:

文档元素

支持

MapServer等效/注释

名称

是的

Mapfile 中的名称

能见度

如果需要,可以支持。默认值为1

打开

如果需要,可以支持。默认值为0

地址

可以支持,例如使用OWS地址(如果可用)

AddressDetails

音素

可以使用OWS支持?可使用ContactVoiceTelephone

片断

描述

AbstractView

TimePrimitive

样式URL

StyleSelector

是的

将支持样式元素。层中的所有不同样式都将存储在此处,并使用StyleURL从文件夹中引用。除了与功能相关的样式外,还有一个ListStyle元素添加在文档级别。这允许控制文件夹的显示方式。有关详细信息,请参阅层部分(styleurl)设置。

区域

元数据

ExtendedData

MapServer映射文件的每一层都将位于KML<Folder>元素中。支持的文件夹元素包括:

文件夹元素

支持

MapServer等效/注释

名称

是的

层的名称。如果不可用,名称将与层的索引(第1层)连接。

能见度

是的

始终设置为1

打开

默认值为0

atom:authorAtom:linkaddressAddressDetailsPhoneNumberSnippet

描述

可以使用OWS描述支持

AbstarctView

TimePrimitive

样式URL

是的

用户可以使用kml_文件夹_显示层或地图级别metedata来选择设置。可能的值为“check”(默认)、“radiofolder”、“checkoff only”、“checkhidechildren”。

RegionMetadataExtendedData

层中的每个元素都将位于KML<Placemark>元素中。如KML参考中所述:“位置标记是具有相关几何图形的特征。在Google Earth中,Placemark在Places面板中显示为列表项。带有点的Placemark有一个与其关联的图标,该图标在3D查看器中标记地球上的点。(在Google Earth 3D查看器中,点位置标记是唯一可以单击或滚动的对象。其他几何体对象在三维查看器中没有图标。要让用户在三维查看器中单击某些内容,需要创建一个包含点和其他几何体对象的多重几何体对象。)

对于多边形和线图层,当特征与标签关联时,将创建包含点几何图形和特征几何图形的多几何图形元素。点特征将位于多边形或直线的中间。

<Folder>
    <name>park</name>
    <visibility>1</visibility>
    <styleUrl>#LayerFolder_check</styleUrl>
    <Placemark>
      <name>Ellesmere Island National Park Reserve</name>
      <styleUrl>#style_line_ff787878_w4.0_polygon_ff00ffc8_label_ff0000ff</styleUrl>
      <MultiGeometry>
        <Polygon>
          <outerBoundaryIs>
            <LinearRing>
              <coordinates><Point>
          <coordinates>
      -70.86810858,82.12291871
      </coordinates>
        </Point>
      </MultiGeometry>
    </Placemark>
</Folder>

placemark元素中支持的功能包括:

Placemark元素

支持

MapServer等效/注释

名称

是的

附在特征上的标签。如果没有标签,则使用层名称和形状ID指定默认名称(例如park.1)

能见度

是默认设置为真

打开

地址

AddressDetails

音素

片断

这是功能的简短描述。如果需要,可以支持它。

描述

是的

当用户单击功能时,这些信息将显示在描述气球中。<description>元素支持纯文本以及HTML格式元素的子集。定义kml/ows_描述时使用

AbstractView

TimePrimitive

样式URL

是的

引用文档中定义的样式

StyleSelector

区域

元数据

ExtendedData

是的

在定义kml/ows_include_项时使用

几何图形

是的

取决于层类型

有关图层的一般注释

  • 每个层上的labelcache都已关闭

  • 应设置投影块。如果未设置,则假定数据在lat/lon投影中(将向用户发送一条调试消息:调试消息1)

  • 可以使用元数据将矢量层输出为栅格:“kml_outputsraster”“true”

  • 用户可以使用kml_文件夹_dsiplay层或地图级别metedata来选择设置。可能的值为“check”(默认)、“radiofolder”、“checkoff only”、“checkhidechildren”。

  • 用户可以使用元数据kml/ows-description或kml/ows-include-items定义附加到每个功能的描述。如果定义了kml/ows_描述,将使用placemark的<description>标记。如果kml/ows_包含_项,将使用<extendeddata>标记。

  • 用户可以使用元数据kml_name_项指示要为每个功能使用的字段名和名称标记。

  • 用户可以使用元数据kml_altitudemode指定如何解释<coordinates>元素中的高度分量。可能的值有:绝对值、相对值、钳位值。http://code.google.com/apis/kml/documentation/kmlreference.html_altitudemode

  • 用户可以使用metedata kml_extrude指定是否将Linearing连接到地面。http://code.google.com/apis/kml/documentation/kmlreference.html细分

  • 用户可以使用metedata kml镶嵌来指定是否允许线性化跟随地形。http://code.google.com/apis/kml/documentation/kmlreference.html挤出

  • 用户可以使用图层级别metedata指定要用作高程值的属性:“kml_elevation_attribute”“<name of attribute>”。写入坐标时,该值将用作Z值。

点图层

  • 每个层都将在一个文件夹元素中。

  • 每个特征将由一个位置标记表示。

  • 点图层的几何元素将表示为KML中的点几何元素。支持的元素有:

线层

  • 每个层都将在一个文件夹元素中。

  • 层中的每个特征都将由一个位置标记表示。

  • 如果将标签附着到线条上,几何图形元素将表示为包含一个linestring元素和一个表示标签位置的点元素的多几何图形。如果特征上没有附加标签,则几何图形元素将是一个线条字符串。

多边形层

  • 每个层都将在一个文件夹元素中。

  • 每个特征将由一个位置标记表示。

  • 如果标签附着到多边形上,几何体元素将表示为包含多边形元素和表示标签位置的点元素的多几何体。

栅格层

  • 每个层都将在一个文件夹元素中。

  • 将为图层创建一个groundoverlay功能,其中包括指向生成的栅格图像的href链接和范围(地图范围)的latlongbox。

  • 使用映射文件中的ImagePath和ImageURL设置生成Href。

造型

如第4节所述,来自层的所有不同样式将存储在文档级别,并使用样式URL从文件夹中引用。

点图层

点图层将使用KML的IconStyle样式元素进行样式设置。将创建表示符号的图像,并从IconStyle对象引用该图像。如果将标签附加到点,则还将使用LabelStyle元素。LabelStyle将设置颜色参数。

<Style id="style_label_ff0000ff_symbol_star_13.0_ff000000">
    <IconStyle>
      <Icon>
        <href>>http://localhost/ms_tmp/4beab862_19bc_0.png</href>
      </Icon>
    </IconStyle>
    <LabelStyle>
      <color>ff0000ff</color>
    </LabelStyle>
</Style>

线层

线条图层将使用KML的线条样式样式元素进行样式设置。将使用线型的颜色和宽度参数。如果将标签附加到层,则还将使用LabelStyle元素。

多边形层

多边形图层将使用KML的PolyStyle样式元素进行样式设置。将使用PolyStyle的颜色参数。如果在 Mapfile 中定义了轮廓,则将使用附加线型。如果将标签附加到层,则还将使用LabelStyle元素。

属性

如图层部分所述,定义描述的两种方法:

  • kml/ows_description

  • kml/ows_include_items

坐标系

地图级别的投影应设置为epsg:4326。如果未设置,驱动程序将自动设置。如果层的投影与epsg:4326不同,则预计层会有投影块。

警告和错误消息

  • 当 Mapfile 的投影未设置或与lat/lon投影不同时,驱动程序会自动将投影设置为espg:4326。如果映射是调试模式,则发送以下消息:“kmlrenderer::checkprojection:mapfile projection set to epsg:4326”

  • 如果Web对象中未设置ImagePath和ImageURL,则在调试模式下发送以下消息:“kmlrenderer::startnewlayer:ImagePath和ImageURL应在Web对象中设置。”