首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从WFS加载时,不会保留OpenLayers几何名称

从WFS加载时,不会保留OpenLayers几何名称
EN

Stack Overflow用户
提问于 2019-10-18 21:49:23
回答 2查看 213关注 0票数 1

我使用的是OpenLayers 6和GeoServer 2.16 (外加PostGIS);当我从GeoServer加载图层时,将加载要素,但它们的几何图形名称将被覆盖。在GeoServer中,几何体名称(以及PostGIS中的列)是geom。返回的XML反映了这一点。但是OpenLayers对象的几何体名称为geometry,忽略了GeoServer返回的几何体名称。

这看起来微不足道,但却会引发问题,因为当我去编辑特征时,我会用org.geoserver.wfs.WFSException: No such property: geometry出错;因此,虽然我可以在代码中编辑几何图形名称和相应的值,但这似乎是一个糟糕的技巧。

这是一个bug还是一些我在文档中找不到的设置?

任何帮助都将不胜感激!(我没有看到任何反映这个错误的问题(获取WFS是我的情况,所有的问题似乎都是关于POSTing back的)。如果我是复制品,请让我知道。)

EN

回答 2

Stack Overflow用户

发布于 2019-10-20 14:31:31

我不知道这是不是个bug。但这真的很烦人。遗憾的是,在OpenLayers中,没有任何关于编辑特性的更新文档。

有一些解决方案可以解决这个问题:

  1. 更改PostGIS字段名称。导入到PostGIS时,可以重命名PostGIS字段或将几何字段名称设置为geometry。此外,还可以在OpenLayers中手动更改编辑请求。编辑要素的常用方法是向GeoServer发送XML或POST请求。因此,在发送之前,只需将geometry替换为geom!如下所示:

代码语言:javascript
复制
var node = wfs.writeTransaction(null, [feature], null, gml);
var s = new XMLSerializer();
var str = s.serializeToString(node);
str = str.replace("geometry", "geom");
xhr.open('POST', 'http://localhost:8080/geoserver/wfs', true);
xhr.send(str);
票数 0
EN

Stack Overflow用户

发布于 2021-03-11 02:59:04

您可以通过要求OpenLayers从输入中读取几何列的名称来解决此问题。对于GeoJSON

代码语言:javascript
复制
source: new VectorSource({
    format: new GeoJSON({ extractGeometryName: true }),
    url: ...
}),
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58452229

复制
相关文章

相似问题

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