1 GIS空間要素對象
GIS的要素對象一般由屬性數據和幾何數據;“id、name、address”字段這些通常被稱為屬性數據,坐標那些被稱為幾何數據。OGC根據幾何數據將空間要素對象分為Point,MultiPoint,...,MultiPolygon,MultiPolygon等[1],二維空間中,我們簡單的分為點(Point)、線(LineString)、面(Polygon)。
2 屬性查詢與空間查詢
屬性查詢是指屬性數據的過濾查詢,空間查詢是指空間關系的的過濾查詢,空間關系分為方位關系、距離關系、拓撲關系。
3 Geoserver對空間查詢的支持
點擊查詢管網(線)的geoserver請求示例:
http://example.com/geoserver/ows?
service=wfs&
version=2.0.0&
request=GetFeature&
typeNames=namespace:featuretype&
outputFormat=application/json&
cql_filter=BBOX(the_geom, xMin,yMin,xMax,yMax)
服務類型(service,必填):空間查詢通常選擇的是網絡要素服務(WFS),支持WMS,WFS,WCS,WPS,WMTS,CSW[2]等服務,如下圖:
請求類型(request,必填):通常選擇獲取要素(GetFeature),支持以下幾種類型[3]:
圖層(typeNames,必填):geoserver圖層名稱由工作空間名稱:數據存儲名稱組成,如下圖:
輸出格式(outputFormat):通常選擇json格式,會返回Geojson文檔,前端可以直接渲染。支持GML2,GML3,Shapefile,JSON,JSONP,CSV[4].
通用查詢語言過濾器(cql_filter):通用查詢語言(Command Query Language)既可以實現屬性查詢,也可以實現空間查詢,因CQL存在一些局限性,geoserver對它做了拓展(extend),被稱為ECQL[5][6],ECQL支持的空間拓撲關系如下[7]:
關系 | 解釋 |
---|---|
INTERSECTS 相交 |
只要符合包含、被包含、接觸、交叉、壓蓋、相等關系,就是相交,與分離互斥 |
DISJOINT (黑色)與(橙色)分離 |
![]() |
CONTAINS (黑色)包含(橙色) |
![]() |
WITHIN (黑色)被包含(橙色) |
![]() |
TOUCHES (黑色)與(橙色)接觸 |
![]() |
CROSSES (黑色)與(橙色)交叉 |
![]() |
OVERLAPS (黑色)壓蓋(橙色) |
![]() |
EQUALS (黑色)與(橙色)相等 |
![]() |
RELATE 九交模型(DE-9IM)參數 |
九交模型(DE-9IM):通過描述A與B的內部(Interior , I),邊界(Boundary , B),外部(Exterior , E)之間的關系來表達A與B的拓撲關系,例如分離表達為:FF*FF**** 點:沒有邊界(Boundary, B) ![]() 線:兩個端點為邊界(Boundary , B),端點之間為內部(Interior , I) ![]() 面: ![]() |
DWITHIN (黑色)與(橙色)的距離小於閾值 |
距離單位:feet, meters, statute miles, nautical miles, kilometers |
BEYOND (黑色)與(橙色)的距離大於閾值 |
距離單位:feet, meters, statute miles, nautical miles, kilometers |
BBOX (黑色)框選(橙色) |
用左下-右上對角線坐標表示矩形框,xMin,yMin,xMax,yMax |
假設查詢與用戶繪制的面相離的要素對象,那么過濾器可以寫為:DISJOINT(the_geom, POLYGON((-90 40, -90 45, -60 45, -60 40, -90 40)))
。,因此,前端人員需要了解如何構造幾何體,可以參考PostGIS的幾何體構造函數[8]:
- 創建時間: 20211119-5_16.21
- 更新時間: 2021.12.20.1_10.44.18
- 版權作者: 貝可考拉
- 當前版本: v1.0
- 標簽分類: #編程開發 #gis #geoserver
- 索引編號: 324
[9]: Leaflet結合wms和wfs實現點擊選中要素_u011505575的博客-CSDN博客_leaflet wms 過濾