2016-07-13 10 views
1

ユーザーがジオサーバレイヤ(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> 
+0

可能な複製https://gis.stackexchange.com/questions/184309/available-python-client-libraries-for-wfs-transactions –

+0

ああ素晴らしいです。そのリンクが見つかりません。彼らの道はスムーズに舗装されていないようですが、それは助けになりますよね? – user1919

+0

これらは、よく定義された標準のHTTP投稿要求です。 –

答えて

1

エラーメッセージ(異常に)ここでは、実際に役に立つ - 層が読み込まれた場合にのみ、あなたはそれに対してアップデートを実行することができます。ですから、問題はなぜレイヤーが読み取り専用になっているのでしょうか?最も可能性の高い理由(特に、トランザクションがデモページで動作する場合)は、Pythonスクリプトがサーバーで認証されなかったことが原因です。

auth=("admin","geoserver") 

をリクエストする(デフォルトのパスワードを変更していないと仮定):あなたが追加する必要があるようthis pageから、それが見えます。

+0

ありがとうございました!それはそれだった。これを知るには多くの時間がかかります! – user1919

関連する問題