如何从 USGS Terra 服务器中查找四边形/名称/比例

Posted

技术标签:

【中文标题】如何从 USGS Terra 服务器中查找四边形/名称/比例【英文标题】:How To Find Quad/Name/Scale From USGS Terra Server 【发布时间】:2010-08-06 15:56:25 【问题描述】:

我目前正在开发一个覆盖来自 USGS Terra Server 的地形数据的 Google Maps API 实现。我想我已经掌握了它,除了我无法弄清楚如何确定 Terra Server 提供的当前图块的四边形名称、名称和比例。如果您查看此站点并放大显示信息的地图,那么它一定是可能的:

http://www.trails.com/topomap.aspx?trailid=fgu003-087

这里是一些文章的链接,这些文章解释了 Terra Server 如何命名图像:

About MSR Maps

STANDARDIZED DATA SET NAMES FOR DRG PRODUCTS

我希望那里的一些 geoloc 专家已经做到了这一点,并且可以为我指明正确的方向。如果您能给我任何线索,我将不胜感激,当您将 USGS 地形数据覆盖在 Google 地图上以产生与示例地图非常相似的用户体验时,如何从当前地图视图中确定此信息。

提前感谢您的帮助!

【问题讨论】:

【参考方案1】:

您可以使用 Microsoft 也托管的 OGC 样式 Web 地图服务器。这些具有用于获取数据的相对简单的纬度/经度/比例结构,而不是让您猜测数字。这是Aerial 的网址。 Scale 变量 s 的范围为 11-21。 t 变量允许您在 Aerial 和 Topos 之间进行选择。为 Topos 设置 t=2 - 这里是Topo URL。

要获得四边形名称和地图参考等。您必须索引地形并建立数据库。如果您有 CD 上的 Topos 并且它们是 Tiff 格式,您可以使用 GDALTindex 来构建此索引。除此之外,您的查询将减少为 Point-in-Polygon 类型,您可以使用 Net Topology Suite 执行该类型。

由于没有针对所有不同地图集和比例尺的简单直观映射,因此预先计算的索引将是最好的方法。

Gdaltindex 可以索引 tif 文件并生成 Shapefile 格式的索引。这可以使用Ogr mysql 支持映射到MySQL Geometries。

【讨论】:

正如我在回复@jojaba 时提到的,获取瓷砖是微不足道的,而不是我需要帮助的。我想知道如何计算任何特定纬度和经度点的四边形、名称和比例。我想这样做的原因是用户可以知道要参考什么 USGS 地形来查看相同的数据。感谢您的帮助! 所以你需要一个理由来说明为什么 USGS 地形以它们的方式命名。我相信您必须将 latlon 转换为 UTM 并从那里开始。 我已经用一些关于地图索引的指针扩展了我的答案。希望这会有所帮助。 有什么方法可以在 MySQL 中构建索引,以便我们在从 USGS 而不是从本地存储或 CD 中提取图块时可以查询它?对于您建议我们如何构建索引,我仍然有点模糊,因此,如果您能提供一些关于我们如何使用可公开访问的 USGS 切片数据执行此操作的额外说明,我将不胜感激。谢谢! 我将用 mysql 提示扩展我的答案。【参考方案2】:

在示例中,trails.com 服务器通过自己的CDN 提供自定义图块图像,并使用 .NET WebHandler 在 Google 地图上显示这些图块。

由于您需要来自 MSRMaps.com 而不是 [Trails.com][3] 的数据,因此您将指向 MSRMaps.com WebHandler。

以下是 Trails 的做法。将 getTileUrl 函数替换为调用 msrmaps.com 服务器的函数,例如 MSR Tile Link

var layer = new GTileLayer(new GCopyrightCollection(''), 1, 21);
layer.getTileUrl = function(a, b) 

    var ll = G_NORMAL_MAP.getProjection().fromPixelToLatLng(new GPoint(a.x * 256, (a.y + 1) * 256), b);
    var ur = G_NORMAL_MAP.getProjection().fromPixelToLatLng(new GPoint((a.x + 1) * 256, a.y * 256), b);
    return "http://cdn-www.trails.com/services/TopoGetGoogleMapTile.ashx?z=" + b + "&style=drgsr&ll=" + ll.y + "," + ll.x + "&ur=" + ur.y + "," + ur.x;

var map = new GMap2(document.getElementById("map"));
map.setCenter(new GLatLng(37.4419, -122.1419), 13);
map.setUIToDefault();
var mapType = new GMapType([layer], G_NORMAL_MAP.getProjection(), 'Trails',  errorMessage: google.mapError, textColor: "white", linkColor: "white" );
map.addMapType(mapType);
map.setMapType(mapType);

【讨论】:

我可以毫无问题地检索完全按照您描述的方式完成的实际图块。如果您重新阅读我的问题,我需要帮助的问题是如何确定特定纬度/经度点的四边形、名称和比例。您有什么想法可以从 MSR API 中获得这些信息吗?

以上是关于如何从 USGS Terra 服务器中查找四边形/名称/比例的主要内容,如果未能解决你的问题,请参考以下文章

如何从 terra SpatRaster 构建 lon、lat、值数据框

从 xyz 坐标中查找多边形的面积

Terra从分类栅格中提取不正确的值

如何提取两个点之间的文本

如何在 Elasticsearch 中查找包含给定点的多边形

为啥 terra 包在使用提取功能时会删除这些值?