【发布时间】:2020-09-29 20:21:14
【问题描述】:
本质上,我试图通过 Python 脚本模仿 Google 地球的行为,以从 NetworkLink 获取数据。阅读documentation,我发现我需要使用 BBOX 变量提供一个边界框。但是,似乎我需要在数据的初始请求之后请求这个。
关于如何在 Google 地球之外索取这些数据有什么建议吗?
【问题讨论】:
标签: python kml google-earth
本质上,我试图通过 Python 脚本模仿 Google 地球的行为,以从 NetworkLink 获取数据。阅读documentation,我发现我需要使用 BBOX 变量提供一个边界框。但是,似乎我需要在数据的初始请求之后请求这个。
关于如何在 Google 地球之外索取这些数据有什么建议吗?
【问题讨论】:
标签: python kml google-earth
可以将 Google 地球专业版视为一种专门的网络浏览器,它可以获取除图像之外的 KML 和 KMZ 内容,并在 3D 地球环境中呈现该内容。在幕后,Google 地球会根据当前视图和 KML 内容(例如 NetworkLinks)构建 URL。在 NetworkLink 中调用 URL 的 Python 代码需要模仿 Google 地球调用目标 URL 的操作。
如果目标 KML NetworkLink 具有 viewFormat 或 httpQuery 元素,则获取的实际 URL 将根据指定的参数进行更新。 viewFormat 和 httpQuery 定义了一个带有命名字段的模板,这些字段用适当的值填充并附加到 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 元素中的参数列表。
<range> 的描述,
<tilt> 和 <heading> 在<LookAt> KML 元素中)<LookAt> 正在查看的地形上的点(以度/米为单位)包含 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
【讨论】: