5

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

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

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

关于 MSR 地图

DRG 产品的标准化数据集名称

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

在此先感谢您的帮助!

4

2 回答 2

1

您可以使用 Microsoft 也托管的 OGC Style Web Map Server。这些具有用于获取数据的相对简单的纬度/经度/比例结构,而不是让您猜测数字。这是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 几何。

于 2010-09-07T18:06:55.077 回答
0

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

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

下面是小径是如何做到的。将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);
于 2010-08-31T00:15:25.823 回答