Melihat data secara real time dengan Gaya visual berbasis data

Dokumen ini menjelaskan alasan dan cara menerapkan Gaya visual berbasis data dinamis untuk Batas Google menggunakan Maps JavaScript API, yang berguna untuk berbagai kasus penggunaan di berbagai industri dan segmen.

Jumlah Taksi di NYC menurut Kode Pos
Animasi jumlah taksi di New York City menurut batas kode pos (disimulasikan, time lapse):
Jumlah taksi di NYC menurut Kode Pos (time-lapse) Legenda peta

Gaya visual berbasis data adalah kemampuan Google Maps Platform yang memungkinkan Anda memanfaatkan poligon batas administratif Google, menerapkan gaya visual ke poligon tersebut untuk ditampilkan di peta Anda, dan menggabungkan data Anda sendiri untuk membuat peta kustom dan lengkap yang dapat digunakan untuk analisis visual dan peningkatan pemahaman tentang data Anda. Dokumen ini akan membahas beberapa kasus penggunaan yang menjelaskan alasan dan cara Anda memvisualisasikan data menggunakan Gaya visual berbasis data pada peta hampir secara real-time dengan mengintegrasikan feed data dinamis.

Gaya visual berbasis data memungkinkan Anda membuat peta yang menampilkan distribusi data secara geografis, menyesuaikan gaya poligon secara dinamis, dan berinteraksi dengan data melalui peristiwa klik. Fitur ini dapat digunakan untuk membuat peta yang informatif dan menarik untuk berbagai kasus penggunaan dan industri.

Berikut beberapa contoh kasus penggunaan yang dapat diterapkan pada peta yang menampilkan pembaruan data dinamis pada Gaya visual berbasis data:

  • Berbagi perjalanan: Info terbaru real-time dapat digunakan untuk mengidentifikasi area dengan permintaan tinggi, dalam hal ini beberapa penyedia mungkin memiliki lonjakan harga.
  • Transportasi: Info terbaru real-time dapat digunakan untuk mengidentifikasi area kemacetan, yang akan membantu menentukan rute alternatif terbaik.
  • Pemilu: Pada malam pemilu, data polling data real-time dapat digunakan untuk memvisualisasikan hasil yang terjadi.
  • Keselamatan pekerja: Pembaruan real-time dapat digunakan untuk melacak peristiwa yang terjadi secara real time, mengidentifikasi area berisiko tinggi, dan memberikan kesadaran situasional kepada responden di lapangan.
  • Cuaca: Info terbaru real-time dapat digunakan untuk melacak pergerakan badai, mengidentifikasi bahaya saat ini, serta memberikan peringatan dan peringatan.
  • Lingkungan: Pembaruan real-time dapat digunakan untuk melacak pergerakan abu vulkanik dan polutan lainnya, mengidentifikasi area degradasi lingkungan, dan memantau dampak aktivitas manusia.

Dalam semua situasi ini, pelanggan dapat memperoleh nilai tambahan dengan menggabungkan feed data real-time mereka dan batasan Google untuk memvisualisasikan data di peta dengan cepat dan mudah, sehingga mereka memiliki kemampuan untuk mendapatkan insight secara instan agar dapat mengambil keputusan dengan lebih tepat.

Pendekatan Arsitektur terhadap Solusi

Sekarang, mari kita pelajari pembuatan peta menggunakan Gaya visual berbasis data untuk memvisualisasikan data dinamis. Seperti yang diilustrasikan sebelumnya, kasus penggunaannya adalah jumlah taksi NYC yang divisualisasikan dengan kode pos. Hal ini dapat membantu pengguna untuk memahami betapa mudahnya memanggil taksi.

Arsitektur
Berikut adalah diagram arsitektur aplikasi dari pendekatannya:
arsitektur aplikasi

Solusi Gaya Visual Berbasis Data Dinamis

Sekarang mari kita pelajari langkah-langkah yang diperlukan untuk menerapkan peta koroplet Gaya visual berbasis data dinamis untuk set data Anda.

Solusi ini memungkinkan Anda memvisualisasikan set data hipotesis tentang kepadatan taksi secara real-time di sekitar New York City berdasarkan kode pos. Meskipun mungkin bukan data dunia nyata, data ini memiliki penerapan di dunia nyata dan memberi Anda gambaran tentang kekuatan dan kemampuan tentang bagaimana data dinamis dapat divisualisasikan di peta dengan Gaya visual berbasis data.

Langkah 1: Pilih data yang akan divisualisasikan dan digabungkan ke ID Tempat batas

Langkah pertama adalah mengidentifikasi data yang ingin Anda tampilkan dan memastikannya dapat dicocokkan dengan batas Google. Anda bisa melakukan pencocokan sisi klien ini dengan memanggil metode callback findPlaceFromQuery untuk setiap postalCode. Perhatikan bahwa kode pos di Amerika Serikat memiliki nama yang berbeda, tetapi tingkat administratif lainnya tidak. Pastikan Anda memilih ID Tempat yang benar untuk kueri jika kemungkinan ada hasil yang ambigu.


const request = {
    query: postalCode,
    fields: ['place_id'],
};
 
