7 votos

OpenLayers y Geoserver: OSM/Google Maps y superposición WMS

Estoy experimentando problemas en la proyección con la siguiente configuración:

  • GeoServer con ESPG:4326 basado en shape (*.shp)
  • OpenJump para editar mis archivos de forma
  • Openlayers con EPSG:900913 capas base
  • GeoServer proporciona los archivos de forma como WMS a OpenLayers.

Aquí está mi código fuente:

<html>
<head>
    <title>Openplanning mit Geoserver</title>
    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
    <script type='text/javascript' src='http://www.openlayers.org/api/OpenLayers.js'></script>

</head>

 <body>
    <div id="map-id"></div>
        <script>
            var geographic = new OpenLayers.Projection("EPSG:4326");
            var mercator = new OpenLayers.Projection("EPSG:900913");

            var world = new OpenLayers.Bounds(-180, -89, 180, 89).transform(
                geographic, mercator
            );
            var vienna_center = new OpenLayers.LonLat(16.3670, 48.205333).transform(
                geographic, mercator
            );

            var options = {
                projection: mercator,
                displayProjection: geographic,
                units: "m",
                maxExtent: world,
                maxResolution: 156543.0399
            };

            var map = new OpenLayers.Map("map-id",options);

            var osm = new OpenLayers.Layer.OSM();

            map.addLayer(osm);

            var vienna = new OpenLayers.Layer.WMS(
                "Vienna Calling",
                "http://localhost:8888/geoserver/wms?",
                {layers: "topp:ma_vienna", 
                transparent: true}
            );
            map.addLayer(vienna);
            map.setCenter(vienna_center, 8);
            map.addControl(new OpenLayers.Control.LayerSwitcher());
            //zeigt die Koordinaten der aktuellen Mause-Position an
            map.addControl(new OpenLayers.Control.MousePosition());

            map.addControl(featureInfo);
            featureInfo.activate();
        </script>
    </div>
 </body>
 </html>

Parece que GeoServer es la conversión de la ESPG:4326 a EPSG:900913 internamente. Aquí puedes ver un ejemplo de solicitud de Viena (que es enviado por mi OpenLayers aplicación a GeoServer):

http://localhost:8888/geoserver/wms?LAYERS=topp:ma_vienna&SRS=EPSG:900913&TRANSPARENT=TRUE&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&FORMAT=image/png&BBOX=1800244.8899219,6116147.6705496,1839380.6483984,6155283.4290261&WIDTH=256&HEIGHT=256

Mi problema: el archivo solicitado se ve distored, como se puede ver aquí:

http://i.stack.imgur.com/UcWBQ.png (sorry, I had to post a link again after my edit ...)

En caso de que se me abra la capa WMS en el OpenLayers vista previa de GeoServer, se ve bien:

http://i.stack.imgur.com/P8IMj.png (sorry, I had to post a link again after my edit ...)

La pregunta es: ¿por Qué es mi archivo de forma distorsionada en mi OpenLayers de la aplicación, pero no en el GeoServer previa? Como se puede ver, el GeoServer vista previa de los usos EPSG:4326 y mi OpenLayers aplicación EPSG:900913 (Actualización: EPSG:4326; coordenadas del ratón se muestra como latitud/longitud). Pero, sin embargo, como GeoServer proporciona un WMS interfaz con EPSG:900913 capacidades, no debería reproyectar correctamente mi vector de fuentes?

Gracias por las respuestas de antemano, Rainer.

3voto

Adam Ernst Puntos 6939

La primera cosa a comprobar es que sus datos son realmente en 4326 (lat/lon) y que GeoServer es la lectura en la que la proyección de verificación en el Almacén de datos de la página de "Nativo de Proyección", si es desconocido, a continuación, vaya a http://prj2epsg.org/search y pegar en el contenido de su archivo shapefile .prj archivo, esto le dará una correcta proyección para poner en el cuadro de proyección.

Si su archivo de forma de no tener una .prj archivo, entonces usted necesita para volver a los datos de proveedores y pedirles que lo que la proyección de los datos.

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