【问题标题】:How do fetch data from a KML server using Python? [closed]如何使用 Python 从 KML 服务器获取数据? [关闭]
【发布时间】:2020-09-29 20:21:14
【问题描述】:

本质上,我试图通过 Python 脚本模仿 Google 地球的行为,以从 NetworkLink 获取数据。阅读documentation,我发现我需要使用 BBOX 变量提供一个边界框。但是,似乎我需要在数据的初始请求之后请求这个。

关于如何在 Google 地球之外索取这些数据有什么建议吗?

【问题讨论】:

    标签: python kml google-earth


    【解决方案1】:

    可以将 Google 地球专业版视为一种专门的网络浏览器,它可以获取除图像之外的 KML 和 KMZ 内容,并在 3D 地球环境中呈现该内容。在幕后,Google 地球会根据当前视图和 KML 内容(例如 NetworkLinks)构建 URL。在 NetworkLink 中调用 URL 的 Python 代码需要模仿 Google 地球调用目标 URL 的操作。

    如果目标 KML NetworkLink 具有 viewFormathttpQuery 元素,则获取的实际 URL 将根据指定的参数进行更新。 viewFormathttpQuery 定义了一个带有命名字段的模板,这些字段用适当的值填充并附加到 URL。

    具有目标 href 和 viewFormat 的示例 NetworkLink 定义。

    <NetworkLink>
        <Link>
            <href>http://www.example.com/kml</href>         
            <viewFormat>BBOX=[bboxWest],[bboxSouth],[bboxEast],[bboxNorth]</viewFormat>
        </Link>
    </NetworkLink>
    

    字符串BBOX=[bboxWest],[bboxSouth],[bboxEast],[bboxNorth] 是一个模板,它将替换括号中的命名参数以获得适当的值,并将结果附加到目标 URL 的查询字符串。表达式 [bboxWest] 和 [bboxEast] 替换为查看边界框的西经和东经值,[bboxNorth] 和 [bboxSouth] 替换为视图中的最大和最小纬度值。

    这是需要通过 HTTP GET 请求获取的实际 URL 的示例。

    http://www.example.com/kml?BBOX=-180,-90,180,90
    

    可以出现在 viewFormat 元素中的参数列表。

    • [lookatLon], [lookatLat] - 点的经度和纬度 正在观看
    • [lookatRange]、[lookatTilt]、[lookatHeading] - 元素使用的值(参见&lt;range&gt; 的描述, &lt;tilt&gt;&lt;heading&gt;&lt;LookAt&gt; KML 元素中)
    • [lookatTerrainLon], [lookatTerrainLat], [lookatTerrainAlt] - &lt;LookAt&gt; 正在查看的地形上的点(以度/米为单位)
    • [cameraLon]、[cameraLat]、[cameraAlt] - 相机视点的度/米
    • [horizFov], [vertFov] - 相机的水平、垂直视野
    • [horizPixels], [vertPixels] - 3D 查看器的大小(以像素为单位)
    • [terrainEnabled] - 指示 3D 查看器是否显示地形

    包含 viewFormat 和 httpClient 元素的更复杂的 NetworkLink 示例。

    <NetworkLink>
        <Link>
            <href>http://www.example.com/kml</href>
            <viewFormat>BBOX=[bboxWest],[bboxSouth],[bboxEast],[bboxNorth];
                CAMERA=[lookatLon],[lookatLat],[lookatRange],[lookatTilt],[lookatHeading];
                VIEW=[horizFov],[vertFov],[horizPixels],[vertPixels],[terrainEnabled];
                LOOKAT=[lookatTerrainLon],[lookatTerrainLat],[lookatTerrainAlt]
            </viewFormat>
            <httpQuery>client=[clientVersion],[kmlVersion],[clientName],[language]</httpQuery>
        </Link>
    </NetworkLink>
    

    这是一个可用于容纳上述 NetworkLink 的 URL。

    http://www.example.com/kml?client=7.3.3.7786,2.2,Google+Earth+Pro,en&
      BBOX=-180,-90,180,90;CAMERA=0,0,0,0,0;VIEW=0,0,0,0,0;LOOKAT=0,0,0
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-13
      • 2017-06-19
      • 2019-12-12
      • 1970-01-01
      • 2011-12-06
      • 1970-01-01
      • 2018-10-26
      相关资源
      最近更新 更多