Vairāk

Mapnik norobežojošās kastes formula (sfērisks merkators)


Es vēlos ieviest elementu serveri un es sekoju kodam repo mezglā-mapnik-sample-code.

Kad pieprasījums tiek nosūtīts ar parametriem x, y, z (garums, platums, tālummaiņa), šie parametri tiek izmantoti, lai izveidotu norobežojošo lodziņu ar šādu kodu:

/ ** * Konvertējiet flīžu xyz vērtību Mapnik aploksnē * * @param {Number} x platuma numuru. * @param {Numurs} y garuma skaitlis. * @param {Number} tālummaiņas tālummaiņa. * @param {Boolean} tms_style, vai aprēķināt tms elementu. * @return Object Mapnik aploksne. * / SphericalMercator.prototype.xyz_to_envelope = funkcija (x, y, zoom, TMS_SCHEME) {if (TMS_SCHEME) {y = (Math.pow (2, zoom) - 1) - y; } var ll = [x * šis.izmērs, (y + 1) * šis.izmērs]; var ur = [(x + 1) * šis.izmērs, y * šis.izmērs]; var bbox = this.px_to_ll (ll, zoom) .concat (this.px_to_ll (ur, zoom)); atgriezties merkator.forward (bbox); };

(pilns kods šeit: https://github.com/mapnik/node-mapnik-sample-code/blob/master/utils/sphericalmercator.js)

Kāpēc garums un platums ir jāreizina ar flīžu izmēru (256) šeit:

var ll = [x * šis.izmērs, (y + 1) * šis.izmērs];

Es pazūd starp pikseļiem un ģeogrāfiskajām koordinātām.


Šīs funkcijas x un y parametri ir flīžu koordinātas, kur x un y vērtības apzīmē flīžu skaitu no kartes augšējā kreisā stūra katrā virzienā. Google numerācijas sistēmā elementu koordinātas sākas ar(0, 0)augšējai kreisajai flīzei.

var ll = [x * šis.izmērs, (y + 1) * šis.izmērs];

Līnija virs, kuru esat izcēlis, aprēķina pikseļu koordinātas flīzes apakšējā kreisajā stūrī. Piemēram, ja elementu koordinātas (x un y parametri funkcijai) ir(2,3), un flīžu izmērs ir 256, šīs flīzes apakšējais kreisais stūris būtu(2 * 256, (3 + 1) * 256) = (512, 1024).

Es uzskatu, ka šī maptiler.org lapa Google Maps koordinātēs ir īpaši noderīga sistēmas vizualizēšanai. Zemāk ir šīs lapas ekrānuzņēmums, kas parāda elementu sistēmu 1. tālummaiņas līmenī.