QGISの混合ジオメトリWFSレイヤーのジオメトリタイプを強制しますか?


8

混合ジオメトリタイプを提供する外部WFSソースがあります。つまり、ソースを制御できません。レイヤーを追加すると、QGISはジオメトリタイプをラインに設定するため、レイヤー内に含まれるポイントポリゴンのスタイルを設定できません。

Nathan W は、 QGISのレイヤーには1つのジオメトリタイプしか含めることができないとコメント述べています。レイヤーにジオメトリタイプを明示的に設定できた場合、レイヤーを3回追加し、各ジオメトリタイプに1つのレイヤーを使用できます。

QGISの(WFS)レイヤーにジオメトリタイプを強制することは可能ですか?

または、WFSレイヤーのすべての機能を正しくスタイルするために使用できる別の方法はありますか?


WFSサービスフィルター機能を使用して、FeatureTypesをgml:Point、gml:LineString、gml:Polygonなどに応じてフィルターできるので、これを個々のレイヤーの基礎として使用することができると思います
nmtoken

WFSサーバーがGeoserver docs.geoserver.org/stable/en/user/filter/function.htmlである場合、それは実際に可能であるようです。ただし、すべてのWFSサーバーがジオメトリタイプによるフィルタリングをサポートしていない場合があります。別のオプションは、GDAL VRT形式を使用して、たとえばSQLite SQLダイアレクトおよび(テストされていない)SrcSQLのようなフィルタリングを処理することですSELECT * from WFS_layer WHERE GeometryType(geometry)='POINT'
user30184

これを機能させたことがありますか?複数のジオメトリがogc仕様の範囲内にあるため、これがまだQGISに組み込まれていないことに少し驚いています。
auslander 2017年

@auslander、申し訳ありません、私は方法を見つけられなかったため、問題を当時のままにしました。
Chau

1
できません。内部ネットワーク上にあります。ただし、GeoServerフィルタリングは探していません。QGISフィルタリングを探しています。QGISでは、WFSハンドラーから追加されたフィルターを使用してURLにアクセスすることはできません。ハンドラーはベースWFS URLを受け取り、SQLのような式ビルダーに引数/フィルターが追加されます。QGISのこの特定の機能に関するドキュメントを見つけることができませんでした。
auslander 2017年

回答:


2

QGIS 3.6では、ブラウザーパネルからWFSを追加する場合、これは不可能です。ただし、[レイヤー]> [レイヤーの追加]> [WFSレイヤーの追加]でWFSを追加すると、SQLをレイヤーに適用できます。

したがって、最初から、次の手順を実行します。

  • [レイヤー]> [レイヤーの追加]> [WFSレイヤーの追加]を選択した後、次のウィンドウで[新規]を選択して新しいサービスを追加します。
  • サービスの名前とURLを入力します。
  • [基本]タブをクリックし、必要に応じて資格情報を入力します。
  • WFSオプション設定をデフォルトのままにして、[OK]をクリックします。
  • 資格情報を入力すると、パスワードの保存に関する警告が表示されます。OKを押して続行します。
  • [接続]をクリックして新しく追加されたサービスに接続し、目的のレイヤーを強調表示して、[クエリの作成]をクリックします。
  • Where句に次を追加しますgeometryType(geom_field) = 'LineString'。geom_fieldを、ジオメトリを格納するフィールドの名前に置き換えます。これは、右側の[列]ドロップダウンで確認できます。ジオメトリオプションには、Point、MultiPoint、LineString、LinearRing、MultiLineString、Polygon、MultiPolygon、GeometryCollectionClick OKがあります。
  • [追加]をクリックして、レイヤーをマップに追加します。
  • [閉じる]をクリックしてマップに戻ります。

私はこれをどこにも見つけることができず、この質問に対する答えの一部を出発点として使用して自分でそれを見つけ出しました。QGISによって少し簡単になるまで、同じ回避策を探している他の人に役立つことを願っています。


1

私の知る限り、これは現在不可能ですが、関連する機能のリクエストがありますhttps : //issues.qgis.org/issues/17372

bag:verblijfsobjectコメントの例で今すぐ確認する:

<xsd:complexContent>
    <xsd:extension base="gml:AbstractFeatureType">
        <xsd:sequence>
            <xsd:element maxOccurs="1" minOccurs="0" name="identificatie" nillable="true" type="xsd:decimal"/>
            <xsd:element maxOccurs="1" minOccurs="0" name="oppervlakte" nillable="true" type="xsd:decimal"/>
            <xsd:element maxOccurs="1" minOccurs="0" name="status" nillable="true" type="xsd:string"/>
            <xsd:element maxOccurs="1" minOccurs="0" name="gebruiksdoel" nillable="true" type="xsd:string"/>
            <xsd:element maxOccurs="1" minOccurs="0" name="openbare_ruimte" nillable="true" type="xsd:string"/>
            <xsd:element maxOccurs="1" minOccurs="0" name="huisnummer" nillable="true" type="xsd:decimal"/>
            <xsd:element maxOccurs="1" minOccurs="0" name="huisletter" nillable="true" type="xsd:string"/>
            <xsd:element maxOccurs="1" minOccurs="0" name="toevoeging" nillable="true" type="xsd:string"/>
            <xsd:element maxOccurs="1" minOccurs="0" name="postcode" nillable="true" type="xsd:string"/>
            <xsd:element maxOccurs="1" minOccurs="0" name="woonplaats" nillable="true" type="xsd:string"/>
            <xsd:element maxOccurs="1" minOccurs="0" name="actualiteitsdatum" nillable="true" type="xsd:dateTime"/>
            <xsd:element maxOccurs="1" minOccurs="0" name="bouwjaar" nillable="true" type="xsd:decimal"/>
            <xsd:element maxOccurs="1" minOccurs="0" name="pandidentificatie" nillable="true" type="xsd:decimal"/>
            <xsd:element maxOccurs="1" minOccurs="0" name="pandstatus" nillable="true" type="xsd:string"/>
            <xsd:element maxOccurs="1" minOccurs="0" name="geometrie" nillable="true" type="gml:PointPropertyType"/>
            <xsd:element maxOccurs="1" minOccurs="0" name="pandgeometrie" nillable="true" type="gml:GeometryPropertyType"/>
        </xsd:sequence>
    </xsd:extension>
</xsd:complexContent>

データソースマネージャー内の接続情報の一部として、次のようなクエリ(ポイントジオメトリを選択しない場合)| WFS>クエリの構築、ポイントが返されます。

SELECT verblijfsobject.identificatie, verblijfsobject.oppervlakte, verblijfsobject.status, verblijfsobject.gebruiksdoel, verblijfsobject.openbare_ruimte, verblijfsobject.huisnummer, verblijfsobject.huisletter, verblijfsobject.toevoeging, verblijfsobject.postcode, verblijfsobject.woonplaats, verblijfsobject.actualiteitsdatum, verblijfsobject.bouwjaar, verblijfsobject.pandstatus, verblijfsobject.pandgeometrie FROM verblijfsobject

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.