全部产品
Search
文档中心

:in_polygon

更新时间:Jun 26, 2025

Fungsi-fungsi fungsionalitas

Anda dapat menggunakan fungsi-fungsi fungsionalitas dalam klausa filter untuk menentukan kondisi filter. Fungsi-fungsi ini yang mengembalikan nilai numerik juga dapat digunakan dalam klausa pengurutan untuk keperluan pengurutan.

Bidang yang Anda referensikan dalam parameter fungsi-fungsi fungsionalitas harus dikonfigurasikan sebagai bidang indeks atau bidang atribut berdasarkan deskripsi setiap fungsi.

in_polygon: menentukan apakah sebuah titik berada di dalam area geografis poligon tertentu. Secara umum, fungsi ini digunakan untuk menentukan apakah seorang pengguna berada dalam radius pengiriman pedagang

1. Sintaksis

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

2. Parameter

  • polygon_field: Nama bidang yang menunjukkan radius pengiriman pedagang. Bidang ini harus bertipe DOUBLE_ARRAY. Nilai-nilai dalam bidang tersebut mewakili koordinat x dan y dari simpul-simpul terurut poligon pengiriman. Pastikan bahwa simpul-simpul diurutkan searah jarum jam atau berlawanan arah jarum jam. Jika ada N poligon pengiriman, nilai pertama menunjukkan jumlah poligon pengiriman. Nilai kedua hingga (N+1) menunjukkan jumlah simpul dari setiap poligon pengiriman, bukan jumlah koordinat. Nilai (N+2) hingga akhir mewakili koordinat x dan y dari simpul-simpul setiap poligon pengiriman. N berkisar antara 1 hingga 50.

image..png

  • user_x_coordinate: Koordinat x dari pengguna. Nilainya harus bertipe DOUBLE.

  • user_y_coordinate: Koordinat y dari pengguna. Nilainya harus bertipe DOUBLE.

  • has_multi_polygons: Menunjukkan apakah parameter polygon_field berisi beberapa poligon independen. Nilai defaultnya adalah false, yang berarti hanya satu poligon yang tersedia.

3. Nilai Kembali

Nomor poligon yang cocok di antara N poligon akan dikembalikan. Nilai kembaliannya bertipe INT. Jika tidak ada poligon yang cocok, nilai 0 akan dikembalikan.

4. Skenario

Skenario 1: Memeriksa apakah pengguna berada dalam radius pengiriman pedagang. Sebagai contoh, bidang koordinat menunjukkan radius pengiriman pedagang, dan koordinat pengguna adalah (120.307234, 39.294245). Anda dapat menggunakan klausa query berikut untuk mencari pedagang yang mendukung radius pengiriman:

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

5. Catatan Penggunaan

  • Bidang yang direferensikan dalam parameter fungsi harus dikonfigurasikan sebagai bidang atribut.

  • Maksimal 50 poligon didukung. Jika jumlah poligon melebihi 50, dokumen terkait dilewati dalam perhitungan.

  • Poligon dengan lubang, seperti cincin, tidak didukung.

  • Poligon dengan beberapa bagian terpisah tidak didukung.

  • Jika jumlah koordinat adalah 0, tidak ada koordinat yang tersedia, dan nilai 0 akan dikembalikan.

  • Jika jumlah koordinat ganjil, kesalahan data terjadi, dan nilai 0 akan dikembalikan.

  • Jika titik pengguna berada pada sisi poligon tertentu, kecocokan dianggap berhasil, dan nilai 1 atau subskrip poligon tertentu akan dikembalikan.

  • Plugin poligon memerlukan beban komputasi yang besar, yang dapat memengaruhi kinerja query. Kami merekomendasikan agar Anda membatasi jumlah simpul. Jalankan tes untuk menentukan jumlah simpul berdasarkan kebutuhan bisnis Anda.