Bagikan melalui


ST_DISTANCE (kueri NoSQL)

BERLAKU UNTUK: NoSQL

Mengembalikan jarak antara dua ekspresi GeoJSON Point, Polygon, MultiPolygon, atau LineString.

Catatan

Untuk informasi selengkapnya, lihat Data lokasi Geospasial dan GeoJSON.

Sintaks

ST_DISTANCE(<spatial_expr_1>, <spatial_expr_2>)  

Argumen

Deskripsi
spatial_expr_1 Setiap ekspresi GeoJSON Point, Polygon, MultiPolygon, atau LineString yang valid.
spatial_expr_2 Setiap ekspresi GeoJSON Point, Polygon, MultiPolygon, atau LineString yang valid.

Jenis yang dikembalikan

Mengembalikan ekspresi numerik yang menghitung jarak antara dua ekspresi.

Contoh

Contoh berikut mengasumsikan kontainer ada dengan dua item.

[
  {
    "name": "Headquarters",
    "location": {
      "type": "Point",
      "coordinates": [
        -122.12826822304672,
        47.63980239335718
      ]
    },
    "category": "business-offices"
  },
  {
    "name": "Research and development",
    "location": {
      "type": "Point",
      "coordinates": [
        -96.84368664765994,
        46.81297794314663
      ]
    },
    "category": "business-offices"
  }
]

Contoh menunjukkan cara menggunakan fungsi sebagai filter untuk mengembalikan item dalam jarak yang ditentukan.

SELECT
    o.name,
    ST_DISTANCE(o.location, {
        "type": "Point", 
        "coordinates": [-122.11758113953535, 47.66901087006131]
    }) / 1000 AS distanceKilometers
FROM
    offices o
WHERE
    o.category = "business-offices"
[
  {
    "name": "Headquarters",
    "distanceKilometers": 3.345269817267368
  },
  {
    "name": "Research and development",
    "distanceKilometers": 1907.438421299902
  }
]

Keterangan

  • Hasilnya dinyatakan dalam meter untuk sistem referensi default.
  • Fungsi ini mendapat manfaat dari indeks geospasial kecuali dalam kueri dengan agregat.
  • Spesifikasi GeoJSON mensyaratkan bahwa titik-titik dalam Polygon ditentukan dalam urutan berlawanan arah jarum jam. Poligon yang ditentukan dalam urutan searah jarum jam mewakili inversi wilayah di dalamnya.