我目前正在开发一个Google Maps API实现,该实现覆盖了USGS Terra Server的地形数据。我认为除了我无法弄清楚如何确定四元组名称,名称和&从Terra Server提供的当前磁贴的比例。如果您查看此站点并放大显示信息的地图,则必须可以:
http://www.trails.com/topomap.aspx?trailid=fgu003-087
以下是一些文章的链接,这些文章解释了Terra Server如何命名图像的方式:
STANDARDIZED DATA SET NAMES FOR DRG PRODUCTS
我希望那里的一些地理专家已经做到了这一点,并且可以指出我正确的方向。如果您能够通过Google地图覆盖USGS拓扑数据以产生类似于示例地图的用户体验,我可以向您提供有关如何从当前地图视图中确定此信息的任何线索。
提前感谢您的帮助!
答案 0 :(得分:1)
您可以使用Microsoft也托管的OGC样式Web地图服务器。它们具有相对简单的lat / lon / scale结构来获取数据,而不是让你猜测数字。这是Aerial的网址。 Scale变量s的范围是11-21。 t变量允许您在Aerial和Topos之间进行选择。为Topos设置t = 2 - 这是Topo URL。
获取四元组名称和地图参考等。您必须索引topos并构建数据库。如果CD上有Topos并且它们是Tiff格式,则可以使用GDALTindex来构建此索引。除此之外,您的查询会缩减为多边形点类型,您可以使用Net Topology Suite执行该操作。
由于所有不同的地图集和比例都没有简单的直观映射,因此预先计算的索引将是最好的方法。
Gdaltindex可以索引tif文件并生成Shapefile格式的索引。可以使用MySQL Geometries支持将其映射到Ogr MySQL。
答案 1 :(得分:0)
在该示例中,trails.com服务器通过他们自己的CDN提供自定义图块图像,并使用.NET WebHandler在Google Maps顶部显示这些图块。
由于您需要来自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);