我使用SQL Server插件为geoserver(http://docs.geoserver.org/stable/en/user/data/database/sqlserver.html)使用WMS显示一些几何。这很好用。我也能够毫无困难地将几何图形提取为矢量。
现在我需要将检索到的矢量添加到另一个图层并将其保存到SQL Server数据库中的表中。这导致了一些问题。
这是一些代码:
saveStrategy = new OpenLayers.Strategy.Save();
saveStrategy.events.register("success", '', ChangesSuccess);
saveStrategy.events.register("fail", '', ChangesFailed);
function ChangesSuccess(e) {
alert('Done');
}
function ChangesFailed(e) {
alert('Failed');
}
selectionLayer = new OpenLayers.Layer.Vector(
"SelectionLayer",
{
strategies: [new OpenLayers.Strategy.BBOX(), saveStrategy]
, projection: new OpenLayers.Projection("EPSG:25832")
, protocol: new OpenLayers.Protocol.WFS({
version: "1.1.0",
url: "http://someserver.cloudapp.net:8181/geoserver/wfs",
featurePrefix: 'xxxx',
featureType: "xxxxxxxxx",
featureNS: "xxx.xxx/xxx",
geometryName: "xxxxx"
})
, displayInLayerSwitcher: false
});
selectControl.events.register("featureselected", this, function (e) {
var feat = e.feature;
feat.state = OpenLayers.State.INSERT;
selectionLayer.addFeatures([feat]);
saveStrategy.save();
);
当我尝试保存新添加的功能时,我在保存策略的失败事件中遇到以下异常:
“java.lang.AbstractMethodError:org.geotools.jdbc.BasicSQLDialect.encodeGeometryValue(Lcom / vividsolutions / jts / geom / Geometry; ILjava / lang / StringBuffer;)V org.geotools.jdbc.BasicSQLDialect.encodeGeometryValue(Lcom / vividsolutions / JTS /的geom /几何; ILjava /郎/ StringBuffer的;)V“
我不知道该在这里尝试什么,但如果有人之前遇到过这个问题,或者对可能出现的问题有一些建议,我很高兴听到它。现在是凌晨1点50分,在修复之前可能不会睡觉所以所有建议都非常受欢迎:)