[Spanish] Error con mapserver y Openlayers

Ion Mtz. de Ilarduya ionvitoria at yahoo.es
Thu Dec 13 09:01:41 PST 2012


Hola,

no sé muy bien lo que puede pasar, aunque a primera vista se me ocurre que tengas problemas con el sistema de referencia.

Tu objeto mapa lo configuras en el sistema EPSG:32719, y al cargar la capa OSM no veo ninguna reproyección, ya que esta se encuentra en EPSG:4326. El tema es que la primera es WGS84-UTM19S, que está expresada en metros, y la segunda se encuentra en WGS84 Geográficas, lo que significa que almacena latitud y longitud, es decir, en grados.

Por eso entre una y otra hay un desplazamiento enorme y es por eso que no lo ves.

Realiza una reproyección cuando cargues la capa OSM para que haga una transformación al vuelo entre un sistema y otro y se visualice correctamente.

Para ello pon el siguiente código en el HEAD del fichero HTML:

<script type="text/javascript" src="proj4js/lib/proj4js-compressed.js"></script>
<script type="text/javascript" src="proj4js/lib/defs/EPSG4326.js"></script>
<script type="text/javascript" src="proj4js/lib/defs/EPSG32719.js"></script> 


Con ello cargo la librería proj4js, BUSCA EN GOOGLE Y DESCÁRGATELA (los ficheros EPSG tienes que guardarlos en el PATH al que los refieras en el código anterior), que la tengo en el mismo path que el fichero HTML, así como los ficheros de las proyecciones que voy a utilizar, y que también están en la misma ruta. En el ejemplo se cargan WGS84 y la Esférica de Mercator (Que es la que emplea Google).

Ahora en el fichero en el que creo las funciones con JS:

var opciones = {
projection: new OpenLayers.Projection("EPSG:4326"),
displayProjection: new OpenLayers.Projection("EPSG:32719"),
units: 'm',
};

Lo que estoy haciendo es definir cuál es la proyección del mapa y cuál es la que se va a mostrar en la aplicación, así como que las unidades de las coordenadas son metros. Ahora falta que hagas una transformación entre ambos sistemas. El siguiente código hace una transformación (la cual no es matemáticamente la mejor, ni mucho menos, pero sirve para solucionar el problema...

mapa.maxExtent = (new OpenLayers.Bounds(-10,35.5,5,44).transform(mapa.displayProjection, mapa.projection));

Espero que te sirva.

Ion





________________________________
 De: Maximiliano Riffo Donoso <maxyorate en gmail.com>
Para: spanish <spanish en lists.osgeo.org> 
Enviado: Martes 11 de diciembre de 2012 15:52
Asunto: [Spanish] Error con mapserver y Openlayers
 

Estimados, estoy tratando de desplegar un shape sobre una capa de OSM en openlayers, el problema es que si la ubico sobre osm no la encuentro, separe los layers para ver que sucedia y me muestra en blanco el mapa y si hago click derecho sobre el, ¿Deberia ser una imagen o no?El tema es que no me sale como si fuese imagen. Este es el  mapfile 
MAP
NAME MAPARUTAS
STATUS ON
UNITS METERS
SIZE 600 600
EXTENT -107863 3760442 876050 8092497
IMAGETYPE PNG
SHAPEPATH "C:/Users/Usuario/Documents/Proyecto/MapaWeb/"
CONFIG "PROJ_LIB" "C:/ms4w/proj/nad"  
DEBUG 5
CONFIG "MS_ERRORFILE" "C:/Users/Usuario/Documents/Tesis/DEBUG.TXT"
PROJECTION
"init=epsg:32719"
END

WEB
IMAGEPATH "tmp"
    IMAGEURL "tmp"
TEMPLATE void
METADATA
WMS_TITLE "Rutas OD"
WMS_ABSTRACT "Rutas OD."
WMS_ACCESSCONSTRAINTS "none"
WMS_ONLINERESOURCE "http://localhost/cgi-bin/mapserv.exe?"
    WMS_SRS  "EPSG:32719"
END 
END 
LAYER
NAME RutasMapserver
TYPE line
STATUS ON
DATA "datos"
METADATA
"DESCRIPTON" "Shapes_12Nov2012"
'wms_srs' 'EPSG:32719'
"wfs_title"    "Shapes_12Nov2012" ## REQUIRED
"wfs_featureid" "Shapes_12Nov2012" ## REQUIRED
"gml_include_items" "all" 
END
CLASS
NAME "Dibujo"
STYLE
SYMBOL "circle"
COLOR  51 153 255
SIZE 1
END
END
END
END

y este el código de Openlayers :
<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <title>OpenLayers Basic OSM Example</title>
    <link rel="stylesheet" href="openlayers/theme/default/style.css" type="text/css">
    <link rel="stylesheet" href="style.css" type="text/css">
    <script src="openlayers/lib/OpenLayers.js"></script>
    <script type="text/javascript">
        var map, layer;
        function init(){
            map = new OpenLayers.Map( 'map', {
maxExtent: new OpenLayers.Bounds(-107863,3760442,876050,8092497),
                    maxResolution: 1921.705078125,
                    units: "m",
                    projection: "EPSG:32719",
numZoomLevels: 15,
controls: [ new OpenLayers.Control.Navigation({
            dragPanOptions: {
                enableKinetic: true
    }
        }),
        new OpenLayers.Control.Attribution(),
new OpenLayers.Control.LayerSwitcher({'ascending':false}),
        new OpenLayers.Control.Zoom()]
});
layerOs = new OpenLayers.Layer.OSM( "Simple OSM Map");
        map.addLayers([layerOs,layer]);
        map.setCenter(
            new OpenLayers.LonLat(348099,16296131), 10
        );
        }
    </script>
  </head>
  <body onload="init()">
      <div id="map" class="smallmap2"></div>
</body>
</html>


Espero me puedan ayudar y gracias de antemano
Saludos
-- 
Maximiliano Riffo Donoso
Licenciatura en Ciencia de la Computación
DMCC - Facultad de Ciencia
Universidad de Santiago De Chile

_______________________________________________
Spanish mailing list
http://lists.osgeo.org/mailman/listinfo/spanish
http://es.osgeo.org
http://twitter.com/osgeoes
------------ pr?xima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.osgeo.org/pipermail/spanish/attachments/20121213/d247fac1/attachment-0001.html>


More information about the Spanish mailing list