URL経由でフィルターパラメーターをGeoServer WFSに渡しますか?


17

PHPのCURL関数を使用して、geoServerインスタンスからgeoJSON情報を取得しようとしています。完全なxml GetFeatureリクエストを作成しようとするのではなく、url変数を使用してこれを行っています。

ただし、一部のプロパティフィールドのコンテンツに基づいて結果のサブセットを取得できるようにしたいと思います。

したがって、このURLを使用してすべての結果を取得できます。

http://www.myURL.com/geoserver/namespace/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=layername&outputFormat=json&BBOX=1,2,3,4

結果を「フィールドLIKE値」または「フィールド=値」に制限できますか?

Geoserver / ECQLのドキュメントを1時間かけて探しましたが、どれも「この形式でURLに関数を追加する」と明記されていません。その結果、url変数を使用してこれらのタスクを実行できるかどうかは明確ではありませんが、一部の人々はそれを提案しているようです。

GeoServerのWFSとURLパラメーターを使用した、機能するフィルターの明確な例について、誰でも手助けできますか?

回答:


25

このhttp://docs.geoserver.org/latest/en/user/tutorials/cql/cql_tutorial.htmlを読んでいると思います

Boundlessのデモサーバーにクエリを送信しているが、デモレイヤーのtopp:statesがインストールされている場合、独自のサーバーでも同様に動作するサンプルリクエストがあります。

STATE_NAMEがイリノイ州である場所を選択してください

http://demo.opengeo.org/geoserver/wfs?service=wfs&version=1.0.0&request=getfeature&typename=topp:states&PROPERTYNAME=STATE_NAME&CQL_FILTER=STATE_NAME='Illinois'

出力を短縮するためにここで使用される標準WFSパラメーターPROPERTYNAMEの使用に注意してください。すべての属性が必要な場合はそのままにしておくか、一部の属性を選択するためのリストを作成します。

次に、「I」で始まる名前の州を選択します

http://demo.opengeo.org/geoserver/wfs?service=wfs&version=1.0.0&request=getfeature&typename=topp:states&PROPERTYNAME=STATE_NAME&CQL_FILTER=STATE_NAME LIKE 'I%25'

比較文字列は「I%」ですが、少なくともブラウザ(Firefox 31.0)ではURLエンコードされている必要があり、「I%25」になっていることに注意してください。これは、CQLチュートリアルでは言及されていません。独自のフィルターが失敗した場合、フィルター内の他の文字もURLエンコードする必要がある可能性があります。

geojsonが必要な場合は、&outputformat = application / jsonを追加します

http://demo.opengeo.org/geoserver/wfs?service=wfs&version=1.0.0&request=getfeature&typename=topp:states&PROPERTYNAME=STATE_NAME&CQL_FILTER=STATE_NAME LIKE 'I%25'&outputformat=application/json

10
これに苦労している他の人のために、フォーマットを使用してURLに複数のCQLフィルターを追加することもできますが&CQL_FILTER=field=value AND field=value AND field=value、スペースがエンコードされるように「AND」をURLエンコードする必要があります。これが誰かの時間を節約するのに役立つことを願っています。
アンブラー

非常に便利な答えです。ジオサーバーチュートリアルでは、非常に多くのことを省略しています。XY座標を持つフィーチャを返すために、クエリをどのように拡張しますか?または、境界ボックス内のすべての機能?
ルフィデュード
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.