OpenLayers no re-proyectando consultas WMS -- javascript campo con openlayers-3 campo con map-projections campo con epsg camp Relacionados El problema

Openlayers not re-projecting WMS queries


0
vote

problema

Español

Tengo un mapa de OpenLAYERS en mi proyecto y quería agregarle los azulejos WMS. Este es mi código:

  const map = new ol.Map({   layers: [     new ol.layer.Tile({       name: 'wmstiles',       source: new ol.source.TileWMS({         url: 'https://ssl-geowms.lillemetropole.fr/dynmapr/dynmapr.php',         serverType: 'geoserver',         version:"1.1.1",         params: {           LAYERS: 'PLU%2Fplu',           VERSION: '1.1.1',           TRANSPARENT: false,           HEIGHT: 256,           WIDTH: 256         },         pixelRatio: 1,         projection: 'EPSG:2154'       }),       visible: false     })   ],   view: new ol.View({     center: ol.proj.fromLonLat([3.1666, 50.6167]),     zoom: 13,     maxZoom: 20,   }) });   

Como puede ver, estoy tratando de proyectar las coordenadas en EPSG:2154 (Francia) para enviarlos al servidor WMS. Pero mi mapa está en blanco porque OpenLayers no generó una llamada con la buena proyección.

Me generó este: https://ssl-geowms.lillemetropole.fr/dynmapr/dynmapr.php?service=wms&version=1.1.1& request=getmap& ;format=image%2fpng&transparent=false& ; En = plu% 2fplu & amp; capas = plu% 252fplu & amp; altura = 919 & amp; anchura = 2881 & amp; srs = epsg% 3a3857 & amp; styles = & amp; bbox = 324977.41473478096% 2c6544989.716173889.1843571889.18435717915.184357179151.1235717915.11234224085

en lugar de algo así (generado de otro sitio web que no está utilizando Openlayers): https://ssl-geowms.lillemetropole.fr/dynmapr/dynmapr.php?in=plu/plu&service=wms& ;Request=GetMap&version=1.1. 1 & amp; capas = PLU% 2Fplu & amp; estilos = & amp; format = imagen% 2Fjpeg & amp; transparentes = false & amp; height = 256 & amp; width = 256 & amp; srs = EPSG% 3A2154 & amp; Bbox = 704615.2885901299,7064111.541254971,705393.894388002,7064886.656737898 < / p>

Como puede ver, no se reprojece en -location:"my street"0 pero en -location:"my street"1111 . También hay otros problemas como la altura y el ancho, pero esta es otra historia. Si copio / pego el cuadro delimitador del enlace de trabajo al primero, funciona.

Original en ingles

I have an openlayers map in my project and I wanted to add WMS tiles to it. This is my code :

const map = new ol.Map({   layers: [     new ol.layer.Tile({       name: 'wmstiles',       source: new ol.source.TileWMS({         url: 'https://ssl-geowms.lillemetropole.fr/dynmapr/dynmapr.php',         serverType: 'geoserver',         version:"1.1.1",         params: {           LAYERS: 'PLU%2Fplu',           VERSION: '1.1.1',           TRANSPARENT: false,           HEIGHT: 256,           WIDTH: 256         },         pixelRatio: 1,         projection: 'EPSG:2154'       }),       visible: false     })   ],   view: new ol.View({     center: ol.proj.fromLonLat([3.1666, 50.6167]),     zoom: 13,     maxZoom: 20,   }) }); 

As you can see, I'm trying to project the coordinates into EPSG:2154 (France) in order to send them to the WMS server. But my map is blank because openlayers did not generate a call with the good projection.

It generated me this one : https://ssl-geowms.lillemetropole.fr/dynmapr/dynmapr.php?SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&FORMAT=image%2Fpng&TRANSPARENT=false&IN=PLU%2Fplu&LAYERS=PLU%252Fplu&HEIGHT=919&WIDTH=2881&SRS=EPSG%3A3857&STYLES=&BBOX=324977.41473478096%2C6544989.716173889%2C380031.18435717915%2C6562551.1234224085

