PHP dan SQL: Hitung atau Kueri Jarak Lingkaran Besar Antara Titik Lintang dan Bujur Dengan Rumus Haversine

Haversine Formula - Hitung Jarak Lingkaran Besar dengan PHP atau MySQL
Waktu Membaca: 3 menit

Bulan ini saya telah memprogram cukup banyak di PHP dan MySQL sehubungan dengan GIS. Mengintai di sekitar net, saya sebenarnya kesulitan menemukan beberapa Perhitungan geografis untuk menemukan jarak antara dua lokasi jadi saya ingin membagikannya di sini.

Peta Penerbangan Eropa Dengan Jarak Lingkaran Besar

Cara sederhana untuk menghitung jarak antara dua titik menggunakan rumus Pythagoras untuk menghitung sisi miring segitiga (A² + B² = C²). Ini dikenal sebagai Jarak Euclidean.

Itu awal yang menarik tetapi tidak berlaku dengan Geografi karena jarak antara garis lintang dan bujur bukan jarak yang sama selain. Semakin dekat ke ekuator, garis lintang semakin menjauh. Jika Anda menggunakan sejenis persamaan triangulasi sederhana, persamaan ini dapat mengukur jarak secara akurat di satu lokasi dan sangat salah di lokasi lain, karena kelengkungan Bumi.

Jarak Lingkaran Besar

Rute yang ditempuh jarak jauh di sekitar Bumi dikenal sebagai Jarak Lingkaran Besar. Artinya… jarak terpendek antara dua titik pada sebuah bola berbeda dengan titik pada peta datar. Gabungkan itu dengan fakta bahwa garis lintang dan bujur tidak berjarak sama… dan Anda memiliki perhitungan yang sulit.

Berikut adalah penjelasan video fantastis tentang cara kerja Great Circles.

Formula Haversine

Jarak yang menggunakan kelengkungan bumi dimasukkan ke dalam Formula Haversine, yang menggunakan trigonometri untuk memungkinkan kelengkungan bumi. Saat Anda mencari jarak antara 2 tempat di bumi (saat burung gagak terbang), garis lurus sebenarnya adalah busur.

Ini berlaku dalam penerbangan udara - pernahkah Anda melihat peta penerbangan yang sebenarnya dan melihat peta itu melengkung? Itu karena lebih pendek terbang di lengkungan antara dua titik daripada langsung ke lokasi.

PHP: Menghitung Jarak Antara 2 Titik Lintang dan Bujur

Bagaimanapun, berikut rumus PHP untuk menghitung jarak antara dua titik (bersama dengan konversi Mile vs. Kilometer) yang dibulatkan menjadi dua tempat desimal.

function getDistanceBetweenPointsNew($latitude1, $longitude1, $latitude2, $longitude2, $unit = 'miles') {
  $theta = $longitude1 - $longitude2; 
  $distance = (sin(deg2rad($latitude1)) * sin(deg2rad($latitude2))) + (cos(deg2rad($latitude1)) * cos(deg2rad($latitude2)) * cos(deg2rad($theta))); 
  $distance = acos($distance); 
  $distance = rad2deg($distance); 
  $distance = $distance * 60 * 1.1515; 
  switch($unit) { 
    case 'miles': 
      break; 
    case 'kilometers' : 
      $distance = $distance * 1.609344; 
  } 
  return (round($distance,2)); 
}

SQL: Mengambil Semua Rekaman Dalam Rentang Dengan Menghitung Jarak Dalam Mil Menggunakan Lintang dan Bujur

SQL juga dapat digunakan untuk melakukan penghitungan guna menemukan semua record dalam jarak tertentu. Dalam contoh ini, saya akan meminta MyTable di MySQL untuk menemukan semua record yang kurang dari atau sama dengan variabel $ distance (dalam Miles) ke lokasi saya di $ latitude dan $ longitude:

Kueri untuk mengambil semua rekaman dalam satu jarak dengan menghitung jarak dalam mil antara dua titik lintang dan bujur adalah:

$query = "SELECT *, (((acos(sin((".$latitude."*pi()/180)) * sin((`latitude`*pi()/180)) + cos((".$latitude."*pi()/180)) * cos((`latitude`*pi()/180)) * cos(((".$longitude."- `longitude`)*pi()/180)))) * 180/pi()) * 60 * 1.1515) as distance FROM `table` WHERE distance <= ".$distance."

