Truyền tham số bộ lọc cho GeoServer WFS qua URL?


17

Tôi đang cố gắng sử dụng hàm CURL của PHP để tìm nạp thông tin GeoJSON từ một cá thể GeoServer. Tôi đang làm điều này bằng cách sử dụng các biến url thay vì cố gắng xây dựng một yêu cầu GetFeature xml đầy đủ.

Tuy nhiên, tôi muốn có thể có được một tập hợp con các kết quả dựa trên một số nội dung của trường thuộc tính.

Vì vậy, trong khi tôi có thể nhận được tất cả các kết quả bằng cách sử dụng url này:

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

Tôi cũng có thể giới hạn kết quả ở "Trường giá trị THÍCH" hoặc "trường = giá trị" không?

Tôi đã dành một giờ để xem qua tài liệu Geoserver / ECQL và không ai trong số đó nêu rõ "nối các chức năng vào URL của bạn theo định dạng này". Do đó, tôi không rõ liệu có thể sử dụng các biến url để thực hiện các tác vụ này hay không, nhưng một số người dường như cho rằng đó là.

Bất cứ ai cũng có thể giúp với một ví dụ rõ ràng về bộ lọc hoạt động bằng WFS của GeoServer với các tham số URL?

Câu trả lời:


25

Tôi cho rằng bạn đã đọc http://docs.geoserver.org/latest/en/user/tutorials/cql/cql_tutorial.html này

Ở đây có một số yêu cầu mẫu đang gửi truy vấn cho máy chủ demo của Boundless nhưng sẽ hoạt động tương tự với máy chủ của riêng bạn nếu bạn đã cài đặt lớp trình diễn topp: state.

Chọn nơi STATE_NAME là Illinois

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'

Lưu ý việc sử dụng tham số WFS PROPERTYNAME tiêu chuẩn được sử dụng ở đây để rút ngắn đầu ra. Rời khỏi nếu bạn muốn tất cả các thuộc tính hoặc viết một danh sách để chọn một số thuộc tính.

Sau đó chọn trạng thái có tên bắt đầu bằng "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'

Lưu ý rằng chuỗi so sánh là 'I%' nhưng ít nhất là với trình duyệt của tôi (Firefox 31.0), nó phải được mã hóa URL và nó xuất hiện 'I% 25'. Điều này không được đề cập trong hướng dẫn CQL. Nếu bộ lọc của bạn không thành công, điều đó có nghĩa là bạn phải mã hóa URL cũng như một số ký tự khác trong bộ lọc của bạn.

Nếu bạn cần Geojson thêm & 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
Đối với bất kỳ ai khác đang vật lộn với điều này, bạn cũng có thể thêm nhiều bộ lọc CQL vào URL bằng định dạng &CQL_FILTER=field=value AND field=value AND field=value- nhưng bạn cần mã hóa URL "VÀ" để các khoảng trắng được mã hóa. Hy vọng điều này sẽ giúp tiết kiệm thời gian của người khác.
Xe cứu thương

Câu trả lời rất hữu ích, hướng dẫn geoserver chỉ để lại rất nhiều điều. Làm thế nào bạn có thể mở rộng truy vấn để trả về tính năng có tọa độ XY? Hoặc tất cả các tính năng bên trong một hộp giới hạn?
Luffydude
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.