Instead of something like this (generated from another website that is not using openlayers) : https://ssl-geowms.lillemetropole.fr/dynmapr/dynmapr.php?in=PLU/plu&service=WMS&request=GetMap&version=1.1.1&layers=PLU%2Fplu&styles=&format=image%2Fjpeg&transparent=false&height=256&width=256&srs=EPSG%3A2154&bbox=704615.2885901299,7064111.541254971,705393.894388002,7064886.656737898

As you can see, it dit not reproject into EPSG:2154 but in EPSG:3857. There are also other problems like the height and width but this is another story. If I copy/paste the bounding box from the working link to the first one, it works.

           

Lista de respuestas

1
 
vote
vote
La mejor respuesta
 

Tu código funciona para mí (después de agregar el parámetro en). ¿Ha definido la proyección (y la registró si usa OpenLayers 5)? He agregado una capa de OSM semitransparente para verificar correctamente las alineaciones de reproyección. No necesita especificar el tamaño de los azulejos, OpenLayers establecerá que se basará automáticamente en la cuadrícula de azulejos predeterminados y otros parámetros.

  proj4.defs('EPSG:2154', '+proj=lcc +lat_1=49 +lat_2=44 +lat_0=46.5 +lon_0=3 +x_0=700000 +y_0=6600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ');  if (ol.proj.proj4 && ol.proj.proj4.register) { ol.proj.proj4.register(proj4); }    const map = new ol.Map({    layers: [  new ol.layer.Tile({    name: 'wmstiles',    source: new ol.source.TileWMS({      url: 'https://ssl-geowms.lillemetropole.fr/dynmapr/dynmapr.php',      serverType: 'geoserver',      version:"1.1.1",      params: {        IN: "PLU/plu",        LAYERS: 'PLU%2Fplu',        VERSION: '1.1.1',        TRANSPARENT: false,      },      pixelRatio: 1,      projection: 'EPSG:2154',    }),    visible: true,  }),  new ol.layer.Tile({      source: new ol.source.OSM(),      opacity: 0.5  }),    ],    target: 'map',    view: new ol.View({  center: ol.proj.fromLonLat([3.1666, 50.6167]),  zoom: 13,  maxZoom: 20,    })  });  
  <link rel="stylesheet" href="https://cdn.rawgit.com/openlayers/openlayers.github.io/master/en/v5.3.0/css/ol.css" type="text/css">  <script src="https://cdn.rawgit.com/openlayers/openlayers.github.io/master/en/v5.3.0/build/ol.js"></script>  <script src="https://cdnjs.cloudflare.com/ajax/libs/proj4js/2.4.4/proj4.js"></script>  <div id="map" class="map"></div>  
 

You code works for me (after adding the IN parameter). Had you defined the projection (and registered it if using OpenLayers 5)? I've added a semi-transparent OSM layer to check the reprojection aligns correctly. You don't need to specify tile size, OpenLayers will set that automatically based on the default tile grid and other parameters.

