I am using Openlayers + geoext to perform transaction operations in postgis database using geoserver . i can insert spatial data into postgis but cannot insert other data like road name, road type in my road database.
the openlayers generates this code during transaction
service="WFS"
version="1.1.0"
xsi:schemaLocation="http://www.opengis.net/wfs
http://schemas.opengis.net/wfs/1.1.0/wfs.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
xmlns:gml="http://www.opengis.net/gml"
srsName="EPSG:4326">
85.292019896027 27.722567213659 85.303131631935 27.72224973549 85.303290371019 27.72478956084
in geoserver demo i add fid and id so that it looks as
service="WFS"
version="1.1.0"
xsi:schemaLocation="http://www.opengis.net/wfs
http://schemas.opengis.net/wfs/1.1.0/wfs.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
xmlns:gml="http://www.opengis.net/gml"
srsName="EPSG:4326">
85.292019896027 27.722567213659 85.303131631935 27.72224973549 85.303290371019 27.72478956084
**650
400 **
and i get what i want. my question is how can i post the 2nd request (with id and fid) instead of first using openlayers and/or geoext?
Answer
i don't know the answer to this question, but if someone is stuck in same situation. i suggest that you extract the geometry of feature and assign it to an html element. then access the value of same element and use php to insert it to database along with other attributes. it works for simple geometries but is a tedious task, still it is a solution.
My code is like this
var draw = new OpenLayers.Control.DrawFeature(
vector, //layer
OpenLayers.Handler.Path, //Handler
{ multi:true,
type: OpenLayers.Control.TYPE_TOGGLE,
//handlerOptions : {maxVertices: 5}
}//options
);
draw.events.register("featureadded",'' , FeatureAdded);
function FeatureAdded(object){
//alert('feature added');
var oFeature = object.feature;
oFeature.state = OpenLayers.State.INSERT;
**document.getElementById('geometry').value = oFeature.geometry;
//alert(oFeature.geometry);
}
map.addControl(draw);
the sql statement is like this in postgis
INSERT INTO table_name VALUES (ST_GeographyFromText('value of the element(geometry)',SRID))
No comments:
Post a Comment