Más

Ayuda con TMS (gdal2tiles) Openlayers 3 y proyección personalizada

Ayuda con TMS (gdal2tiles) Openlayers 3 y proyección personalizada


Trabajo con una proyección italiana local (EPSG: 3003 Monte Mario Italia zona 1) y había cargado esta proyección en mi proyecto para que evitate reproyectar todos mis datos.

Había creado la pirámide de mosaicos con la última versión de gdal2tiles (la versión enviada con la última versión de código abierto de maptiler [ver http://trac.osgeo.org/gdal/ticket/2052] para poder generar mosaicos jpeg en su lugar de mosaicos png)

mi problema es que no puedo asignar la extensión correcta a mi página. Si asigno a montemarioProjection la extensión para italia, también esta extensión se aplica a mi mapa, pero mi mapa contiene solo el municipio de modena. Mi extensión de tms de modena, calculada por gdal2tiles, parece ignorada.

cuando trato de desplazarme a un determinado punto de coordenadas en el sistema de coordenadas de monte mario, el mapa va en un lugar incorrecto, porque no está bien posicionado.

algunos ejemplos: (AQUÍ HE ASIGNADO A MONTE MARIO ÚNICAMENTE MODENA MEDIDA COMO MEDIDA, NO ITALIA)

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

(AQUÍ HE ASIGNADO A MONTE MARIO SU EXTENSIÓN REAL E INTENTÉ FORZAR EL ORIGEN DEL MAPA, PERO FUE IGNORADO. TENGO QUE ELIMINAR el parámetro de extensión de ol.layer.tile y ol.view)

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

ver líneas 111-115

origen: tileGrid: nuevo ol.tilegrid.TileGrid ({// tileGrid: nuevo ol.tilegrid.XYZ ({origen: tms_origin, resoluciones: tms_resolutions}),

SI MIRA EL CONTROL DE LA POSICIÓN DEL RATÓN, LAS COORDENADAS ESTÁN INCORRECTAS EN EL EJEMPLO 1 Y 2

AQUÍ ESTÁ TODO MI CÓDIGO DEL EJEMPLO 2 (SIN PIEZAS COMENTADAS)

var tms_extent = [1640349.34499999997206, 4935769.97499999962747, 1659997.04499999992549, 4956992.87500000000000]; var tms_origin = [1640349.34499999997206, 4935769.97499999962747]; var tms_resolutions = [12.79999999999997, 6.39999999999999, 3.19999999999999, 1.60000000000000, 0.80000000000000, 0.40000000000000, 0.20000000000000, 0.10000000000000]; var city_center = [1652769.73, 4945475.55]; var monteMarioSystemCode = 'EPSG: 3003'; var projectionMonteMario = ol.proj.get (monteMarioSystemCode); var extension_italia_monte_mario = [1290679.24, 4194066.17, 2226886.34, 5259894.49]; projectionMonteMario.setExtent (extensión_italia_monte_mario); var map = new ol.Map ({controles: ol.control.defaults ({atribución: false}). extend ([nuevo ol.control.ZoomSlider (), nuevo ol.control.ScaleLine (), nuevo ol.control. MousePosition ({CoordinateFormat: ol.coordinate.createStringXY (4), proyección: monteMarioSystemCode, undefinedHTML: ''})]), capas: [new ol.layer.Tile ({source: new ol.source.XYZ ({crossOrigin: null, // proyección de parámetro experimental: monteMarioSystemCode, // parámetro experimental (necesario porque gdal2tiles genera mosaicos en modo TMS no en modo XYZ) tileUrlFunction: function (coordenada) {if (coordenada == nula) {retorno "";} // tipo de ol.TileCoord se cambió recientemente a una matriz de tres números: [z, x, y] var z = coordenada [0]; var x = coordenada [1]; var y = (1 << z) - coordenada [ 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/tilemapresource.xml


Encontré una solución de trabajo basada en la versión 3.7 de openlayers

Aquí hay un ejemplo de trabajo:

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

básicamente es necesario crear una fuente TileImage personalizada

este es mi codigo

/ * PARÁMETROS DE CONFIGURACIÓN DESUMENIDOS DEL archivo generado por gdal2tiles http://mappe.comune.modena.it/ortofoto/2014/tilemapresource.xml * / var tms_resolutions_2014 = [102.39999999999979, 51.19999999999990, 25.5999999999999990, 25.599999999999999, 6,399990000, 12999999990000, 0,899 0,40000000000000, 0,20000000000000, 0,10000000000000]; var extension_ortofoto_2014 = [1640349.34499999997206, 4935769.97499999962747, 1659997.04499999992549, 4956992.87500000000000]; / * PARÁMETROS DE CONFIGURACIÓN DESUMINADOS DE http://epsg.io/3003 * / var coordSystemCode = 'EPSG: 3003'; var projectionMonteMario = ol.proj.get (coordSystemCode); // var extension_italy_monte_mario = [1290679.24, 4194066.17, 2226886.34, 5259894.49]; var extension_italy_monte_mario = [1290650.93, 4192956.42, 2226749.10, 5261004.57]; projectionMonteMario.setExtent (extensión_italy_monte_mario); // CAPA TMS. ESTÁ CONFIGURADO COMO UNA TileImage CUSTOM fuente var tmsModena = new ol.layer.Tile ({preload: 1, source: new ol.source.TileImage ({crossOrigin: null, extensión: extensión_ortofoto_2014, proyección: projectionMonteMario, tileGrid: nueva ol.tilegrid .TileGrid ({extensión: extensión_ortofoto_2014, origen: [extensión_ortofoto_2014 [0], extensión_ortofoto_2014 [1]], resoluciones: tms_resolutions_2014}), tileUrlFunction: function (coordenada) {if (coordenada === nula) return undefined; // Estilo TMS URL var z = coordenadas [0]; var x = coordenadas [1]; var y = coordenadas [2]; var url = 'http://mappe.comune.modena.it/ortofoto/2014/'+z+'/ '+ x +' / '+ y +'. jpg ">Mejora esta respuestarespondido 23/07/15 a las 14:59Gian Marco ArtioliGian Marco Artioli1511 insignia de plata8 insignias de bronce
							

Ver el vídeo: TMS WebGMaps: Map styles