ユーザーがジオサーバレイヤ(store:postgres)のすべての機能を取得してテーブルに表示するアプリケーションを構築しています。これを行うために、私はOWSLib(get_feature)を使用します。WFSジオサーバーレイヤのデータをプログラムで更新する方法
ここで、データ編集機能(WFS-T)を追加する必要があります。私の知る限り、OWSLibは追加/更新機能を提供していません。
この種の機能を実装する方法は何ですか?
これは私のコードの一部です:
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
私はを通してこのXMLを実行すると
としては、私はレイヤーの上にWFS-Tおよび更新された値を実現するために、Pythonの要求のlibを使用する提案しましたgeoserverデモページ、それは正常に動作します。レイヤのプロパティが更新されます。私は私の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>
可能な複製https://gis.stackexchange.com/questions/184309/available-python-client-libraries-for-wfs-transactions –
ああ素晴らしいです。そのリンクが見つかりません。彼らの道はスムーズに舗装されていないようですが、それは助けになりますよね? – user1919
これらは、よく定義された標準のHTTP投稿要求です。 –