gpt4 book ai didi

python - 如何以编程方式更新 WFS geoserver 层中的数据

转载 作者:太空宇宙 更新时间:2023-11-03 16:21:58 26 4
gpt4 key购买 nike

我正在构建一个应用程序,用户可以在其中检索地理服务器层(存储:postgres)的所有功能并将它们显示在表格上。为此,我使用 OWSLib (get_feature)。

现在我需要添加编辑数据的功能(WFS-T)。据我所知 OWSLib 不提供添加/更新功能。

如何实现这种功能?

按照建议,我使用 python requests lib 来实现 WFS-T 并更新层上的值:

这是我的代码的一部分:

      import requests
url = 'http://localhost:8080/geoserver/wfs'


xml = """<wfs:Transaction service="WFS" version="1.0.0"
xmlns:ogc="http://www.opengis.net/ogc"
xmlns:wfs="http://www.opengis.net/wfs">
<wfs:Update typeName="geonode:tjk_nhr_shockriskscore">
<wfs:Property>
<wfs:Name>Adm2_NAME</wfs:Name>
<wfs:Value>test_2dsfdsfsdfdsfds</wfs:Value>
</wfs:Property>
<ogc:Filter>
<ogc:FeatureId fid="tjk_nhr_shockriskscore.1"/>
</ogc:Filter>
</wfs:Update>
</wfs:Transaction>"""
headers = {'Content-Type': 'application/xml'} # set what your server accepts
print requests.post(url, data=xml, headers=headers).text

当我通过 geoserver 演示页面运行此 xml 时,它工作正常。图层的属性得到更新。当我通过 python 脚本执行它时,我得到一个服务异常:

   <?xml version="1.0" ?>
<ServiceExceptionReport
version="1.2.0"
xmlns="http://www.opengis.net/ogc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.opengis.net/ogc http://schemas.opengis.net/wfs/1.0.0/OGC-exception.xsd">
<ServiceException>
{http://www.geonode.org/}tjk_nhr_shockriskscore is read-only
</ServiceException></ServiceExceptionReport>

最佳答案

错误消息(通常)在这里实际上很有帮助 - 如果图层是只读的,则无法对其运行更新。那么问题就变成了为什么该层是只读的?最可能的原因(特别是如果交易在演示页面中有效)是您的 python 脚本未通过服务器进行身份验证。来自 this page看来您需要添加:

auth=("admin","geoserver") 

根据您的请求(假设您没有更改默认密码)。

关于python - 如何以编程方式更新 WFS geoserver 层中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38358764/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com