我使用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分,可能不是在此之前上床睡觉是因为所有的建议都非常受欢迎:)