5 votos

Openlayers y Geoserver no reproyectar, mientras que la edición de Vector con WFS-T

No puedo obtener el Openlayers y Geoserver trabajar con WFS-T de edición de una capa vectorial.

Tengo una capa de puntos que el Nativo SRS es EPSG:32639.

Después de probar un montón de combinaciones, que terminó con dos no soluciones de trabajo.

1) una. En el servidor tengo set", Declaró SRS' a EPSG:32639 y hacer SRS hadling 'Fuerza declarado'. b. En Openlayers me puse de proyección: new OpenLayers.Proyección("EPSG:32639") para la capa.

envía

<gml:Point xmlns:gml="http://www.opengis.net/gml" srsName="EPSG:4326"<gml:coordinates decimal="." cs="," ts=" ">241602.05063766203,4958072.672210057</gml:coordinates>

y se pone

'PointOutsideEnvelopeException: 241602.05063766203 fuera de (-180.0,180.0)'

2) una. En el servidor tengo set", Declaró SRS' a EPSG:4326 y hacer SRS hadling 'Reproyectar nativa declarado'. b. En Openlayers me puse de proyección: new OpenLayers.Proyección("EPSG:4326") para la capa.

con éxito se compromete a mis cambios a la base de datos, pero las coordenadas en la base de datos están mal de grados como para 4326 en lugar de metros de 32639.

El Firebug muestra que se presenta grados.

He proj4js habilitado en el lado del cliente.

Cualquier otra combinación para jugar con 'displayProjection' de el mapa que conduce a no mostrar los puntos de mi capa en el mapa.

Parece como Openlayers dice proyección 4326 todo el tiempo Y el geoserver es incapaz de reproyectar las coordenadas cuando se recibe desde el cliente.

En el servidor, he probado la desconexión de los Servicios / WFS / GML2 / Reemplazar GML Atributos casilla de verificación sin éxito.

Estoy en un callejón sin salida, por favor ayuda.

Algunos fragmentos de código:

        Proj4js.defs["EPSG:32639"] = "+proj=utm +zone=39 +ellps=WGS84 +datum=WGS84 +units=m +no_defs";


            new OpenLayers.Layer.Vector('Wells', {
                isBaseLayer: false,
                defaultLabelField: 'NAME',
                strategies: [new OpenLayers.Strategy.BBOX(), config.saveStrategy],
                protocol: new OpenLayers.Protocol.WFS({
                    url: config.vectorWfs,
                    featureType: "Wells_PRS",
                    featureNS: "http://gisxxxx",
                    geometryName: "GEOM"
                }),
                schema: config.vectorWfs + "/DescribeFeatureType?version=1.1.0&typename=gisxxxx:Wells_PRS"
                //,projection: new OpenLayers.Projection("EPSG:4326")
                ,version: "1.1.0"
                ,projection: new OpenLayers.Projection("EPSG:32639")
            }), 







            th.map = new OpenLayers.Map(th.body.dom.id, {
                controls: [
                    new OpenLayers.Control.Navigation(),
                    new OpenLayers.Control.PanZoom(),
                    new OpenLayers.Control.LayerSwitcher(),
                    new OpenLayers.Control.ArgParser(),
                    new OpenLayers.Control.Attribution()
                    ,
                    new OpenLayers.Control.MousePosition(
                        {div:document.getElementById("coordinates")}) 
                ],
                layers: layers
                //, displayProjection: new OpenLayers.Projection("EPSG:4326")
                //projection: new OpenLayers.Projection("EPSG:4326")
            });

            var editingBar = new OpenLayers.Control.EditingToolbar(layers[2]);
            var save = new OpenLayers.Control.Button({
                title: "Save Changes",
                trigger: function() {
                    //if(edit.feature) {
                    //    edit.selectControl.unselectAll();
                    //}
                    config.saveStrategy.save();
                // alert('saved');
                }//,
                //displayClass: "olControlSaveFeatures"
            });
            editingBar.addControls([
                save, 
                new config.DeleteFeature(layers[2], {title: "Delete Feature"})
            ]);
            th.map.addControl(editingBar);

Todo esto hace de la lectura de este enlace:

http://www.gistutor.com/openlayers/22-advanced-openlayers-tutorials/47-openlayers-wfs-t-using-a-geoserver-hosted-postgis-layer.html

4voto

ahocevar Puntos 1460

En la definición de protocolo, es necesario establecer srsName:

        new OpenLayers.Layer.Vector('Wells', {
            strategies: [new OpenLayers.Strategy.BBOX(), config.saveStrategy],
            protocol: new OpenLayers.Protocol.WFS({
                url: config.vectorWfs,
                featureType: "Wells_PRS",
                featureNS: "http://gisxxxx",
                geometryName: "GEOM",
                srsName: 'EPSG:4326'
            }),
            version: "1.1.0"
        }),

Usted no necesita proj4js.

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