Mehr

Formel der Mapnik Bounding Box (sphärischer Mercator)

Formel der Mapnik Bounding Box (sphärischer Mercator)


Ich möchte einen Kachelserver implementieren und folge dem Code im Repo-Node-mapnik-sample-code.

Wenn eine Anfrage mit den Parametern x, y, z (Längengrad, Breitengrad, Zoom) gesendet wird, werden diese Parameter verwendet, um eine Begrenzungsbox mit dem folgenden Code zu erstellen:

/** * Kachel-xyz-Wert in Mapnik-Hüllkurve umwandeln * * @param {Number} x Breitengrad. * @param {Number} y Längengrad. * @param {Zahl} Zoom-Zoom. * @param {Boolean} tms_style ob eine tms-Kachel berechnet werden soll. * @return Object Mapnik-Umschlag. */ SphericalMercator.prototype.xyz_to_envelope = function(x, y, zoom, TMS_SCHEME) { if (TMS_SCHEME) { y = (Math.pow(2, zoom) - 1) - y; } var ll = [x * this.size, (y + 1) * this.size]; var ur = [(x + 1) * diese.Größe, y * diese.Größe]; var bbox = this.px_to_ll(ll, zoom).concat(this.px_to_ll(ur, zoom)); return mercator.forward(bbox); };

(vollständiger Code hier: https://github.com/mapnik/node-mapnik-sample-code/blob/master/utils/sphericalmercator.js)

Warum hier Längen- und Breitengrad mit der Kachelgröße (256) multipliziert werden müssen:

var ll = [x * this.size, (y + 1) * this.size];

Ich verliere mich zwischen Pixeln und geografischen Koordinaten.


Die x- und y-Parameter dieser Funktion sind Kachelkoordinaten, wobei die x- und y-Werte die Anzahl der Kacheln von der oberen linken Ecke der Karte in jede Richtung darstellen. Im Nummerierungssystem von Google beginnen die Kachelkoordinaten bei(0, 0)für die obere linke Kachel.

var ll = [x * this.size, (y + 1) * this.size];

Die Linie darüber, die Sie markiert haben, berechnet die Pixelkoordinaten für die untere linke Ecke der Kachel. Wenn beispielsweise die Kachelkoordinaten (x- und y-Parameter der Funktion)(2,3), und die Kachelgröße beträgt 256, die untere linke Ecke dieser Kachel wäre bei(2 * 256, (3 + 1) * 256) = (512, 1024).

Ich fand diese maptiler.org-Seite auf Google Maps Koordinaten besonders hilfreich, um das System zu visualisieren. Unten ist ein Screenshot von dieser Seite, der das Kachelsystem in Zoomstufe 1 zeigt.


Schau das Video: 5 mins CVPR21 Delving into Localization Errors for Monocular 3D Object Detection