[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