Thema: Luftaufnahmen
Einzelnen Beitrag anzeigen
 
Alt 16.05.2013, 20:34
oanavodo oanavodo ist offline
NaviBoard Mitglied
 
Registriert seit: 12.04.2010
Beiträge: 79
Microsoft Bing Luftbilder mit CompeGPS Land

Microsoft Bing Luftbilder mit CompeGPS Land (Teil 1, Vorbereitung)

Man braucht dazu einen lokalen HTTP-Proxy, der die die Url der HTTP-Requests von CGPSL in Abfragen des VirtualEarth-Tileserver umwandelt. Ich muss dazu noch sagen, dass bei Aktivierung des Proxies sämtliche HTTP-Anfragen auf dem System über den Proxy laufen, also auch die des Browsers und anderer Applikationen. Eine Alternative wäre, dass sich der Proxy nicht als Systemproxy einhängt und dann nur CGPSL darüber seine Requests abschickt. Aber CGPSL bietet in seiner Konfiguration keine Möglichkeit einen Proxy anzugeben, so dass ich nicht weiss, wie ich das Programm dazu bewegen soll über den lokalen Proxy zu gehen.

  1. Falls Microsoft .NET Frameworks 4.0 noch nicht auf dem System ist, von http://www.microsoft.com/de-de/downl...aspx?id=177183 downloaden und installieren. Danach Windowsupdate bemühen, um die vorhandenen Updates für das Framework einzuspielen.
  2. Downloaden des Fiddler Web Debugging Proxy von http://fiddler2.com und Fiddler installieren.
  3. Fiddler starten und STRG-R eingeben. Es erscheint ein separates Editorfenster, das ein Script enthält.
  4. Die Zeile 'static function OnBeforeRequest(oSession: Session) {' im Script suchen und davor folgende Zeilen einsetzen:
    Code:
        // converts x,y,z addressing to quadkey
        static private function quadKey(xs: String, ys: String, zs: String): String {
            var x: int = int.Parse(xs);
            var y: int = int.Parse(ys);
            var z: int = int.Parse(zs);
            var key: String = "";
            for (var i: int = z; i > 0; i--) {
                var digit: char = '0';
                var mask: int = 1 << (i - 1);
                if ((x & mask) != 0) digit++;
                if ((y & mask) != 0) digit += 2;
                key = key + digit.ToString();
            }
            return key;
        }
  5. Hinter die gesuchte Zeile folgende Zeilen einfügen:
    Code:
            // converts a compegps request coming with osm addressing to google tile addressing 
            if (oSession.hostname.EndsWith("tiles.virtualearth.net") && oSession.PathAndQuery.StartsWith("/compegps")) {
                var url2 : String = oSession.PathAndQuery.Split('.')[0];
                var nums2 : String[] = url2.Substring(1).Split('/');
                var newurl2 : String = String.Format("/tiles/a{0}?g=1252&n=z", quadKey(nums2[2], nums2[3], nums2[1]));
                oSession.PathAndQuery = newurl2;
            }
  6. Das Script abspeichern und den Editor beenden. Es müsste eine akustische Erfolgsmeldung hörbar sein.
  7. Im Menü unter File prüfen, ob 'Capture Traffic' aktiviert ist und den Fiddler Proxy beenden.
  8. Für CGPSL OnlineMap-Datei mit folgendem Inhalt erstellen und in dem gewünschten Kartenordner ablegen. Den Dateinamen kann man sich selbst überlegen (z.b. WorldbingMaps_ortho.cosm):
    Code:
    VERSION=1.0
    WEB=http://ak.t1.tiles.virtualearth.net/compegps/
    CACHEDX=256
    CACHEDY=256
    FORMAT=JPG
    PIXWIDTH=67108864
    PIXHEIGHT=67108864
    MAXZOOMLEVEL=18
    [IMP]
    CompeGPS MAP File
    <Header>
    Version=2
    VerCompeGPS=6.01.b
    Projection=2,Mercator,
    Coordinates=1
    Datum=WGS 84
    </Header>
    <Map>
    Bitmap=FILE_NAME
    BitsPerPixel=8
    BitmapWidth=67108864
    BitmapHeight=67108864
    Remote=1
    </Map>
    <Calibration>
    P0=0.00000000,0.00000000,A,-180.00000000,85.05112851
    P1=67108864.00000000,0.00000000,A,180.00000000,85.05112851
    P2=0.00000000,67108864.00000000,A,-180.00000000,-85.05112851
    </Calibration>
Servus
--
Reiner

Geändert von oanavodo (17.05.2013 um 13:31 Uhr)
Mit Zitat antworten