2010-08-06 2 views
5

Ich arbeite derzeit an der Entwicklung einer Google Maps API-Implementierung, die topografische Daten von USGS Terra Server überlagert. Ich denke, ich habe es ziemlich in der Hand, außer dass ich nicht herausfinden kann, wie man den Namen des Quads, Name, & Maßstab für die aktuelle Kachel von Terra Server serviert. Wenn Sie diese Seite überprüfen und Zoom in der Karte, die Informationen angezeigt werden, so muss es möglich sein:So finden Sie Quad/Name/Skala von USGS Terra Server

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

Hier sind einige Links zu Artikeln, die mehr wie die Bilder benannt werden von Terra Server erklärt:

About MSR Maps

STANDARDIZED DATA SET NAMES FOR DRG PRODUCTS

ich hoffe, dass einige Geoloc Experten da draußen dies bereits getan hat und mich in die richtige di zeigen kann rektion. Ich würde mich freuen, wenn Sie mir Hinweise geben könnten, wie ich diese Informationen aus der aktuellen Kartenansicht ermitteln könnte, wenn Sie die USGS-Topo-Daten über Google Maps überlagern, um eine ähnliche Benutzererfahrung zu erzielen.

Vielen Dank im Voraus für Ihre Hilfe!

Antwort

0

In diesem Beispiel liefert der Server "trails.com" die benutzerdefinierten Kachelabbilder über ihre eigenen CDN und zeigt diese Kacheln mithilfe eines .NET WebHandlers über Google Maps an.

Da Sie die Daten von MSRMaps.com und nicht von [Trails.com] [3] benötigen, zeigen Sie stattdessen den WebHandler MSRMaps.com an.

Unten ist, wie Trails es tut. Ersetzen Sie die getTileUrl Funktion mit etwas, das einen Aufruf an den msrmaps.com Server statt, wie 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); 
+0

Ich habe kein Problem beim Abrufen der tatsächlichen Fliesen, die genau ausgeführt wird, wie Sie es beschreiben. Wenn Sie meine Frage erneut lesen, ist das Problem, mit dem ich Hilfe benötige, wie man herausfinden kann, was Quad, Name und Maßstab für einen bestimmten Längen-/Breitengrad sind. Irgendwelche Ideen, wie Sie das von der MSR API bekommen könnten? –

1

Sie können mit der OGC Stil Web Map Server Microsoft beherbergt auch macht. Diese haben eine relativ einfache lat/lon/scale-Struktur zum Abrufen von Daten, anstatt Sie über die Zahlen raten zu lassen. Hier ist eine URL für Aerial. Die Skalierungsvariable s reicht von 11-21. Die Variable t lässt Sie zwischen Aerial und Topos wählen. Setze t = 2 für Topos - hier ist Topo URL.

Um den Quad-Namen und die Kartenreferenz usw. zu erhalten, müssen Sie die Topos indizieren und eine Datenbank erstellen. Wenn Sie die Topos auf einer CD haben und sie im Tiff-Format vorliegen, können Sie diesen Index mit GDALTindex erstellen. Darüber hinaus reduzieren sich Ihre Abfragen auf den Punkt-in-Polygon-Typ, den Sie mit Net Topology Suite ausführen können.

Da es keine einfache intuitive Zuordnung für die verschiedenen Kartensätze und Maßstäbe gibt, ist ein vorberechneter Index der beste Weg.

Gdaltindex kann TIF-Dateien indexieren und einen Index im Shapefile-Format erzeugen. Dies kann in MySQL Geometries mit Ogr MySQL Unterstützung abgebildet werden.

+0

Wie ich in meiner Antwort auf @jojaba erwähnt habe, ist das Abrufen der Kacheln trivial und nicht das, was ich brauche Hilfe mit.Ich möchte wissen, wie man den Quad, den Namen und die Skala für einen bestimmten Längen- und Breitengrad herausfinden kann. Der Grund, warum ich das tun möchte, ist, dass Benutzer wissen können, was USGS topografisch referenziert, um dieselben Daten zu betrachten. Danke für Ihre Hilfe! –

+0

Sie brauchen also einen Grund warum USGS Topos so genannt werden wie sie sind. Ich glaube, du musst Latlon zu UTM konvertieren und von dort aus gehen. – whatnick

+0

Ich habe meine Antwort mit ein paar Tipps zur Map-Indizierung erweitert. Hoffe das hilft. – whatnick