Anda harus menyesuaikan ini:

  • $ bujur - ini adalah variabel PHP di mana saya meneruskan garis bujur titik.
  • $ latitude - ini adalah variabel PHP di mana saya meneruskan garis bujur titik.
  • $ jarak - ini adalah jarak yang Anda inginkan untuk menemukan semua record yang kurang atau sama.
  • tabel - ini tabelnya… Anda ingin menggantinya dengan nama tabel Anda.
  • lintang - ini adalah bidang garis lintang Anda.
  • garis bujur - ini adalah bidang bujur Anda.

SQL: Mengambil Semua Rekaman Dalam Rentang Dengan Menghitung Jarak Dalam Kilometer Menggunakan Lintang dan Bujur

Dan inilah kueri SQL menggunakan kilometer di MySQL:

$query = "SELECT *, (((acos(sin((".$latitude."*pi()/180)) * sin((`latitude`*pi()/180)) + cos((".$latitude."*pi()/180)) * cos((`latitude`*pi()/180)) * cos(((".$longitude."- `longitude`) * pi()/180)))) * 180/pi()) * 60 * 1.1515 * 1.609344) as distance FROM `table` WHERE distance <= ".$distance."

Anda harus menyesuaikan ini:

  • $ bujur - ini adalah variabel PHP di mana saya meneruskan garis bujur titik.
  • $ latitude - ini adalah variabel PHP di mana saya meneruskan garis bujur titik.
  • $ jarak - ini adalah jarak yang Anda inginkan untuk menemukan semua record yang kurang atau sama.
  • tabel - ini tabelnya… Anda ingin menggantinya dengan nama tabel Anda.
  • lintang - ini adalah bidang garis lintang Anda.
  • garis bujur - ini adalah bidang bujur Anda.

Saya menggunakan kode ini dalam platform pemetaan perusahaan yang kami gunakan untuk toko ritel dengan lebih dari 1,000 lokasi di seluruh Amerika Utara dan berfungsi dengan baik.

