Как найти квад / имя / масштаб с сервера USGS Terra

В настоящее время я работаю над разработкой реализации API Карт Google, которая накладывает топографические данные с USGS Terra Server. Я думаю, что у меня это под рукой, за исключением того, что я не могу понять, как определить имя квадрата, имя и масштаб для текущей плитки, обслуживаемой Terra Server. Если вы просматриваете этот сайт и увеличиваете карту, эта информация отображается так, чтобы это было возможно:

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

Вот ссылки на некоторые статьи, в которых объясняется, как Terra Server называет изображения:

О MSR Maps

СТАНДАРТИЗИРОВАННЫЕ НАЗВАНИЯ ДАННЫХ ДЛЯ DRG-ПРОДУКТОВ

Я надеюсь, что какой-то эксперт по геолокации там уже сделал это и может направить меня в правильном направлении. Я был бы признателен, если бы вы могли дать мне какие-либо подсказки о том, как я могу определить эту информацию из текущего вида карты при наложении данных топографических данных USGS на Карты Google, чтобы создать пользовательский интерфейс, очень похожий на пример карты.

Заранее спасибо за помощь!

2 ответа

Вы можете использовать OGC Style Web Map Server, который также размещает Microsoft. Они имеют относительно простую структуру широты / долготы / масштаба для извлечения данных, вместо того, чтобы гадать о числах. Вот URL для Aerial. Переменная Scale s варьируется от 11 до 21. Переменная t позволяет вам выбирать между Aerial и Topos. Установите t = 2 для Topos - вот URL Topo.

Чтобы получить имя квадрата, ссылку на карту и т. Д. Вам нужно будет проиндексировать топос и построить базу данных. Если у вас есть Topos на CD, и они в формате Tiff, вы можете использовать GDALTindex для построения этого индекса. Помимо этого ваши запросы сводятся к типу Point-in-Polygon, который вы можете выполнить с помощью Net Topology Suite.

Поскольку не существует простого интуитивного отображения для всех различных наборов карт и масштабов, лучше всего будет использовать предварительно вычисленный индекс.

Gdaltindex может индексировать tif-файлы и создавать индекс в формате Shapefile. Это может быть отображено в геометрии MySQL с помощью поддержки Ogr MySQL.

В этом примере сервер trails.com доставляет пользовательские изображения плиток через собственный CDN и отображает их поверх Google Maps с помощью.NET WebHandler.

Поскольку вам нужны данные, поступающие с 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);
Другие вопросы по тегам