4 votos

¿Cómo puedo hacer que estas dos capas de MapServer WMS se alineen correctamente entre sí en OpenLayers?

Tengo dos capas WMS de MapServer que quiero superponer en OpenLayers. Una proviene de datos vectoriales en una tabla de PostGIS, y la otra proviene de datos rasterizados en otra tabla de PostGIS. Ambas tienen la misma proyección en PostGIS, el archivo de mapas y OpenLayers (EPSG:4326). La capa vectorial es simplemente una cuadrícula de 0,5° x 0,5°, la capa raster tiene una resolución de 0,5° y tienen el mismo origen, por lo que deberían alinearse entre sí. Sin embargo, dependiendo del cuadro delimitador de la solicitud WMS emitida por OpenLayers, no lo hacen. Parece que MapServer no puede devolver las celdas parciales del raster de PostGIS.

Este es un ejemplo de solicitud de WMS:

http://46.43.3.32/cgi-bin/mapserv?map=/var/www/mapfiles/testing1.map&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&FORMAT=image/png&TRANSPARENT=true&LAYERS=rasters,grid&SRS=EPSG:4326&STYLES=&WIDTH=2024&HEIGHT=600&BBOX=-14.840529126958776,32.55961652888951,7.395798998041224,39.15141340388951

Lo que da:

GetMap request showing misaligned layers

La alineación cambia en función del cuadro delimitador. Si redondeo las coordenadas del cuadro delimitador a números enteros, las dos capas se alinean correctamente entre sí (casi) de forma fiable, pero no es de extrañar que esto cree un desafortunado efecto de "salto" en OpenLayers, donde el usuario se desplaza a una ubicación particular, pero el mapa salta entonces a una ubicación ligeramente diferente.

Parece ser un problema de MapServer causado por el tamaño relativamente grande de las celdas del raster.

Estoy usando MapServer 6.4.1, GDAL 1.10.1, PostgreSQL 9.4.9, PostGIS 2.1.4, OpenLayers 4.0.1, WMS 1.1.1

0 votos

¿puede añadir una captura de pantalla que muestre el problema?

0 votos

Este es un tema interesante. Creo que es mejor añadir capturas de pantalla en lugar de un enlace en vivo, ya que el enlace en vivo podría no funcionar pronto. Una sugerencia que tengo es cambiar algunos ajustes de interpolación. Si consigues que la trama se interpola correctamente, debería funcionar. También podrías evaluar GeoServer, para ver cómo maneja los mismos datos.

1voto

nmtoken Puntos 1096

He abierto las mismas capas de servicio en QGIS y no puedo reproducir el problema, sea cual sea el zoom o la ubicación, las capas siempre están alineadas. Pido las dos capas por separado.

raster and grid WMS layers in QGIS

Se agradece cualquier indicación

La estrategia sugerida para OpenLayers sería entonces pedir las capas por separado.

Curiosamente esta única petición también me funciona:

http://46.43.3.32/cgi-bin/mapserv?map=/var/www/mapfiles/testing1.map&&SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&BBOX=19.99647818503929386,23.94108767768300794,28.97272303358786871,33.50801373835698627&CRS=EPSG:4326&WIDTH=907&HEIGHT=852&LAYERS=rasters,grid&STYLES=,&FORMAT=image/png&DPI=96&MAP_RESOLUTION=96&FORMAT_OPTIONS=dpi:96&TRANSPARENT=TRUE

Da:

WMS 1.3.0 GetMap with aligned grid

Asimismo,

http://46.43.3.32/cgi-bin/mapserv?map=/var/www/mapfiles/testing1.map&&SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&BBOX=30.56028970048615179,-11.53845925556137963,40.87960453561225904,1.923729518252944359&CRS=EPSG:4326&WIDTH=1058&HEIGHT=812&LAYERS=rasters,grid&STYLES=,&FORMAT=image/png&DPI=96&MAP_RESOLUTION=96&FORMAT_OPTIONS=dpi:96&TRANSPARENT=TRUE

Da:

WMS 1.3.0 GetMap with aligned grid

He convertido mi solicitud de WMS 1.3.0 a un WMS 1.1.1 como se indica a continuación, y ahora estoy replicando su problema.

Así que http://46.43.3.32/cgi-bin/mapserv?map=/var/www/mapfiles/testing1.map&&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&BBOX=-11.53845925556137963,30.56028970048615179,1.923729518252944359,40.87960453561225904&SRS=EPSG:4326&WIDTH=1058&HEIGHT=812&LAYERS=rasters,grid&STYLES=,&FORMAT=image/png&DPI=96&MAP_RESOLUTION=96&FORMAT_OPTIONS=dpi:96&TRANSPARENT=TRUE

Da:

WMS 1.1.1 GetMap with misaligned grid

Así que no estoy seguro de por qué, pero parece que la versión de WMS que está utilizando podría hacer una diferencia.

0 votos

Gracias por la sugerencia, pero ya estoy solicitando las dos capas por separado en OpenLayers (disculpas, me doy cuenta de que el ejemplo de solicitud era engañoso en ese sentido)

0 votos

Es ciertamente interesante que QGIS envíe dos peticiones separadas y obtenga la alineación, pero OpenLayers envía dos peticiones y no obtiene la alineación, desde el mismo servicio.

0 votos

Confirmando, que cuando abro el servicio en ArcMap como WMS 1.1.1 entonces obtengo el comportamiento que usted describe cuando hago un paneo del mapa (cuadrícula desalineada saltando alrededor...), pero cuando abro como WMS 1.3.0 entonces no tengo problemas. Alternando entre las capas de la cuadrícula solamente (WMS 1.1.1 y WMS 1.3.0) no hay desalineación. Por el contrario, al alternar entre las capas de trama, se produce una desalineación. Ergo... es el raster capa del servicio WMS 1.1.1 que tiene algún problema.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X