Lagi

Bantuan dengan TMS (gdal2tiles) Openlayers 3 dan proyeksi khusus

Bantuan dengan TMS (gdal2tiles) Openlayers 3 dan proyeksi khusus


Saya bekerja dengan proyeksi Italia lokal (EPSG:3003 Monte Mario Italy zone 1) dan saya telah memuat proyeksi ini dalam proyek saya untuk evitate untuk memproyeksikan ulang semua data saya.

Saya telah membuat piramida ubin dengan versi terakhir gdal2tiles (versi dikirimkan dengan versi terakhir dari sumber terbuka maptiler [lihat http://trac.osgeo.org/gdal/ticket/2052] untuk dapat menghasilkan ubin jpeg sebagai gantinya ubin png)

masalah saya adalah saya tidak dapat menetapkan tingkat yang benar ke halaman saya. Jika saya menetapkan ke montemarioProjection sejauh untuk Italia, juga sejauh ini diterapkan pada peta saya, tetapi peta saya hanya berisi kotamadya modena. Tingkat tms modena saya, dihitung oleh gdal2tiles, tampaknya diabaikan.

ketika saya mencoba untuk menggeser ke titik koordinat tertentu dalam sistem koordinat monte mario, peta masuk ke tempat yang salah, karena tidak diposisikan dengan baik.

beberapa contoh: (DI SINI SAYA TELAH TUGASKAN KE MONTE MARIO HANYA MODENA SEJAUH, BUKAN ITALIA)

CONTOH 1 http://mappe-t.comune.modena.it/ortofoto/2014/ol3_ortofoto.html

(DI SINI SAYA TELAH MENETAPKAN KE MONTE MARIO SEJAUHNYA DAN MENCOBA UNTUK MEMAKSA ASAL PETA, TAPI DIABAIKAN. SAYA HARUS MENGHAPUS parameter tingkat dari ol.layer.tile dan ol.view)

CONTOH 2 http://mappe-t.comune.modena.it/ortofoto/2014/ol3_ortofoto2.html

lihat baris 111-115

asal: tileGrid: ol.tilegrid baru.TileGrid({ //tileGrid: ol.tilegrid.XYZ baru({ Asal: tms_origin, resolusi: tms_resolusi }),

JIKA MELIHAT KONTROL POSISI MOUSE, KOORDINATNYA SALAH PADA CONTOH 1 DAN 2

INI SEMUA KODE SAYA DARI CONTOH 2 (TANPA BAGIAN KOMENTAR)

var tms_extent = [ 1640349.34499999997206, 4935769.974999999962747, 1659997.04499999992549, 4956992.87500000000000 ]; var tms_origin = [1640349.34499999997206, 4935769.97499999962747]; var tms_resolusi = [ 12.799999999999997, 6.39999999999999, 3.19999999999999, 1.600000000000000, 0.80000000000000, 0.40000000000000, 0.200000000000000, 0.10000000000000 ]; var city_center = [ 1652769.73, 4945475.55 ]; var monteMarioSystemCode = 'EPSG:3003'; var proyeksiMonteMario = ol.proj.get(monteMarioSystemCode); var extent_italia_monte_mario = [1290679.24, 4194066.17, 2226886.34, 5259894.49]; proyeksiMonteMario.setExtent(extent_italia_monte_mario); var map = new ol.Map({ kontrol: ol.control.defaults({ atribusi: false }).extend( [ ol.control.ZoomSlider() baru, ol.control.ScaleLine() baru, ol.control baru. MousePosition({ koordinatFormat: ol.coordinate.createStringXY(4), proyeksi: monteMarioSystemCode, undefinedHTML: ' ' }) ]), lapisan : [ new ol.layer.Tile({ source : new ol.source.XYZ({ crossOrigin : null, //proyeksi parameter eksperimental : monteMarioSystemCode, //parameter eksperimental (diperlukan karena gdal2tiles menghasilkan ubin dalam mode TMS bukan dalam mode XYZ) tileUrlFunction : function(coordinate) { if (coordinate == null) { return ""; } // jenis ol.TileCoord baru-baru ini diubah menjadi array tiga angka: [z, x, y] var z = koordinat[0]; var x = koordinat[1]; var y = (1 << z) - koordinat[ 2] - 1; return 'http://mappe-t.comune.modena.it/ortofoto/2014/tms2014/' + z + '/' + x + '/' + y + '.jpg">http: //mappe-t.comune.modena.it/ortofoto/2014/tms2014/tilemaresource.xml


Saya telah menemukan solusi yang berfungsi berdasarkan openlayers versi 3.7

Berikut adalah contoh kerja:

http://mappe-t.comune.modena.it/prove/demo_ol3/tms_ol3_with_popup.html

pada dasarnya diperlukan untuk membuat sumber TileImage khusus

ini kode saya

/* PARAMETER KONFIGURASI DESUMED DARI file yang dihasilkan gdal2tiles http://mappe.comune.modena.it/ortofoto/2014/tilemapresource.xml */ var tms_resolutions_2014 = [ 102.399999999999979, 51.19999999999990, 25.599999999999999999900009990000, 3.399990000999999999, 6.3999900000000999 0,400000000000000, 0,200000000000000, 0,1000000000000000 ]; var extent_ortofoto_2014 = [1640349.34499999997206, 4935769.974999999962747, 1659997.04499999992549, 4956992.87500000000000]; /* PARAMETER KONFIGURASI YANG DISIMPAN DARI http://epsg.io/3003 */ var coordSystemCode = 'EPSG:3003'; var proyeksiMonteMario = ol.proj.get(coordSystemCode); //var extent_italy_monte_mario = [1290679.24, 4194066.17, 2226886.34, 5259894.49]; var extent_italy_monte_mario = [1290650.93, 4192956.42, 2226749.10, 5261004.57]; proyeksiMonteMario.setExtent(extent_italy_monte_mario); // LAPISAN TMS. DIKONFIGURASI SEBAGAI CUSTOM TileImage source var tmsModena = new ol.layer.Tile({ preload: 1, source: new ol.source.TileImage({ crossOrigin: null, extent: extent_ortofoto_2014, proyeksi: proyeksiMonteMario, tileGrid: ol.tilegrid baru .TileGrid({ tingkat: extent_ortofoto_2014, asal: [extent_ortofoto_2014[0], tingkat_ortofoto_2014[1]], resolusi: tms_resolutions_2014 }), tileUrlFunction: function(coordinate) { if (coordinate === null) return undefined; // TMS Style URL var z = koordinat[0]; var x = koordinat[1]; var y = koordinat[2]; var url = 'http://mappe.comune.modena.it/ortofoto/2014/'+z+'/ '+ x +'/'+y +'.jpg">BagikanTingkatkan jawaban inimenjawab 23 Juli '15 pukul 14:59Gian Marco ArtioliGian Marco Artioli1511 lencana perak8 lencana perunggu
							

Tonton videonya: Tutorial Openlayers 6 #2 - Menyiapkan lingkungan