Buộc loại hình học trong lớp WFS hình học hỗn hợp trong QGIS?


8

Tôi có một nguồn WFS bên ngoài phục vụ các loại hình học hỗn hợp - nói cách khác, tôi không có quyền kiểm soát nguồn. Khi thêm lớp QGIS đặt loại hình học thành dòng và do đó tôi không thể định kiểu các điểmđa giác cũng có trong lớp.

Nathan W tuyên bố trong một nhận xét rằng một lớp trong QGIS chỉ có thể chứa một loại hình học. Nếu tôi có thể đặt rõ ràng loại hình học trên một lớp, tôi có thể thêm lớp ba lần và sử dụng một lớp cho mỗi loại hình.

Có thể buộc loại hình học trên một lớp (WFS) trong QGIS không?

Hoặc có một phương pháp nào khác mà tôi có thể sử dụng để định kiểu chính xác tất cả các tính năng trong lớp WFS của mình không?


Tôi nghĩ rằng chúng ta có thể sử dụng khả năng lọc dịch vụ WFS để lọc FeatureTypes tuỳ thuộc vào việc nó là GML: Point, GML: LineString, GML: Polygon, vv sau đó sử dụng như là cơ sở của lớp riêng
nmtoken

Nó thực sự có khả năng nếu máy chủ WFS là Geoserver docs.geoserver.org/ sóng / en / user / film / feft.html . Tuy nhiên, tất cả các máy chủ WFS có thể không hỗ trợ lọc theo loại hình học. Một tùy chọn khác có thể là sử dụng định dạng GDAL VRT và để nó xử lý việc lọc ví dụ với phương ngữ SQLite SQL và (chưa được kiểm tra) như SrcQuery nhưSELECT * from WFS_layer WHERE GeometryType(geometry)='POINT'
user49584

Bạn đã bao giờ có được điều này để làm việc? Tôi hơi ngạc nhiên khi điều này chưa được tích hợp vào QGIS, vì nhiều hình học nằm trong thông số ogc.
auslander

@auslander, Không, xin lỗi, tôi đã không tìm ra cách và để lại vấn đề sau đó.
Châu

1
Tôi không thể; đó là trên một mạng nội bộ. Tuy nhiên, tôi không tìm kiếm bộ lọc GeoServer; Tôi đang tìm kiếm bộ lọc QGIS. Từ những gì tôi có thể nói, QGIS không cho phép tôi truy cập URL với các bộ lọc được thêm từ trình xử lý WFS - trình xử lý lấy URL WFS cơ sở và sau đó các đối số / bộ lọc được thêm vào trong trình tạo biểu thức giống như SQL. Tôi đã không thể tìm thấy bất kỳ tài liệu nào về tính năng đặc biệt này của QGIS.
auslander

Câu trả lời:


2

Trong QGIS 3.6, điều này là không thể nếu thêm WFS thông qua bảng điều khiển trình duyệt. Tuy nhiên, nếu bạn thêm WFS thông qua Layer> Thêm Layer> Thêm WFS Layer thì bạn có thể áp dụng SQL cho lớp.

Vì vậy, từ đầu, hãy làm như sau:

  • Sau khi bạn chọn Lớp> Thêm lớp> Thêm lớp WFS, trong cửa sổ tiếp theo chọn Mới để thêm dịch vụ mới.
  • Nhập tên và URL của dịch vụ.
  • Nhấp vào tab Cơ bản và nhập thông tin đăng nhập của bạn nếu được yêu cầu.
  • Để các cài đặt Tùy chọn WFS làm mặc định và bấm OK.
  • Nếu bạn đã nhập thông tin đăng nhập, bạn sẽ nhận được cảnh báo về việc lưu trữ mật khẩu. Nhấn OK để tiếp tục.
  • Bấm Kết nối để kết nối với dịch vụ mới được thêm và tô sáng lớp bạn muốn và bấm Xây dựng truy vấn.
  • Trong mệnh đề Where thêm vào như sau: geometryType(geom_field) = 'LineString'thay thế geom_field bằng tên của trường lưu trữ hình học. Bạn sẽ có thể tìm thấy điều này trong danh sách thả xuống Cột bên phải. Các tùy chọn hình học bao gồm Point, MultiPoint, LineString, linearRing, MultiLineString, Polygon, MultiPolygon, GeometryCollectionClick OK.
  • Nhấp vào Thêm để thêm lớp vào bản đồ.
  • Nhấp vào Đóng để trở về bản đồ.

Tôi không thể tìm thấy điều này ở bất cứ đâu và đã tự mình tìm ra nó bằng cách sử dụng một phần câu trả lời cho câu hỏi này như một điểm khởi đầu. Tôi hy vọng nó sẽ giúp những người khác tìm kiếm cách giải quyết tương tự cho đến khi QGIS làm cho nó dễ dàng hơn một chút.


1

Theo tôi biết, điều này hiện không thể thực hiện được nhưng đã có một yêu cầu tính năng liên quan: https://issues.qgis.org/issues/17372

Kiểm tra ngay bây giờ với bag:verblijfsobjectví dụ từ ý kiến:

<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>

Một truy vấn như sau (trong đó chúng tôi không chọn hình dạng điểm), như một phần của thông tin kết nối trong Trình quản lý nguồn dữ liệu | WFS> Build Query, kết quả là các điểm được trả về.

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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.