Javascript 从WFS加载时不保留OpenLayers几何体名称

Javascript 从WFS加载时不保留OpenLayers几何体名称,javascript,typescript,openlayers,geoserver,openlayers-6,Javascript,Typescript,Openlayers,Geoserver,Openlayers 6,我正在使用OpenLayers 6和Geoserver2.16(加上PostGIS);当我从GeoServer加载图层时,会加载要素,但会覆盖其几何体名称。在GeoServer中,几何体名称(以及PostGIS中的列)为geom。返回的XML反映了这一点。但是OpenLayers对象的几何体名称为geometry,忽略GeoServer返回的几何体名称 它看起来微不足道,但会导致一些问题,例如当我编辑功能时,我在org.geoserver.wfs.wfsceceception:没有这样的属性:几

我正在使用OpenLayers 6和Geoserver2.16(加上PostGIS);当我从GeoServer加载图层时,会加载要素,但会覆盖其几何体名称。在GeoServer中,几何体名称(以及PostGIS中的列)为
geom
。返回的XML反映了这一点。但是OpenLayers对象的几何体名称为
geometry
,忽略GeoServer返回的几何体名称

它看起来微不足道,但会导致一些问题,例如当我编辑功能时,我在
org.geoserver.wfs.wfsceceception:没有这样的属性:几何图形
;因此,虽然我可以在代码中编辑几何体名称和相应的值,但这似乎是一个糟糕的攻击

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

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

我不知道这是否是错误。但这真的很烦人。遗憾的是,在OpenLayers中,没有任何关于编辑功能的更新文档。

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

  • 更改PostGIS字段名。导入到PostGIS时,可以重命名PostGIS字段或将几何字段名称设置为
    geometry

  • 此外,您还可以在OpenLayers中手动更改编辑请求。编辑功能的常用方法是向GeoServer发送XML或POST请求。因此,在发送之前,只需将
    几何体
    替换为
    几何体
    !大概是这样的:


  • 我不知道这是不是虫子。但这真的很烦人。遗憾的是,在OpenLayers中,没有任何关于编辑功能的更新文档。

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

  • 更改PostGIS字段名。导入到PostGIS时,可以重命名PostGIS字段或将几何字段名称设置为
    geometry

  • 此外,您还可以在OpenLayers中手动更改编辑请求。编辑功能的常用方法是向GeoServer发送XML或POST请求。因此,在发送之前,只需将
    几何体
    替换为
    几何体
    !大概是这样的:


  • 您可以通过要求OpenLayers从输入中读取几何体列的名称来修复此问题。用于:


    您可以通过要求OpenLayers从输入中读取几何体列的名称来修复此问题。用于:


    这也是我发现的,OpenLayers不尊重传入的XML。为了节省时间,我在PostGIS中改名了。太棒了!但我相信你可以通过字符串替换来修复它。也许你应该先记录这个请求字符串,看看到底是什么。这也是我发现的,OpenLayers不尊重传入的XML。为了节省时间,我在PostGIS中改名了。太棒了!但我相信你可以通过字符串替换来修复它。也许您应该首先记录该请求字符串,以了解到底是什么。
    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);
    
    source: new VectorSource({
        format: new GeoJSON({ extractGeometryName: true }),
        url: ...
    }),