[MapServer-users] asking help

Boubacar Bah bahbouba.909 at gmail.com
Sat Sep 24 14:23:26 PDT 2022


hello, i need your help regarding tinyows wfs transaction.
by the way I put in an online editing application.
in which I used the wfs transaction to send the request to my postgis
database.
but the problem is that if I edit an entity in the application the
transaction does not run to my database.
So I don't know where the problem is in my code.
Any help will be welcome.
Below is the code for the program in question:
<!DOCTYPE html>
<html>
    <head>
        <title>WFS - GetFeature</title>
        <meta charset="utf-8"/>
        <link rel="stylesheet" href="
https://cdn.jsdelivr.net/gh/openlayers/openlayers.github.io@master/en/v6.15.1/css/ol.css
" type="text/css">
        <style>
          .map {
            height: 400px;
            width: 100%;
          }
        </style>
        <script src="
https://cdn.jsdelivr.net/gh/openlayers/openlayers.github.io@master/en/v6.15.1/build/ol.js
"></script>
    </head>
    <body>
        <div id="map" class="map"></div>
        <label >Modifier  </label>
        <button name="modifier" id="mod" value="Edit"></button>
        <label >Creer  </label>
        <button name="Creer" id="creer" value="creer"></button>
        <label >Stop Edition  </label>
        <button name="stop_modif" id="stop_mod" value="stop_Edit"></button>
        <script>
          var draw, modify, snap;
          var maprojection= new ol.proj.Projection({
            code:'EPSG:4326',
            extent:[-20,30,20,50],
            units:'degrees',
            axisOrientation:'enu'
          });
          //surcharge de la projection EPSG:4326
          ol.proj.addEquivalentProjections([ol.proj.get('EPSG:4326'),
maprojection]);
          var wfsSource = new ol.source.Vector({
            format: new ol.format.GeoJSON(),
            url: function(extent) {
                return 'http://127.0.0.1/cgi-bin/tinyows.exe?service=WFS&'+
                'version=1.1.0&request=GetFeature&typename=tows:demo_tyny&'+
                'outputFormat=application/json&srsname=EPSG:4326&'+
                'bbox='+ extent.join(',')+',EPSG:4326';
            },
            strategy: ol.loadingstrategy.bbox,
            projection: maprojection

          });
          var vector = new ol.layer.Vector({
            source: wfsSource,
            style: new ol.style.Style({
                stroke: new ol.style.Stroke({
                    color: 'rgba(0,0,255,1.0)',
                    width:4
                })
            })
          });
          var map = new ol.Map({
            layers:[vector],
            target: document.getElementById('map'),
            view: new ol.View({
                projection: maprojection,
                center: [2.5,46],
                maxZoom: 20,
                zoom: 1
            })
          });
          var etat_edition= document.getElementById('mod');
          var etat_creation= document.getElementById('creer');
          var stop_edition= document.getElementById('stop_mod');
          var draw, snap, modify; //declarees globalement pour les activers
ou non a la guise
          var formatWFS = new ol.format.WFS();
          var xs = new XMLSerializer();
          var formatGML =  new ol.format.GML3({
            version:'1.1.0',
            featureNS: 'http://www.mapserver.org/tinyows',
            url: 'http://127.0.0.1/cgi-bin/tinyows.exe',
            featureType:'demo_tyny',
            srsName:'EPSG:4326',
            geometryName: 'geom',
            SchemaLocation:'
http://127.0.0.1/cgi-bin/tinyows.exe?service=wfs&request=DescribeFeatureType&version=1.1.0&typename=tows:demo_tyny
'
          });
          var transactWFS = function (mode, f) {
            var node;
            switch(mode) {
                case 'insert':
                    mode = formatWFS.writeTransaction([f], null, null,
formatGML);
                    break;
                case 'update':
                    node = formatWFS.writeTransaction(null, [f], null,
formatGML);
                    break;
                case 'delete':
                    node = formatWFS.writeTransaction(null, null, [f],
formatGML);
                    break;
            }
            var xml_data = xs.serializeToString(node);
            fetch('http://localhost/cgi-bin/tinyows.exe?service=wfs', {
                method:'POST',
                body: xml_data
            }).then(function() {
                wfsSource.clear();
            })
          };
          function add_snap() {
            snap = new ol.interaction.Snap({source: vector.getSource()});
            map.addInteraction(snap);
          }
          function add_modify(){
            stopInteractions();
            add_snap();
            modify = new ol.interaction.Modify({source: vector.getSource
()});
            map.addInteraction(modify)
          }
          function add_creer(){
            stopInteractions();
            add_snap();
            draw = new ol.interaction.Draw({
                source: vector.getSource(),
                type:"MultiPolygon",
                geometryName:'geom'
            });
            draw.on('drawend', function(e){
                code_saisi=prompt("code_commune");
                e.feature.setProperties({'code_commune':code_saisi});
                transactWFS('insert',e.feature);
            });
            map.addInteraction(draw);
          }
          function stopInteractions() {
            map.removeInteraction(draw);
            map.removeInteraction(snap);
            map.removeInteraction(modify)

          }
          etat_edition.onclick = function() {
            add_modify();
          };
          etat_creation.onclick = function() {
            add_creer();
          };
          stop_edition.onclick = function () {
            stopInteractions();
          };

        </script>
    </body>
</html>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/mapserver-users/attachments/20220924/ff39e628/attachment.htm>


More information about the MapServer-users mailing list