首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >geoserver wfs-t是只读异常。

geoserver wfs-t是只读异常。
EN

Stack Overflow用户
提问于 2017-02-01 05:37:14
回答 3查看 2.9K关注 0票数 1

我正在尝试使用geoserver通过WFS-T保存更改:这是我从geoserver获得功能的代码。

代码语言:javascript
复制
var sourceWFS = new ol.source.Vector({
    loader: function (extent) {
        $.ajax('http://127.0.0.1:8080/geoserver/kairosDB/ows', {
            type: 'GET',
            data: {
                service: 'WFS',
                version: '1.1.0',
                request: 'getFeature',
                typename: 'wfs_geom',
                srsname: 'EPSG:3857',
                bbox: extent.join(',') + ',EPSG:3857'
            }
        }).done(function (response) {
            sourceWFS.addFeatures(formatWFS.readFeatures(response));
        });
    },
    // strategy: ol.loadingstrategy.tile(ol.tilegrid.createXYZ()),
    strategy: ol.loadingstrategy.bbox,
    projection: 'EPSG:3857'
});

这是将特性保存到服务器的代码。

代码语言:javascript
复制
var formatGML = new ol.format.GML({
    featureNS: 'http://127.0.0.1:8080/geoserver/kairosDB',
    featureType: 'wfs_geom',
    srsName: 'EPSG:3857'
});

但是当我saveFeature到服务器时,出现了这个错误

代码语言:javascript
复制
2017-02-01 14:30:02,339 ERROR [geoserver.ows] - 
org.geoserver.wfs.WFSTransactionException: {http://127.0.0.1:8080/geoserver/kairosDB}wfs_geom is read-only
    at org.geoserver.wfs.Transaction.execute(Transaction.java:269)
    at org.geoserver.wfs.Transaction.transaction(Transaction.java:106)
    at org.geoserver.wfs.DefaultWebFeatureService.transaction(DefaultWebFeatureService.java:172)
    at sun.reflect.GeneratedMethodAccessor195.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)

wfs_geom表已经有一个主键,请创建脚本:

代码语言:javascript
复制
CREATE TABLE public.wfs_geom
(
    id bigint NOT NULL,
    geometry geometry,
    CONSTRAINT wfs_geom_pkey PRIMARY KEY (id)
)
WITH (
    OIDS = FALSE
)
TABLESPACE pg_default;

ALTER TABLE public.wfs_geom
    OWNER to postgres;

GRANT ALL ON TABLE public.wfs_geom TO postgres;

-- Index: sidx_wfs_geom

-- DROP INDEX public.sidx_wfs_geom;

CREATE INDEX sidx_wfs_geom
    ON public.wfs_geom USING gist
    (geometry)
    TABLESPACE pg_default;

你能帮我一下吗?

EN

回答 3

Stack Overflow用户

发布于 2017-02-01 06:25:57

这就像一种魅力:http://osgeo-org.1560.x6.nabble.com/Read-only-error-when-editing-a-WFS-T-td5284537.html

“数据安全”部分中有一条规则允许为所有人写入此工作区,但不允许匿名用户写入所有工作区(..w)。奇怪的行为是,昨天我可以使用客户端编辑该层。我不明白为什么,而且使用QGIS我不能编辑层,但是QGIS支持WFS-T。

票数 2
EN

Stack Overflow用户

发布于 2018-05-03 16:31:15

在GeoServer中,您需要更改两件事才能实现这一点。

  1. 在GeoServer上的WFS选项卡下启用事务处理
  2. 在GeoServer上的Data选项卡下,您需要编辑规则..w以启用角色ROLE_ANONYMOUS

在做了这两件事之后,我能够消除这个错误,并将数据发布到GeoServer。

票数 2
EN

Stack Overflow用户

发布于 2022-05-24 08:21:15

向表中添加主键约束。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41972613

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档