すべてのプロダクト
Search
ドキュメントセンター

:in_polygon

最終更新日:Dec 28, 2024

機能関数

フィルター句で機能関数を使用して、フィルター条件を定義できます。数値を返す機能関数は、ソート句でソートに使用できます。

機能関数のパラメーターで参照するフィールドは、各関数の説明に基づいてインデックスフィールドまたは属性フィールドとして構成する必要があります

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

image..png

  • user_x_coordinate: ユーザーのx座標。値はDOUBLE型である必要があります。

  • user_y_coordinate: ユーザーのy座標。値はDOUBLE型である必要があります。

  • has_multi_polygons: polygon_fieldパラメーターに複数の独立したポリゴンが含まれているかどうかを示します。デフォルト値はfalseで、ポリゴンが1つだけ存在することを示します。

3. 戻り値

N個のポリゴンのうち、一致したポリゴンの番号が返されます。戻り値はINT型です。一致するポリゴンがない場合は、0が返されます。

4. シナリオ

シナリオ1: ユーザーが加盟店の配送半径内にあるかどうかを判断します。たとえば、coordinatesフィールドが加盟店の配送半径を示し、ユーザーの座標が(120.307234, 39.294245)であるとします。次に、次のクエリ句を使用して、配送半径をサポートする加盟店を検索できます。

query=default:'Foods'&&filter=in_polygon(coordinates, 120.307234, 39.294245)>0

5. 使用上の注意

  • 関数のパラメーターで参照するフィールドは、属性フィールドとして構成する必要があります。

  • 最大50個のポリゴンがサポートされています。ポリゴンの数が50を超える場合、関連するドキュメントは計算でスキップされます。

  • リングなどの穴のあるポリゴンはサポートされていません。

  • 複数の分離した部分を持つポリゴンはサポートされていません。

  • 座標の数が0の場合、座標は存在せず、0が返されます。

  • 座標の数が奇数の場合、データエラーが発生し、0が返されます。

  • ユーザポイントが特定のポリゴンの辺上にある場合、一致は成功と見なされ、1または特定のポリゴンの添え字が返されます。

  • ポリゴンプラグインは計算負荷が高いため、クエリのパフォーマンスに影響を与える可能性があります。頂点の数を制限することをお勧めします。ビジネス要件に基づいて、テストを実行して頂点の数を決定してください。