Mais

Ajuda com TMS (gdal2tiles) Openlayers 3 e projeção personalizada

Ajuda com TMS (gdal2tiles) Openlayers 3 e projeção personalizada


Eu trabalho com uma projeção italiana local (EPSG: 3003 Monte Mario Itália zona 1) e carreguei essa projeção no meu projeto para evitate para reprojetar todos os meus dados.

Eu criei a pirâmide de blocos com a última versão do gdal2tiles (a versão enviada com a última versão do código aberto do maptiler [ver http://trac.osgeo.org/gdal/ticket/2052] para ser capaz de gerar blocos JPEG em vez disso de ladrilhos png)

meu problema é que não consigo atribuir a extensão correta à minha página. Se eu atribuir ao montemarioProjection a extensão para a itália, também esta extensão é aplicada ao meu mapa, mas meu mapa contém apenas o município de modena. Minha extensão de tms de modena, calculada por gdal2tiles, parece ser ignorada.

quando tento deslocar para um determinado ponto de coordenadas no sistema de coordenadas de monte mario, o mapa vai para um lugar errado, porque não está bem posicionado.

alguns exemplos: (AQUI ATRIBUIU APENAS PARA MONTE MARIO MODENA EXTENT AS EXTENT, NÃO A ITÁLIA)

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

(AQUI ATRIBUIU A MONTE MARIO SUA EXTENSÃO REAL E TENTEI FORÇAR A ORIGEM DO MAPA, MAS FOI IGNORADA. TENHO QUE REMOVER o parâmetro de extensão de ol.layer.tile e ol.view)

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

ver linhas 111-115

origin: tileGrid: new ol.tilegrid.TileGrid ({// tileGrid: new ol.tilegrid.XYZ ({origin: tms_origin, resolution: tms_resolutions}),

SE VERIFICAR O CONTROLE DE POSIÇÃO DE MOUSE, AS COORDENADAS ESTÃO ERRADAS NO EXEMPLO 1 E 2

AQUI ESTÁ TODO O MEU CÓDIGO DO EXEMPLO 2 (SEM PARTES COMENTÁRIAS)

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 (extension_italia_monte_mario); var map = new ol.Map ({controles: ol.control.defaults ({atribuição: false}). extend ([novo ol.control.ZoomSlider (), novo ol.control.ScaleLine (), novo ol.control. MousePosition ({coordinateFormat: ol.coordinate.createStringXY (4), projeção: monteMarioSystemCode, undefinedHTML: ''})]), camadas: [new ol.layer.Tile ({source: new ol.source.XYZ ({crossOrigin: null, // projeção do parâmetro experimental: monteMarioSystemCode, // parâmetro experimental (necessário porque gdal2tiles geram blocos no modo TMS e não no modo XYZ) tileUrlFunction: function (coordinate) {if (coordinate == null) {return "";} // tipo de ol.TileCoord foi recentemente alterado para uma matriz de três números: [z, x, y] var z = coordenada [0]; var x = coordenada [1]; var y = (1 << z) - coordenada [ 2] - 1; retornar 'http://mappe-t.comune.modena.it/ortofoto/2014/tms2014/' + z + '/' + x + '/' + y + '.jpg "> http: //mappe-t.comune.modena.it/ortofoto/2014/tms2014/tilemapresource.xml


Eu encontrei uma solução de trabalho baseada no openlayers versão 3.7

Aqui está um exemplo prático:

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

basicamente é necessário criar uma fonte TileImage personalizada

este é o meu código

/ * PARÂMETROS DE CONFIGURAÇÃO DESUMIDOS DO arquivo gerado por gdal2tiles http://mappe.comune.modena.it/ortofoto/2014/tilemapresource.xml * / var tms_resolutions_2014 = [102.39999999999979, 51.1999999999999990, 25.5999999999999995, 12.7000099, 0,8999999999 6,3999999, 12.7000099, 3,9009999, 9.39999999999999999 0,40000000000000, 0,20000000000000, 0,10000000000000]; var extension_ortofoto_2014 = [1640349.34499999997206, 4935769.97499999962747, 1659997.0449999999992549, 4956992.87500000000000]; / * PARÂMETROS DE CONFIGURAÇÃO DESUMIDOS 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 (Ext_italy_monte_mario); // CAMADA TMS. É CONFIGURADO COMO UMA fonte TileImage PERSONALIZADA var tmsModena = new ol.layer.Tile ({preload: 1, source: new ol.source.TileImage ({crossOrigin: null, extend: extend_ortofoto_2014, projection: projectionMonteMario, tileGrid: new ol.tilegrid .TileGrid ({Ext: Ext ._ortofoto_2014, origin: [Ext. URL var z = coordenada [0]; var x = coordenada [1]; var y = coordenada [2]; var url = 'http://mappe.comune.modena.it/ortofoto/2014/'+z+'/ '+ x +' / '+ y +'. jpg ">CompartilharMelhorar esta respostarespondidas 23 de julho de 15 às 14h59Gian Marco ArtioliGian Marco Artioli1511 distintivo prateado8 emblemas de bronze
							

Assista o vídeo: GIS with Openlayers part1. How to add #GeoJSON on #Openlayers map?