proj4.defs('EPSG:2154', '+proj=lcc +lat_1=49 +lat_2=44 +lat_0=46.5 +lon_0=3 +x_0=700000 +y_0=6600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ');  if (ol.proj.proj4 && ol.proj.proj4.register) { ol.proj.proj4.register(proj4); }    const map = new ol.Map({    layers: [  new ol.layer.Tile({    name: 'wmstiles',    source: new ol.source.TileWMS({      url: 'https://ssl-geowms.lillemetropole.fr/dynmapr/dynmapr.php',      serverType: 'geoserver',      version:"1.1.1",      params: {        IN: "PLU/plu",        LAYERS: 'PLU%2Fplu',        VERSION: '1.1.1',        TRANSPARENT: false,      },      pixelRatio: 1,      projection: 'EPSG:2154',    }),    visible: true,  }),  new ol.layer.Tile({      source: new ol.source.OSM(),      opacity: 0.5  }),    ],    target: 'map',    view: new ol.View({  center: ol.proj.fromLonLat([3.1666, 50.6167]),  zoom: 13,  maxZoom: 20,    })  });
<link rel="stylesheet" href="https://cdn.rawgit.com/openlayers/openlayers.github.io/master/en/v5.3.0/css/ol.css" type="text/css">  <script src="https://cdn.rawgit.com/openlayers/openlayers.github.io/master/en/v5.3.0/build/ol.js"></script>  <script src="https://cdnjs.cloudflare.com/ajax/libs/proj4js/2.4.4/proj4.js"></script>  <div id="map" class="map"></div>
 
 
 
 

Relacionados problema

6  Conversión de coordenadas de EPSG 3857 a 4326 DOTSpacial  ( Converting coordinates from epsg 3857 to 4326 dotspatial ) 
Tengo en mi DB A LISTA DE COORMINADAS EN FORMATO DE EPSG 3857. Necesito convertirlos en EPSG 4326 Estoy tratando de usar DOTSpatial, pero mi código siempre vu...

0  Convertir "glnx / y" a longitud, latitud  ( Converting glnx y to longitude latitude ) 
Tengo datos de coordenadas que consisten en dos números de 6 dígitos (por ejemplo, 300,000 250,000) que quiero convertir en largo., Lat. coordenadas. Me dijer...

0  Distancia entre puntos por coordenadas EPSG  ( Distance between points by epsg coordinates ) 
Tengo un punto con coordenadas proyección EPSG 3059 - LKS92 / LETVIA TM . Necesito calcular la distancia en metros entre dos puntos. Es fácil calcular la d...

2  EPSG: 4008 Capa no mostrando  ( Epsg4008 layer not displaying ) 
Tengo un mapa con OSM y Google Base Capas y EPSG: 4326 Oversays. Ahora, también estoy tratando de agregar superposiciones con otros EPSG a mi mapa. Superposic...

1  Transformada Proj4leafleta de 4326 a 3857 en folleto  ( Proj4leaflet transform from 4326 to 3857 in leaflet ) 
Estoy trabajando en el folleto de la semana pasada y este problema me está matando. La base de datos devuelve las coordenadas para crear un marcador de foll...

0  ¿Por qué GDALWARP está dando dos resultados diferentes en el mismo archivo?  ( Why gdalwarp is giving two different results on the same file ) 
Estoy usando GDAL (GDAL 1.9.2, lanzado 2012/10/08) para cambiar de EPSG referencial en un archivo Geotiff. Hago exactamente el mismo comando en dos computador...

1  ¿Puede Geoserver trabajar con sistema de coordenadas planas?  ( Can geoserver work with flat coordinate system ) 
Tengo una aplicación que muestra diferentes elementos en el mapa personalizado. El mapa tiene un sistema de coordenadas que es básicamente (x, y) coordenadas ...

2  Java Transform Proyección EPSG: 900913 a EPSG: 4326  ( Java transform projection epsg900913 to epsg4326 ) 
en las abiertas Podemos transformar Simple EPSG: 900913 a EPSG: 4326 Estoy buscando un Lib de Java puede hacer eso. Aquí encontré esto, http://www.jhlabs.c...

0  Beginador de OpenLayer  ( Openlayer begineer ) 
Soy principiante con la capa abierta, siento alguna dificultad en entender qué significa esta pieza de código var lonlat = new openlayers.lonlat (-1.788, ...

2  ¿Cómo agregar EPSG 900913 a la base de datos de Geodjango Spatialite?  ( How to add epsg 900913 to geodjango spatialite database ) 
Estoy tratando de incluir un widget de Google Maps en mi interfaz de administración usando este fragmento en un sistema Linux (actualmente se ejecuta localm...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos