[TinyOWS-users] Problem inserting new features

Jessica Lapointe jlapointe at mapgears.com
Tue Dec 6 12:19:54 EST 2011


Hello !
Thanks a lot for your help and your explanations. Reordering columns
in postgres without losing data being indeed difficult, I'll try
Nicolás' class as soon as I can.
Thanks again,
Jessica Lapointe

2011/12/5 Gissur Þórhallsson <gissur at loftmyndir.is>:
> Yeah - I've had this problem too.
>
> Reordering the attribute fields in postgis has thus far been the only
> reliable way of ensuring that this does not occur.
> ( I could never get that OpenLayers strategy to work for my use-case, but so
> it goes).
>
> Regrettably, postgres does not support column re-ordering , so the only way
> is to do it via dropping/recreating columns or tables.
>
> Kind regards,
> Gissur
>
>
> On Sat, Dec 3, 2011 at 12:42 PM, Rahkonen Jukka <Jukka.Rahkonen at mmmtike.fi>
> wrote:
>>
>> Hi,
>>
>> Yes, order of attributes does matter in WFS. Here is a part of a
>> FeatureType schema that comes with DescribeFeatureType request
>>
>> <xs:complexType name="osm_pointType">
>> <xs:complexContent><xs:extension base="gml:AbstractFeatureType">
>> <xs:sequence>
>> <xs:element name="osm_id" type="int" nillable="true" minOccurs="0"
>> maxOccurs="1"/>
>> <xs:element name="note" type="string" nillable="true" minOccurs="0"
>> maxOccurs="1"/>
>> ...
>>
>> List of properities is defined to be "xs:sequence" which means that they
>> must appear in correct order if they are used in the requests which contain
>> XML. The only reliable way for knowing the correct order is to make the
>> client to do DescribeFeatureType and read it from the service.
>>
>> GET requests without any XML do not care about the propertyname order and
>> both following requests work.
>>
>>
>> http://188.64.1.61/cgi-bin/tinyows?service=wfs&version=1.0.0&request=GetFeature&typename=lv:mml_railway&BBOX=246700,6780800,436400,6924000&propertyname=sahko,the_geom&maxfeatures=1
>>
>> http://188.64.1.61/cgi-bin/tinyows?service=wfs&version=1.0.0&request=GetFeature&typename=lv:mml_railway&BBOX=246700,6780800,436400,6924000&propertyname=the_geom,sahko&maxfeatures=1
>>
>> However, if the latter is send as http POST it will probably lead to an
>> error because "the_geom" should come after "sahko".
>>
>> -Jukka Rahkonen-
>>
>> ________________________________
>> Nicolás Ardissono wrote:
>>
>> I had the same problem, and you have two options to solve it. Because is a
>> field order problem.
>> Check with pgadmin how your fields are orderer, you have first name and
>> then the_geom, so tinyows doesn't except anything after the_geom. What you
>> have to do is delete the name field and create it again so it will be after
>> the_geom, with that it works for me.
>>
>> Or you can try this script, but not always work:
>>
>> /**
>>  * @requires OpenLayers/Strategy.js
>>  */
>>
>> /**
>>  * Allow to force the ordering of attributes before saving
>>  *
>>  * @class
>>  */
>> OpenLayers.Strategy.SaveAttrOrder =
>>  OpenLayers.Class(OpenLayers.Strategy,
>> {
>>
>>  /**
>>   * Order of attributes to save.
>>   *
>>   * Only the attributes listed here will be saved!
>>   *
>>   * @type {Array.<string>}
>>   */
>>  order: [],
>>
>>  /**
>>   * Strategy to communicate with for save operation
>>   *
>>   * @type {OpenLayers.Strategy.Save}
>>   */
>>  saveStrategy: null,
>>
>>  /**
>>   * APIMethod: activate
>>   * Activate the strategy.  Register any listeners, do appropriate setup.
>>   *
>>   * Returns:
>>   * {Boolean} The strategy was successfully activated.
>>   */
>>  activate: function() {
>>    var activated = OpenLayers.Strategy.prototype.activate.call(this);
>>    if (activated) {
>>      this.saveStrategy.events.on({
>>          start: this.beforeSave,
>>          scope: this
>>      });
>>    }
>>    return activated;
>>  },
>>
>>  /**
>>   * APIMethod: deactivate
>>   * Deactivate the strategy.  Unregister any listeners, do appropriate
>>   *     tear-down.
>>   *
>>   * Returns:
>>   * {Boolean} The strategy was successfully deactivated.
>>   */
>>  deactivate: function() {
>>    var deactivated = OpenLayers.Strategy.prototype.deactivate.call(this);
>>    if(deactivated) {
>>      this.saveStrategy.events.un({
>>          start: this.beforeSave,
>>          scope: this
>>      });
>>    }
>>    return deactivated;
>>  },
>>
>>  beforeSave: function(event) {
>>    var features = event.features;
>>    features.forEach(dojo.hitch(this, 'reorderFeature'));
>>  },
>>
>>  reorderFeature: function(feature) {
>>    var obj = {};
>>    this.order.forEach(
>>        function(attr) {
>>          if (feature.attributes.hasOwnProperty(attr)) {
>>            obj[attr] = feature.attributes[attr];
>>          }
>>        });
>>    feature.attributes = obj;
>>  }
>>
>>
>>
>> Hope this help
>>
>> ________________________________
>> De: Jessica Lapointe <jlapointe at mapgears.com>
>> Para: tinyows-users at lists.maptools.org
>> Enviado: viernes, 2 de diciembre de 2011 16:41
>> Asunto: [TinyOWS-users] Problem inserting new features
>>
>> Hello,
>> I'm having trouble in inserting new features in my db. In fact I have
>> the same problem as described in there:
>>
>> http://lists.maptools.org/pipermail/tinyows-users/2010-November/000230.html
>> I use openlayers 2.11 and tinyows trunk revision 615.
>>
>> I'm able to update and delete data with no problem. If I insert simple
>> features containing only geometry it also works. But if my new feature
>> has data, my xml response in firebug will be "XML request isn't
>> valid". Tinyows' log says :
>>
>> [Fri Dec  2 14:30:11 2011] [ERROR] Element '{http://127.0.0.1/}name':
>> This element is not expected.
>>
>> [Fri Dec  2 14:30:11 2011] [ERROR] XML request isn't valid
>>
>> The xml sent to tinyows is the following:
>>
>> <wfs:Transaction xmlns:wfs="http://www.opengis.net/wfs" service="WFS"
>> version="1.0.0" xsi:schemaLocation="http://www.opengis.net/wfs
>> http://schemas.opengis.net/wfs/1.0.0/WFS-transaction.xsd"
>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
>> <wfs:Insert>
>> <feature:popplace xmlns:feature="http://127.0.0.1/">
>> <feature:the_geom>
>> <gml:Point xmlns:gml="http://www.opengis.net/gml" srsName="EPSG:4326">
>> <gml:coordinates decimal="." cs="," ts="
>> ">-45.925780534744,-11.97656750679</gml:coordinates>
>> </gml:Point>
>> </feature:the_geom>
>> <feature:name>test</feature:name>
>> </feature:popplace>
>> </wfs:Insert>
>> </wfs:Transaction>
>>
>> Any help would be appreciated.
>> _______________________________________________
>> TinyOWS-users mailing list
>> TinyOWS-users at lists.maptools.org<mailto:TinyOWS-users at lists.maptools.org>
>> http://lists.maptools.org/mailman/listinfo/tinyows-users
>>
>>
>> _______________________________________________
>> TinyOWS-users mailing list
>> TinyOWS-users at lists.maptools.org
>> http://lists.maptools.org/mailman/listinfo/tinyows-users
>
>
>
>
> --
> Gissur Þórhallsson
>
> Loftmyndir ehf.
> Laugavegur 13
> IS 101 Reykjavík - Iceland
> sími (tel): (+354) 540 2500
> tölvupóstur (email): gissur at loftmyndir.is
>
> _______________________________________________
> TinyOWS-users mailing list
> TinyOWS-users at lists.maptools.org
> http://lists.maptools.org/mailman/listinfo/tinyows-users
>


More information about the TinyOWS-users mailing list