function findPlaceId() {
   placesService.findPlaceFromQuery(request, function (results, status) {
      if (status === google.maps.places.PlacesServiceStatus.OK) {
         console.log(results[0]);
      }
   });
}

Jika data memiliki nilai lintang dan bujur, Anda juga dapat menggunakan Geocoding API dengan pemfilteran komponen untuk me-resolve nilai lintang dan bujur tersebut menjadi nilai ID Tempat untuk lapisan fitur yang ingin ditata gayanya. Dalam contoh ini, Anda akan menata gaya lapisan fitur POSTAL_CODE.

Langkah 2: Hubungkan ke data real-time

Ada berbagai cara untuk terhubung ke sumber data, dan penerapan terbaik akan bergantung pada kebutuhan spesifik dan infrastruktur teknis Anda. Dalam kasus ini, asumsikan data Anda berada di tabel BigQuery dengan dua kolom: "zip_code" dan "taxi_count", dan Anda akan membuat kuerinya melalui Firebase Cloud Function.

async function queryNycTaxis() {
   // Queries the NYC Taxis dataset.

   // Create a client
   const bigqueryClient = new BigQuery();
  
   // The SQL query to run
   const sqlQuery = 'SELECT zip_code, taxi_count
      FROM \'YOUR_DATASET_ID.TABLE\' LIMIT 100';
      
   const options = {
      query: sqlQuery,
      // Location must match that of the dataset(s)
      // referenced in the query.
      location: 'US',
   };
  
   // Run the query
   const [rows] = await bigqueryClient.query(options);
  
   rows.forEach(row => {
      const postalCode = row['zip_code'];
      const taxiCount = row['taxi_count'];
   });
}

Selanjutnya, Anda perlu memastikan bahwa data selalu aktual. Salah satu cara untuk melakukannya adalah dengan memanggil kueri di atas menggunakan web worker, dan menyetel timer untuk memperbarui data menggunakan fungsi setInterval. Anda dapat menetapkan interval ke nilai yang sesuai, seperti memuat ulang peta setiap 15 detik. Setiap kali waktu interval berlalu, web worker akan meminta nilai taxiCount yang diperbarui per postalCode.

Setelah dapat melakukan kueri dan memuat ulang data, mari pastikan tampilan poligon peta mencerminkan perubahan ini.

Langkah 3: Menata gaya peta Anda dengan gaya visual berbasis data

Setelah Anda memiliki nilai data dinamis yang diperlukan untuk membuat dan menerapkan gaya visual ke batas kode pos di instance Maps JavaScript sebagai objek JSON, sekarang saatnya memberinya beberapa gaya sebagai peta koroplet.

Dalam contoh ini, Anda akan menata gaya peta berdasarkan jumlah taksi di setiap kode pos, sehingga memberikan gambaran kepadatan dan ketersediaan taksi di area mereka kepada pengguna. Gaya akan bervariasi bergantung pada nilai jumlah taksi. Area dengan taksi paling sedikit akan menerapkan gaya ungu, dan gradasi warna akan bergerak melalui merah, oranye, dan berakhir di taksi kuning NYC untuk area kepadatan tertinggi. Untuk skema warna ini, Anda akan menerapkan nilai warna ini ke fillColor dan strokeColor. Menyetel fillOpacity ke 0.5 memungkinkan pengguna melihat peta pokok, dan menyetel strokeOpacity ke 1.0 memungkinkan mereka membedakan di antara batas poligon berwarna sama:


const featureLayer = map.getFeatureLayer(
   google.maps.FeatureType.POSTAL_CODE
);
featureLayer.style = (featureStyleFunctionOptions) => {
   const placeFeature = featureStyleFunctionOptions.feature;
   // taxiCount per (postal_code) PlaceID 
   const taxiCount = zips[placeFeature.placeId];
   let fillColor;
   let strokeColor;
// Apply colors to features based on taxiCount values
if (taxiCount < 8) {
   fillColor = "#571845";  
   strokeColor = "#571845"; 
} else if (taxiCount < 13) {
   fillColor = "#900c3e";
   strokeColor = "#900c3e";
} else if (taxiCount < 21) {
   fillColor = "#c60039"; 
   strokeColor = "#c60039"; 
} else if (taxiCount < 34) {
   fillColor = "#fe5733";
   strokeColor = "#fe5733";
// keep else if or the whole map gets this style with else
} else if (taxiCount >= 34) { 
   fillColor = "#fec30f";
   strokeColor = "#fec30f";
}  
return {
   fillColor,
   strokeColor,
   fillOpacity: 0.5,
   strokeOpacity: 1.0,
};
 

Kesimpulan

Gaya visual berbasis data untuk batas-batas Google memberikan kemampuan untuk menggunakan data Anda guna menata gaya peta untuk berbagai penerapan di seluruh industri dan segmen. Dengan terhubung ke data real-time, Anda dapat menyampaikan apa yang terjadi, di mana terjadinya, dan saat terjadinya. Kemampuan ini memiliki potensi untuk memanfaatkan data real-time Anda dan membantu pengguna lebih memahaminya secara real time, di dunia nyata.

Tindakan Berikutnya

Kontributor

Penulis utama:

Jim Leflar | Engineer Solusi Google Maps Platform