Tengo un caso de uso en el que un servidor WMS externo puede servir mapas en la proyección Web Mercator utilizando el código EPSG 900913, pero no reconoce el código 102100 de ESRI.
Mi pregunta es: ¿Puedo obligar a que todas las solicitudes del SGA utilicen el código EPSG 900913?
Para ilustrarlo, tengo una simple página de mapas:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Test</title>
<link rel="stylesheet" href="http://js.arcgis.com/3.8/js/esri/css/esri.css">
<script src="http://js.arcgis.com/3.8/"></script>
<script src="./test.js"></script>
</head>
<body>
<div id="mapDiv"></div>
</body>
</html>
Donde test.js crea un mapa simple y le añade un WMSLayer:
var wmsAddress = "http://some.server.com/wms";
var map, srs, extent;
require(["esri/map",
"esri/layers/WMSLayer",
"esri/layers/WMSLayerInfo",
"esri/geometry/Extent",
"esri/geometry/Point",
"esri/SpatialReference",
"dojo/domReady!"],
function (Map, WMSLayer, WMSLayerInfo, Extent, Point, SpatialReference) {
srs = new SpatialReference({wkid:900913});
extent = new Extent(
1362550.0288221193, 7616458.979152972,
2281987.5791366613, 9525359.127428867,
srs);
map = new Map("mapDiv", {
center: new Point(1800000, 7900000, srs),
extent: extent
});
var wmsService = new WMSLayer(wmsAddress, {
resourceInfo: {
extent: extent,
layerInfos: [new WMSLayerInfo({name:"layerName",title:"TestMap"})]
},
visibleLayers: ["layerName"]
});
map.addLayers([wmsService]);
});
Al cargar la aplicación, la petición que se envía al servidor WMS tiene el siguiente aspecto (visto en la consola de un navegador):
http//some.server.com/wms?SERVICE=WMS&REQUEST=GetMap&FORMAT=image/png&TRANSPARENT=TRUE&STYLES=&VERSION=1.3.0&LAYERS=layerName&WIDTH=1904&HEIGHT=400& CRS=EPSG:102100 &BBOX=-2743182.35289663,6945549.925862053,6343182.35289663,8854450.074137948
Lo que resulta en esta respuesta del servidor:
<ServiceExceptionReport xmlns="http://www.opengis.net/ogc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.3.0" xsi:schemaLocation="http://www.opengis.net/ogc http://some.server.com:80/geoserver/schemas/wms/1.3.0/exceptions_1_3_0.xsd">
<ServiceException code="InvalidCRS">
Error occurred decoding the espg code urn:x-ogc:def:crs:EPSG:102100 No code "EPSG:102100" from authority "European Petroleum Survey Group" found for object of type "IdentifiedObject".
</ServiceException>
</ServiceExceptionReport>
0 votos
900913 no es un código en el registro EPSG. El código a utilizar es el 3857
0 votos
Si el servidor sólo anuncia EPSG:3857 (y no EPSG:900913 o ESRI:102100), el cliente no debe solicitarlos; hacerlo va en contra de la norma WMS