76 Komentar

  1. 1

    Terima kasih banyak telah berbagi. Ini adalah pekerjaan salin dan tempel yang mudah dan berfungsi dengan baik. Anda telah menghemat banyak waktu saya.
    FYI untuk siapa saja yang melakukan porting ke C:
    double deg2rad (double deg) {return deg * (3.14159265358979323846 / 180.0); }

  2. 2

    Sepotong posting yang sangat bagus - bekerja sangat baik - saya hanya perlu mengubah nama tabel yang menahan lat-long. Ini bekerja cukup cepat untuk .. Saya memiliki sejumlah kecil lintang (<400) tapi saya pikir ini akan menskalakan dengan baik. Situs yang bagus juga - saya baru saja menambahkannya ke akun del.icio.us saya dan akan memeriksa kembali secara teratur.

  3. 4
  4. 5

    Saya mencari sepanjang hari untuk penghitungan jarak dan menemukan algoritma harversine, terima kasih kepada Anda karena telah memberikan contoh tentang cara memasukkannya ke dalam pernyataan sql. Terima kasih dan salam, Daniel

  5. 8

    Saya pikir SQL Anda membutuhkan pernyataan memiliki.
    bukannya DI MANA jarak <= $ jarak yang mungkin Anda butuhkan
    gunakan HAVING jarak <= $ jarak

    jika tidak, terima kasih telah menghemat banyak waktu dan energi saya.

  6. 10
  7. 11
  8. 12

    Terima kasih banyak telah membagikan kode ini. Ini menghemat banyak waktu pengembangan. Juga, terima kasih kepada pembaca Anda karena telah menunjukkan bahwa pernyataan HAVING diperlukan untuk MySQL 5.x. Sangat membantu.

  9. 14
  10. 15

    Halo,

    Pertanyaan lain. Apakah ada rumus string NMEA seperti di bawah ini?

    1342.7500, N, 10052.2287, E.

    $GPRMC,032731.000,A,1342.7500,N,10052.2287,E,0.40,106.01,101106,,*0B

    Terima kasih,
    menyerobot

  11. 16

    Saya juga menemukan bahwa WHERE tidak berhasil untuk saya. Berubah menjadi HAVING dan semuanya bekerja dengan sempurna. Pada awalnya saya tidak membaca komentar dan menulis ulang menggunakan pilihan bersarang. Keduanya akan bekerja dengan baik.

  12. 17
  13. 18

    Sangat membantu, terima kasih banyak! Saya mengalami beberapa masalah dengan "HAVING" yang baru, bukan "WHERE", tetapi setelah saya membaca komentar di sini (setelah sekitar setengah jam mengertakkan gigi karena frustrasi = P), saya membuatnya berfungsi dengan baik. Terima kasih ^ _ ^

  14. 19
  15. 20

    Ingatlah bahwa pernyataan pilih seperti itu akan sangat intens secara komputasi dan karenanya lambat. Jika Anda memiliki banyak kueri tersebut, itu dapat memperlambat segalanya dengan cukup cepat.

    Pendekatan yang jauh lebih tidak intens adalah dengan menjalankan pemilihan (kasar) pertama menggunakan area KOTAK yang ditentukan oleh jarak yang dihitung, yaitu "pilih * dari nama tabel di mana lintang antara lintang dan lintang antara lintang dan 1 dan bujur antara lon2 dan lon1". lat2 = targetlatitude - latdiff, lat1 = targetlatitude + latdiff, mirip dengan lon. latdiff ~ = jarak / 2 (untuk km), atau jarak / 111 untuk mil karena 69 derajat lintang adalah ~ 1 km (sedikit variasi karena bumi agak lonjong, tetapi cukup untuk tujuan ini). londiff = jarak / (abs (cos (deg111rad (latitude)) * 2)) - atau 111 mil (Anda sebenarnya dapat mengambil persegi yang sedikit lebih besar untuk memperhitungkan variasi). Kemudian ambil hasilnya dan masukkan ke dalam pemilihan radial. Jangan lupa untuk memperhitungkan koordinat di luar batas - yaitu rentang bujur yang dapat diterima adalah -69 hingga +180 dan rentang garis lintang yang dapat diterima adalah -180 hingga +90 - jika latdiff atau londiff Anda berada di luar rentang ini . Perhatikan bahwa dalam banyak kasus hal ini mungkin tidak berlaku karena hanya mempengaruhi perhitungan melalui garis melalui samudra pasifik dari kutub ke kutub, meskipun itu memotong sebagian chukotka dan sebagian alaska.

    Apa yang kami capai dengan ini adalah pengurangan yang signifikan dalam jumlah poin yang Anda gunakan untuk membuat perhitungan ini. Jika Anda memiliki satu juta titik global dalam database yang didistribusikan secara kasar dan Anda ingin mencari dalam jarak 100 km, maka pencarian pertama (cepat) Anda adalah seluas 10000 km persegi dan mungkin akan menghasilkan sekitar 20 hasil (berdasarkan distribusi yang merata di luas permukaan sekitar 500M km persegi), yang berarti Anda menjalankan penghitungan jarak kompleks sebanyak 20 kali untuk kueri ini, bukan satu juta kali.

    • 21
      • 22

        Saran yang fantastis! Saya benar-benar bekerja dengan pengembang yang menulis fungsi yang menarik bagian dalam persegi dan kemudian fungsi rekursif yang membuat 'kotak' di sekeliling untuk memasukkan dan mengecualikan poin yang tersisa. Hasilnya adalah hasil yang sangat cepat - dia dapat mengevaluasi jutaan poin dalam mikrodetik.

        Pendekatan saya di atas jelas 'kasar' tetapi mampu. Terima kasih lagi!

        • 23

          Doug,

          Saya telah mencoba menggunakan mysql dan php untuk mengevaluasi apakah titik panjang lintang berada dalam poligon. Apakah Anda tahu jika teman pengembang Anda menerbitkan contoh tentang bagaimana menyelesaikan tugas ini. Atau apakah Anda tahu contoh yang bagus. Terima kasih sebelumnya.

  16. 24

    Halo semuanya, ini adalah pernyataan SQL uji saya:

    SELECT DISTINCT area_id, (
    (
    (
    acos( sin( ( 13.65 * pi( ) /180 ) ) * sin( (
    `lat_dec` * pi( ) /180 ) ) + cos( ( 13.65 * pi( ) /180 ) ) * cos( (
    `lat_dec` * pi( ) /180 )
    ) * cos( (
    ( 51.02 - `lon_dec` ) * pi( ) /180 )
    )
    )
    ) *180 / pi( )
    ) *60 * 1.1515 * 1.609344
    ) AS distance
    FROM `post_codes` WHERE distance <= 50

    dan Mysql memberi tahu saya jarak itu, tidak ada sebagai kolom, saya dapat menggunakan pesanan dengan, saya dapat melakukannya tanpa DI MANA, dan berfungsi, tetapi tidak dengan itu…

  17. 26

    Ini bagus, tapi ini seperti burung yang terbang. Akan sangat bagus untuk mencoba dan memasukkan API peta google ke ini entah bagaimana (mungkin menggunakan jalan, dll.) Hanya untuk memberikan ide menggunakan bentuk transportasi yang berbeda. Saya masih belum membuat fungsi anil simulasi dalam PHP yang dapat menawarkan solusi yang efisien untuk masalah penjual keliling. Tapi saya pikir saya mungkin dapat menggunakan kembali beberapa kode Anda untuk melakukannya.

  18. 27
  19. 28

    Artikel bagus! Saya menemukan banyak artikel yang menjelaskan cara menghitung jarak antara dua titik tetapi saya benar-benar mencari potongan SQL.

  20. 29
  21. 30
  22. 31
  23. 32
  24. 36

    2 hari penelitian untuk akhirnya menemukan halaman ini yang memecahkan masalah saya. Sepertinya lebih baik saya memecahkan WolframAlpha saya dan memoles matematika saya. Perubahan dari WHERE ke HAVING membuat skrip saya berfungsi. TERIMA KASIH

  25. 37
    • 38

      Terima kasih Georgi. Saya terus mendapatkan kolom 'jarak' tidak ditemukan. Setelah saya mengubah WHERE menjadi HAVING, ini bekerja seperti pesona!

  26. 39

    Saya berharap ini adalah halaman pertama yang saya temukan tentang ini. Setelah mencoba banyak perintah berbeda, inilah satu-satunya yang berfungsi dengan baik, dan dengan sedikit perubahan yang diperlukan agar sesuai dengan database saya sendiri.
    Terima kasih banyak!

  27. 40

    Saya berharap ini adalah halaman pertama yang saya temukan tentang ini. Setelah mencoba banyak perintah berbeda, inilah satu-satunya yang berfungsi dengan baik, dan dengan sedikit perubahan yang diperlukan agar sesuai dengan database saya sendiri.
    Terima kasih banyak!

  28. 41
  29. 42
  30. 43
  31. 45
  32. 46
  33. 47
  34. 49
  35. 50
  36. 52
  37. 53
  38. 55
  39. 56

    Douglas, terima kasih untuk kode yang luar biasa ini. Telah memecahkan kepalaku tentang cara melakukan ini di portal komunitas GPS saya. Anda telah menghemat saya berjam-jam.

  40. 58

    terima kasih telah memposting artikel bermanfaat ini,  
    tetapi untuk beberapa alasan saya ingin bertanya
    bagaimana cara mendapatkan jarak antara coord di dalam mysql db dan coord yang dimasukkan ke php oleh pengguna?
    untuk lebih jelas menjelaskan:
    1. pengguna harus memasukkan [id] untuk memilih data tertentu dari db dan coord pengguna itu sendiri
    2. file php mendapatkan data target (coord) menggunakan [id] dan kemudian menghitung jarak antara pengguna dan titik target

    atau bisa langsung saja mendapatkan jarak dari kode di bawah ini?

    $ qry = “PILIH *, (((acos (sin ((“. $ latitude. ”* pi () / 180)) * sin ((` Latitude` * pi () / 180)) + cos ((“. $ latitude. ”* pi () / 180)) * cos ((` Latitude` * pi () / 180)) * cos (((“. $ longitude.” - `Longitude`) * pi () / 180) ))) * 180 / pi ()) * 60 * 1.1515 * 1.609344) sebagai jarak DARI `MyTable` WHERE jarak> =". $ Jarak. " >>>> dapatkah saya “mengambil” jarak dari sini?
    Terima kasih lagi,
    Timmy S

    • 59

      tidak apa-apa, saya sudah memikirkan bagaimana "fungsi" bekerja di php
      $ dis = getDistanceBetweenPointsNew ($ userLati, $ userLongi, $ lati, $ longi, $ unit = 'Km')
      Terima kasih banyak!! 

  41. 60

    ok, semua yang saya coba tidak berhasil. Maksud saya, apa yang saya miliki berhasil, tetapi jaraknya jauh.

    Adakah yang mungkin melihat apa yang salah dengan kode ini?

    if (isset ($ _ POST ['terkirim'])) {$ z = $ _POST ['zipcode']; $ r = $ _POST ['radius']; echo “Hasil untuk“. $ z; $ sql = mysql_query (“PILIH DISTINCT m.zipcode, m.MktName, m.LocAddSt, m.LocAddCity, m.LocAddState, m.x1, m.y1, m.verified, z1.lat, z2.lon, z1. kota, z1.state DARI mrk m, zip z1, zip z2 DIMANA m.zipcode = z1.zipcode DAN z2.zipcode = $ z AND (3963 * acos (truncate (sin (z2.lat / 57.2958) * sin (m. y1 / 57.2958) + cos (z2.lat / 57.2958) * cos (m.y1 / 57.2958) * cos (m.x1 / 57.2958 - z2.lon / 57.2958), 8))) <= $ r ") atau mati (mysql_error ()); while ($ row = mysql_fetch_array ($ sql)) {$ store1 = $ row ['MktName']. "”; $ store = $ row ['LocAddSt']. ””; $ store. = $ row ['LocAddCity']. ”,“. $ row ['LocAddState']. ” “. $ Row ['zipcode']; $ latitude1 = $ baris ['lat']; $ bujur1 = $ baris ['lon']; $ latitude2 = $ baris ['y1']; $ bujur2 = $ baris ['x1']; $ kota = $ baris ['kota']; $ state = $ row ['state']; $ dis = getnew ($ latitude1, $ longitude1, $ latitude2, $ longitude2, $ unit = 'Mi'); // $ dis = jarak ($ ​​lat1, $ lon1, $ lat2, $ lon2); $ terverifikasi = $ baris ['diverifikasi']; if ($ Verified == '1') {echo “”; echo "". $ store. ""; echo $ dis. " bermil-mil jauhnya"; echo ""; } lain {echo "". $ store. ""; echo $ dis. " bermil-mil jauhnya"; echo ""; }}}

    kode functions.php saya
    function getnew ($ latitude1, $ longitude1, $ latitude2, $ longitude2, $ unit = 'Mi') {$ theta = $ longitude1 - $ longitude2; $ jarak = (sin (deg2rad ($ latitude1)) * sin (deg2rad ($ latitude2))) + (cos (deg2rad ($ latitude1)) * cos (deg2rad ($ latitude2)) * cos (deg2rad ($ theta)) ); $ jarak = acos ($ jarak); $ jarak = rad2deg ($ jarak); $ jarak = $ jarak * 60 * 1.1515; switch ($ unit) {case 'Mi': break; kasus 'Km': $ jarak = $ jarak * 1.609344; } kembali (putaran ($ jarak, 2)); }

    Terima kasih sebelumnya

  42. 61
  43. 62

    Hei Douglas, artikel bagus. Saya menemukan penjelasan Anda tentang konsep geografis dan kodenya sangat menarik. Satu-satunya saran saya adalah memberi spasi dan memasukkan kode untuk tampilan (seperti Stackoverflow, misalnya). Saya memahami bahwa Anda ingin menghemat ruang, tetapi spasi / lekukan kode konvensional akan membuat saya lebih mudah, sebagai programmer, untuk membaca dan membedah. Bagaimanapun, itu hal yang kecil. Pertahankan kerja bagus.

  44. 64
  45. 65
  46. 66
  47. 67
  48. 68
  49. 69
  50. 70

    tampaknya lebih cepat (mysql 5.9) untuk menggunakan dua kali rumus di pilih dan di mana:
    $ formula = “(((acos (sin ((“. $ latitude. ”* pi () / 180)) * sin ((` Latitude` * pi () / 180)) + cos ((“. $ latitude. ”* Pi () / 180)) * cos ((` Latitude` * pi () / 180)) * cos (((“. $ Longitude.” - `Longitude`) * pi () / 180)))) * 180 / pi ()) * 60 * 1.1515 * 1.609344) ”;
    $ sql = 'PILIH *,'. $ formula. ' sebagai jarak DARI tabel WHERE '.. $ formula.' <= '. $ jarak;

  51. 71
  52. 72

    Terima kasih banyak atas artikel ini. Ini sangat membantu.
    PHP pada awalnya dibuat sebagai platform scripting sederhana yang disebut “Personal Home Page”. Saat ini PHP (kependekan dari Hypertext Preprocessor) adalah alternatif dari teknologi Active Server Pages (ASP) Microsoft.

    PHP adalah bahasa sisi server open source yang digunakan untuk membuat halaman web dinamis. Itu dapat disematkan ke dalam HTML. PHP biasanya digunakan bersama dengan database MySQL di server web Linux / UNIX. Ini mungkin bahasa skrip paling populer.

  53. 73

    Saya menemukan solusi di atas tidak berfungsi dengan baik.
    Saya perlu mengubah ke:

    $ qqq = “PILIH *, (((acos (sin ((“. $ latitude. ”* pi () / 180)) * sin ((` latt` * pi () / 180)) + cos ((”. $ latitude. “* pi () / 180)) * cos ((` latt` * pi () / 180)) * cos (((”. $ longitude.“ - `longt`) * pi () / 180) ))) * 180 / pi ()) * 60 * 1.1515) sebagai jarak DARI `register`“;

  54. 75
  55. 76

    Halo, tolong saya sangat membutuhkan bantuan Anda dalam hal ini.

    Saya membuat permintaan get ke server web saya http://localhost:8000/users/findusers/53.47792/-2.23389/20/
    53.47792 = $ latitude
    -2.23389 = $ bujur
    dan 20 = jarak yang ingin saya ambil

    Namun menggunakan rumus Anda, itu mengambil semua baris di db saya

    $ results = DB :: select (DB :: raw ("SELECT *, (((acos (sin ((". $ latitude. "* pi () / 180)) * sin ((lat * pi () / 180 )) + cos ((". $ latitude." * pi () / 180)) * cos ((lat * pi () / 180)) * cos (((". $ longitude." - lng) * pi ( ) / 180)))) * 180 / pi ()) * 60 * 1.1515 * 1.609344) sebagai jarak DARI penanda MEMILIKI jarak> = ". $ Jarak));

    [{“Id”: 1, ”name”: ”Frankie Johnnie & Luigo Too”, ”address”: ”939 W El Camino Real, Mountain View, CA”, ”lat”: 37.386337280273, ”lng”: - 122.08582305908, ”Jarak”: 16079.294719663}, {“id”: 2, ”name”: ”Amici's East Coast Pizzeria”, ”address”: ”790 Castro St, Mountain View, CA”, ”lat”: 37.387138366699, ”lng”: -122.08323669434, ”distance”: 16079.175940152}, {“id”: 3, ”name”: ”Kapp's Pizza Bar & Grill”, ”address”: ”191 Castro St, Mountain View, CA”, ”lat”: 37.393886566162, ”Lng”: - 122.07891845703, ”jarak”: 16078.381373826}, {“id”: 4, ”name”: ”Round Table Pizza: Mountain View”, ”alamat”: ”570 N Shoreline Blvd, Mountain View, CA”, ”Lat”: 37.402652740479, ”lng”: - 122.07935333252, ”jarak”: 16077.420540582}, {“id”: 5, ”name”: ”Tony & Alba's Pizza & Pasta”, ”address”: ”619 Escuela Ave, Mountain View, CA ”,” lat ”: 37.394012451172,” lng ”: - 122.09552764893,” distance ”: 16078.563225154}, {“ id ”: 6,” name ”:” Oregano's Wood-Fired Pizza ”,” address ”:” 4546 El Camino Real, Los Altos, CA "," lat ": 37.401725769043," lng ": - 122.11464691162," jarak ": 16077.937560795}, {" id ”: 7,” name ”:” The Bars and Grills ”,” address ”:” 24 Whiteley Street, Manchester ”,” lat ”: 53.485118865967,” lng ”: - 2.1828699111938,” distance ”: 8038.7620112314}]

    Saya hanya ingin mengambil baris dengan jarak 20 mil tetapi itu membawa semua baris. Tolong apa yang saya lakukan salah

Bagaimana menurut Anda?

Situs ini menggunakan Akismet untuk mengurangi spam. Pelajari bagaimana data komentar Anda diproses.