全部產品
Search
文件中心

:in_polygon

更新時間:Jul 13, 2024

功能函數項

外掛程式功能函數可以用在filter子句作為過濾和篩選條件,而傳回值為數值型的功能函數在sort子句中,用來做排序。

其中功能函數參數出現的文檔欄位需根據對應函數文檔提示,建立為索引或屬性.

in_polygon : 判斷某個點是否在某個多邊形範圍內,一般用於配送範圍判斷

1.詳細用法:

in_polygon(polygon_field, user_x_coordinate, user_y_coordinate, has_multi_polygons=”false”)

2.參數:

  • polygon_field: 表示商家配送範圍的欄位名,類型必須為DOUBLE_ARRAY, 欄位值依次為配送多邊形有序定點的x,y座標(先x後y),頂點務必保證有序(順時針、逆時針均可),如果有多個(N個)配送多邊形,則第一個值表示多邊形個數,第2~N+1的值表示後續每個多邊形的頂點數(不是座標數哦!!),第N+2值開始依次表示各多邊形的頂點x,y座標(N的範圍為[1,50]

1

  • user_x_coordinate: 使用者的x座標, double類型

  • user_y_coordinate: 使用者的y座標, double類型

  • has_multi_polygons:表示polygon_filed是否包含多個獨立的多邊形需要判斷。預設為false,表示只有單一的多邊形。

3.傳回值:

int,在多邊形內返回第幾個多邊形匹配, 否則返回0。

4.適用情境:

情境1:判斷使用者是否在商家的配送範圍。如商家配送範圍的欄位為coordinates, 使用者位置座標為 (120.307234, 39.294245),則過濾在配送範圍內的商家查詢可寫為:

 query=default:’美食’&&filter=in_polygon(coordinates, 120.307234, 39.294245)>0

5.注意事項:

  • 函數參數依賴欄位需建立為屬性

  • 最多支援50個多邊形,超過則跳過該文檔的計算;

  • 不支援有孔多邊形,如環;

  • 不支援多個分離部分的多邊形;

  • 座標個數為0,表示沒有座標,返回0;

  • 座標個數為奇數個,則認為資料有誤,返回0;

  • 使用者點位於多邊形邊上,則認為匹配成功,返回為1(或具體多邊形下標)。

  • 多邊形外掛程式計算量較大,對查詢效能有影響,建議盡量控制頂點個數,具體值請根據自己實際情況進行測試得出。