[Spanish] Re: Duda con proyecciones en MapServer + WMS

Jorge Arévalo jorge.arevalo at deimos-space.com
Thu Nov 10 19:18:43 EST 2011


2011/11/11 Jorge Arévalo <jorge.arevalo at deimos-space.com>:
> Buenas lista,
>
> Tengo un GeoTIFF cuya proyección es epsg:23028. He configurado
> correctamente MapServer para servir dicho GeoTIFF en estas
> proyecciones:
>
> epsg:23028 (la original de los datos)
> epsg:4326
> epsg:3785
>
> Pero lo he hecho un poco por ensayo y error, porque no termino de
> entender bien como funciona el tema de las proyecciones en MapServer.
> Veo que hay 3 sitios donde definir proyecciones en un mapfile, a la
> hora de configurar un WMS:
>
> - Dentro del objeto MAP. Por lo que entiendo, MapServer llama a esto
> "output projection". Es decir, la proyección en la que renderiza los
> datos, vengan de la proyección que vengan. Yo he puesto lo siguiente,
> que corresponde a la epsg:3785
>
> PROJECTION
>    "proj=merc"
>    "lon_0=0"
>    "k=1"
>    "x_0=0"
>    "y_0=0"
>    "a=6378137"
>    "b=6378137"
>    "towgs84=0,0,0,0,0,0,0"
>    "units=m"
>    "no_defs"
> END
>
> Pero si pongo
>
> PROJECTION
>    "init=epsg:3785"
> END
>
> Me funciona igual.
>
>
> - Dentro del objeto WEB. Concretamente, como metadato, de la forma
> "wms_srs" "EPSG:XXXX". Aquí se pueden definir varias proyecciones
> EPSG, que serían las que el servidor WMS está ofreciendo. Y aquí es
> donde tengo mi primer conflicto: ¿no se supone que la proyección de
> salida de MapServer es la que defino en el objeto PROJECTION dentro de
> MAP? Claramente, estoy entendiendo algo mal, porque yo a un WMS le
> puedo pedir los datos en diferentes proyecciones, pero en el objeto
> PROJECTION dentro de MAP estoy definiendo una sola proyección. Es
> aquí, en el metadato "wms_srs" de WEB, donde defino varias
> (concretamente, tengo puesto: "wms_srs" "EPSG:3785 EPSG:4326"). Eso me
> lleva a pensar que la proyección de salida de MapServer NO es lo mismo
> que las proyecciones que ofrece el servidor WMS configurado con
> MapServer.
>
> - Dentro del objeto LAYER. Esta sería la proyección en la que están
> los datos de entrada. Tengo otra confusión aquí. Yo he definido,
> dentro de mi objeto LAYER, lo siguiente:
>
> PROJECTION
>    "init=epsg:23028"
> END
>
> METADATA
>    "wms_title" "canarias_gsm"
>    "wms_srs"   "EPSG:23028"
> END
>
> Lo que hay dentro de PROJECTION es la proyección en la que se
> encuentran los datos. Lo que hay dentro de METADATA, asociado a
> "wms_srs" pretendo que sea una proyección en la que quiero poder
> servir mi capa. Ya he definido, dentro del objeto WEB, otras dos
> proyecciones (la 3785 y la 4326). Y lo cierto es que funciona. Si yo
> le hago una petición WMS con SRS=epsg:23028 y el bbox en coordenadas
> utm de la zona 28, me saca mi GeoTIFF, lo mismo que si le hago la
> petición en epsg:4326 o epsg:3785.
>
> Mi confusión está entre los dos primeros lugares. Estoy leyendo la
> documentación de MapServer sobre proyecciones
> (http://mapserver.org/mapfile/projection.html) y sobre lo necesario
> para configurar un WMS (http://mapserver.org/ogc/wms_server.html) pero
> no acabo de ver clara eso que digo: ¿Es lo mismo la proyección de
> salida de MapServer que las proyecciones que ofrece el WMS? Yo creo
> que no... pero si alguien puede arrojar algo de luz, estaré
> enormemente agradecido.
>
> Saludos, y gracias por anticipado,
>
> --
> Jorge Arévalo
> Internet & Mobility Division, DEIMOS
> jorge.arevalo at deimos-space.com
> http://es.linkedin.com/in/jorgearevalo80
> http://mobility.grupodeimos.com/
> http://gis4free.wordpress.com
> http://geohash.org/ezjqgrgzz0g
>

Me respondo a mi mismo para actualizar cosas de las que creo que me
voy enterando:

- La proyección definida en el objeto de nivel superior, es decir,
MAP, es la proyección a la que se van a transformar TODAS las capas.
Esto es independiente de las proyecciones que luego se quiera que
ofrezca el WMS (que se especifican en el metadato "wms_srs" del objeto
WEB)

- Dentro de cada capa, se puede definir también la proyección en la
que están los datos de esa capa, si es diferente a la definida en el
nivel superior (el objeto MAP). Luego si todas mis capas tienen datos
en la misma proyección, lo lógico sería definir la proyección en el
nivel superior (MAP) y todas las capas la heredarían. Lo he hecho, y
funciona.

Mirando el mapfile, me han surgido dos dudillas más:

- ¿Para qué sirve el EXTENT? Por lo que he leído, si no lo
especificas, MapServer te lo intenta calcular en función de las capas
que vayas a sacar (lo cuál puede ser muy costoso). Pero si yo tengo
una capa de China y la otra de Cánada, por ejemplo... ¿qué sentido
tiene definir un único EXTENT a nivel del objeto MAP? Cada capa tendrá
el suyo...

- ¿Cuáles son las principales diferencias entre ofrecer una interfaz
WMS y comunicarse directamente con MapServer? Lo digo porque, por
ejemplo, MapProxy ofrece como posibles fuentes de datos para cachear
tanto una fuente MapServer como una fuente WMS genérica. Supongo que
lo que pierdes en interoperabilidad lo ganas en velocidad...

-- 
Jorge Arévalo
Internet & Mobility Division, DEIMOS
jorge.arevalo at deimos-space.com
http://es.linkedin.com/in/jorgearevalo80
http://mobility.grupodeimos.com/
http://gis4free.wordpress.com
http://geohash.org/ezjqgrgzz0g


More information about the Spanish mailing list