Bagikan melalui


Data geospasial - Bahasa kueri di Cosmos DB (di Azure dan Fabric)

Bahasa kueri memiliki fungsionalitas geospasial bawaan untuk mewakili bentuk geometris atau lokasi/poligon aktual pada peta. Data geospasial sering melibatkan kueri kedekatan. Misalnya, pertanyaan "temukan semua lokasi ritel di dekat lokasi saya saat ini" dijawab menggunakan kueri kedekatan melalui beberapa objek data geospasial.

Kasus penggunaan

Kasus penggunaan geospasial umum termasuk, tetapi tidak terbatas pada:

  • Analitik geolokasi, mendorong inisiatif pemasaran berbasis lokasi tertentu.

  • Personalisasi berbasis lokasi, untuk industri seperti ritel dan layanan kesehatan untuk meningkatkan pengalaman pengguna.

  • Peningkatan logistik, untuk industri seperti transportasi di mana pengoptimalan sangat penting.

  • Analisis Risiko, untuk industri seperti asuransi dan keuangan untuk melengkapi metadata lainnya.

  • Kesadaran situasional*, untuk pemberitahuan dan pemberitahuan berbasis kedekatan.

Pengantar data spasial

Data spasial menjelaskan posisi dan bentuk objek dalam ruang. Di sebagian besar aplikasi, titik dan bentuk ini sesuai dengan objek di bumi dan data geospasial.

Data spasial dapat digunakan untuk mewakili:

  • Lokasi seseorang

  • Tempat menarik

  • Batas kota, atau danau

Bahasa kueri mendukung dua jenis data spasial: jenis data geometri dan jenis data geografi .

  • Jenis geometri mewakili data dalam sistem koordinat Euclidean (datar). Jenis ini berguna untuk tugas geometris umum, seperti mengukur garis, berpotangan poligon, dan mengukur jarak antar titik.

  • Jenis geografi mewakili data dalam sistem koordinat bulat-bumi. Jenis ini berguna untuk tugas geografis umum, seperti menentukan apakah lokasi berada dalam batas tertentu dan mengukur jarak antar lokasi.

Jenis data yang didukung

Bahasa kueri mendukung pengindeksan dan kueri data titik geospasial yang diwakili menggunakan spesifikasi GeoJSON. Struktur data GeoJSON adalah objek JSON yang valid, sehingga Anda dapat menyimpan dan mengkuerinya menggunakan bahasa kueri tanpa alat atau pustaka khusus.

Bahasa kueri mendukung jenis data spasial berikut:

  • Titik

  • LineString

  • Poligon

  • MultiPolygon

Poin

Titik menunjukkan satu posisi dalam spasi. Dalam data geospasial, Titik mewakili lokasi yang tepat, yang bisa menjadi alamat jalan toko kelontong, kios, mobil, atau kota. Titik diwakili dalam GeoJSON (dan Bahasa kueri) menggunakan pasangan koordinatnya (bujur dan lintang).

Pertimbangkan contoh titik GeoJSON ini. Garis bujur adalah -122.12826822304672 dan garis lintang adalah 47.63980239335718.

{
  "type": "Point",
  "coordinates": [
    -122.12826822304672,
    47.63980239335718
  ]
}

Petunjuk / Saran

Untuk jenis data geografi , spesifikasi GeoJSON menentukan garis bujur terlebih dahulu dan garis lintang kedua. Seperti dalam aplikasi pemetaan lainnya, garis bujur dan lintang adalah sudut dan diwakili dalam hal derajat. Nilai garis bujur diukur dari Prime Meridian dan berada di antara -180 derajat dan 180.0 derajat, dan nilai garis lintang diukur dari khatulistiwa dan berada di antara -90.0 derajat dan 90.0 derajat.

Untuk jenis data geometri , spesifikasi GeoJSON menentukan sumbu horizontal terlebih dahulu dan sumbu vertikal kedua.

Jenis data spasial dapat disematkan dalam item seperti yang ditunjukkan dalam contoh item fasilitas ini yang menyertakan data GeoJSON.

{
  "name": "Headquarters",
  "location": {
    "type": "Point",
    "coordinates": [
      -122.12826822304672,
      47.63980239335718
    ]
  },
  "category": "business-offices"
}

Bahasa kueri menginterpretasikan koordinat seperti yang diwakili sesuai sistem referensi WGS-84. Untuk informasi selengkapnya, lihat mengoordinasikan sistem referensi.

LineStrings

LineString mewakili serangkaian dua titik atau lebih dalam ruang dan segmen garis yang menghubungkannya. Dalam data geospasial, LineStrings umumnya digunakan untuk mewakili jalan raya atau sungai.

Dalam contoh ini, string garis digunakan untuk mewakili garis yang digambar di antara dua titik.

{
  "type": "LineString",
  "coordinates": [
    [ 31.8, -5 ],
    [ 31.8, -4.7 ]
  ]
}

Poligon

Poligon adalah batas titik terhubung yang membentuk LineString tertutup. Poligon umumnya digunakan untuk mewakili formasi alami seperti danau atau yurisdiksi politik seperti kota dan negara bagian.

Titik dalam Poligon harus ditentukan dalam urutan berlawanan arah jajaran jajaran. Poligon yang ditentukan dalam urutan searah jarang mewakili inversi wilayah di dalamnya.

Dalam contoh ini, poligon dibuat dengan menghubungkan beberapa titik.

{
  "type":"Polygon",
  "coordinates":[[
    [ 31.8, -5 ],
    [ 32, -5 ],
    [ 32, -4.7 ],
    [ 31.8, -4.7 ],
    [ 31.8, -5 ]
  ]]
}

Petunjuk / Saran

Spesifikasi GeoJSON mengharuskan bahwa untuk Poligon yang valid, pasangan koordinat terakhir yang disediakan harus sama dengan yang pertama, untuk membuat bentuk tertutup.

MultiPolygon

MultiPolygon adalah array dari nol atau lebih Poligon. MultiPolygon tidak dapat tumpang tindih atau memiliki area umum. Mereka bisa menyentuh pada satu atau beberapa titik.

Berikut adalah contoh MultiPolygon.

{
    "type":"MultiPolygon",
    "coordinates":[
      [[
          [52.0, 12.0],
          [53.0, 12.0],
          [53.0, 13.0],
          [52.0, 13.0],
          [52.0, 12.0]
      ]],
      [[
          [50.0, 0.0],
          [51.0, 0.0],
          [51.0, 5.0],
          [50.0, 5.0],
          [50.0, 0.0]
      ]]
    ]
}

Sistem referensi koordinat

Karena bentuk bumi tidak teratur, koordinat data geospasial geografi diwakili dalam banyak sistem referensi koordinat (CRS). Setiap CRS memiliki bingkai referensi dan unit pengukuran mereka sendiri. Misalnya, "National Grid of Britain" adalah sistem referensi yang akurat untuk Inggris, tetapi tidak di luarnya.

CRS paling populer yang digunakan saat ini adalah World Geodetic System WGS-84. Perangkat GPS, dan banyak layanan pemetaan termasuk Google Maps dan API Bing Maps menggunakan WGS-84. Bahasa kueri mendukung pengindeksan dan kueri data geospasial geografi menggunakan WGS-84 CRS saja.