XML - 数据交换管理/谷歌地球
上一章 | 下一章 |
← OpenOffice.org 和 OpenDocument 格式 | acord → |
(此处的大多数内容直接引用自 KML 维基百科文章)
KML(Keyhole Markup Language,密钥孔标记语言)是一种基于 XML 的标记语言,用于管理 Google Earth、Google 地图、Google 移动、ArcGIS Explorer 和 World Wind 等程序中三维地理空间数据的显示。(“密钥孔”是 Google Earth 软件的早期名称;该软件由 Keyhole, Inc 生产,该公司于 2004 年被 Google 收购。 “密钥孔”这个词实际上是为了纪念 KH-11|KH 侦察卫星,这是最早的空中侦察系统,至今已有 30 多年的历史。)
KML 文件指定了一组功能(地标、图像、多边形、三维模型、文本描述等),用于在 Google Earth、地图和移动设备中显示。每个位置都有经度和纬度。其他数据可以使视图更具体,例如倾斜度、航向、高度,这些共同定义了一个“相机视图”。KML 与地理标记语言|GML[1] 有一些相同的结构语法。某些 KML 信息无法在 Google 地图或移动设备[2] 中查看。
KML 文件通常以 KMZ 文件的形式分发,KMZ 文件是带 .kmz 扩展名的压缩|压缩的 KML 文件。当解压缩 KMZ 文件时,会找到一个名为“doc.kml”的单个文件以及 KML 中引用的任何覆盖物和图标图像。
KML 文档示例
<?xml version="1.0" encoding="UTF-8"?> <kml xmlns="http://earth.google.com/kml/2.0"> <Placemark> <description>New York City</description> <name>New York City</name> <Point> <coordinates>-74.006393,40.714172,0</coordinates> </Point> </Placemark> </kml>
与 KML 关联的 MIME 类型为 application/vnd.google-earth.kml+xml。
与 KMZ 关联的 MIME 类型为 application/vnd.google-earth.kmz。
为了使 XML 文档识别 KML 特定的标记,您必须声明 KML 命名空间(列在下面)。
<kml xmlns="http://earth.google.com/kml/2.0">
您将在所有列出的示例文件中看到此声明。
为了查看本章中提供的示例,您需要将文本复制并粘贴到任何文本编辑器中。接下来,将文件保存为 .kml 文件。这可以通过选择“另存为”并使用 .kml 扩展名(您可能需要将名称用引号括起来,例如“test.kml”)命名文件来完成。
地标只是在 Google Earth 中根据坐标在确切位置创建可点击的针脚。这对于标记兴趣点或旅行的起点和终点很有用。
引言中的 KML 文档示例使用了 Placemark 标记。如果您想将地标移动到其他位置,您需要更改的只是坐标。
路径是一系列连接的坐标,可以使用线型进行编辑,以在 Google Earth 中获得更粗体的外观。高度和颜色可以调整,以获得更夸张的外观和更好的清晰度。
以下示例是从佐治亚州亚特兰大到田纳西州纳什维尔的路径。代码可能看起来有点复杂,但它主要只是样式/格式化标记,其中只有 4 个实际坐标接近末尾。因此,如果您想使用相同的样式墙但只是创建不同的路径,您需要做的就是更改坐标。
<?xml version="1.0" encoding="UTF-8"?> <kml xmlns="http://earth.google.com/kml/2.1"> <Document> <name>Paths</name> <description>Path from Atlanta to Nashville</description> <Style id="yellowLineGreenPoly"> <LineStyle> <color>7f00ffff</color> <width>4</width> </LineStyle> <PolyStyle> <color>7f00ff00</color> </PolyStyle> </Style> <Placemark> <name>Atlanta to Nashville</name> <description>Wall structured path</description> <styleUrl>#yellowLineGreenPoly</styleUrl> <LineString> <extrude>1</extrude> <tessellate>1</tessellate> <altitudeMode>absolute</altitudeMode> <coordinates> -84.40204442007513,33.75488573910702,83269 -84.37837132006098,33.82567285375923,83269 -84.79700041857893,35.30711817667424,83269 -86.79210094043326,36.15389499208452,83269 </coordinates> </LineString> </Placemark> </Document> </kml>
覆盖物是可以在 Google Earth 中通过坐标标记的区域上放置的图形。这些图形可以显示某个区域在不同时间点或特殊事件(例如火山喷发)时的外观。
此覆盖物示例来自 Google 的 KML 示例网页,显示了埃特纳火山在实际喷发时的样子。
<?xml version="1.0" encoding="UTF-8"?> <kml xmlns="http://earth.google.com/kml/2.1"> <Folder> <name>Ground Overlays</name> <description>Examples of ground overlays</description> <GroundOverlay> <name>Large-scale overlay on terrain</name> <description>Overlay shows Mount Etna erupting on July 13th, 2001.</description> <Icon> <href>http://code.google.com/apis/kml/documentation/etna.jpg</href> </Icon> <LatLonBox> <north>37.91904192681665</north> <south>37.46543388598137</south> <east>15.35832653742206</east> <west>14.60128369746704</west> <rotation>-0.1556640799496235</rotation> </LatLonBox> </GroundOverlay> </Folder> </kml>
您可以从代码中看到它获取图像 etna.jpg 并将其放置在列出的坐标上。
多边形是 Google Earth 的一个很酷的功能,它允许在 Google Earth 中的任何地方塑造三维形状。这些形状对于制作精美的演示文稿或仅仅向世界展示一个结构的真实外观很有用。
此示例是佐治亚州特纳球场(亚特兰大勇士队的主场)的多边形。多边形上没有样式,以保持代码简洁。
<?xml version="1.0" encoding="UTF-8"?> <kml xmlns="http://earth.google.com/kml/2.1"> <Placemark> <name>Turner Field</name> <Polygon> <extrude>1</extrude> <altitudeMode>relativeToGround</altitudeMode> <outerBoundaryIs> <LinearRing> <coordinates> -84.39024224888713,33.73459764262901,28 -84.38961532726215,33.73451197628319,28 -84.38830478530726,33.7350571795205,28 -84.38811742696677,33.73579651137399,28 -84.38856034410841,33.73618350237595,28 -84.38930790023139,33.73647497375488,28 -84.38997872537549,33.73655338302832,28 -84.39051294303495,33.73605785090994,28 -84.39056804786146,33.73528763589146,28 -84.39024224888713,33.73459764262901,28 </coordinates> </LinearRing> </outerBoundaryIs> </Polygon> </Placemark> </kml>
如您从代码中所见,多边形的 3D 形状是由经度和纬度坐标组成的,高度由坐标标记内的第三列值(在本例中为 28)确定。
Google Earth 是 Google 免费软件的名称,负责处理这些 KML 文档。它是一个由卫星图像拼接而成的虚拟世界,用户可以在其中以任何方式操控地球,以查看其景观、海洋和城市。
您可以在 此处 找到更多信息并下载该软件。
用户界面非常直观,即使是电脑小白用户也能轻松上手,立即开始探索。如果您愿意,可以完全忽略工具栏和按钮,只需单击并抓住地球,就可以随意摇动、旋转或滚动它。要放大,只需右键单击并向上或向下拖动,具体取决于您喜欢的“下落”速度。
如果您需要帮助查找位置,可以在“飞到...”搜索框中输入位置(以城市、州的形式)。然后,Google Earth 将围绕旋转并放大到输入的位置。如果您想进行虚拟度假,Google 在“飞到...”下方窗口中保存了一些预设位置,标记为“观光”。只需单击这些位置之一,您将被带到该位置,在那里您可以查看图片、文章和评论。
Google 已经为用户标记的兴趣点使用不同颜色的圆点和图标来标记。 这些可以点击查看各种信息,从简单的评论到该确切位置的全景照片。 对代码构成感兴趣的高级用户可以右键单击 Google 的任何标记并选择“复制”。 这将复制该功能的所有代码,您只需将其粘贴到文本文档中即可查看所有标签和引用。
- KML 文档
- 开发者知识库:Google 地球中的 KML
- KML 开发者支持小组
- KMLImporter 将地标导入 NASA World Wind
- 使用分层地图 (思维导图) 创建和管理 KML 文件 并将 Excel 数据转换为 KML。
- Google 地球连接插件 for ArchiCAD 9
- w:ar:كيه إم إل (阿拉伯语)
- w:de:Keyhole Markup Language (德语)
- w:es:KML (西班牙语)
- w:it:Keyhole Markup Language (意大利语)
- w:hu:Keyhole Markup Language (匈牙利语)
- w:nl:Keyhole Markup Language (荷兰语)
- w:pl:Keyhole Markup Language (波兰语)
- w:ru:KML (俄语)