Bu belgede, Google Cloud Platform BigQuery ve Google Haritalar Platformu Veri Kümeleri API'sinde konum verileriyle harita verisi görselleştirmeleri oluşturma (ör. açık belediye verilerini analiz etme, telekomünikasyon kapsam haritası oluşturma veya mobil araç filosu hareketlerinin izlerini görselleştirme) için bir referans mimari ve örnek verilmiştir.
Harita verilerini görselleştirme, kullanıcıların ilgisini çekmek ve konum verilerindeki mekansal bilgileri ortaya çıkarmak için güçlü araçlardır. Konum verileri nokta, çizgi veya poligon özellikleri olan verilerdir. Örneğin, hava durumu haritaları tüketicilerin seyahatlerini anlayıp planlamalarına ve fırtınalara hazırlanmalarına yardımcı olur. iş zekası haritaları kullanıcıların veri analizlerinden ayrıntılı bilgi edinmesine, telekomünikasyon haritaları ise sağlayıcıların sağlayıcıları anlamasına yardımcı olur. kapsam ve kalitedir.
Ancak, uygulama geliştiricilerin yüksek performans gösteren ve mükemmel bir kullanıcı deneyimi sunan büyük harita verisi görselleştirmeleri oluşturması zordur. Büyük verilerin bellek istemci tarafına yüklenmesi gerekir. Bu, ilk harita yükleme sürelerinin yavaş olmasına neden olur. Görsel, bellek ve GPU kısıtlamaları olan düşük teknoloji cep telefonları da dahil olmak üzere tüm cihazlarda iyi performans göstermelidir. Son olarak geliştiricilerin taşınabilir, güvenilir ve büyük verilerde yüksek performans gösteren büyük bir veri oluşturma kitaplığı seçmesi gerekir.
Referans Mimari
Büyük veri görselleştirmelerine sahip uygulamalar geliştirmek için iki ana bileşen gerekir.
- Müşteri arka ucu - Tüm arka uç uygulama verileri ve hizmetleri de kapsar.
- Müşteri istemcisi: Harita görselleştirme bileşeni içeren uygulamanızın kullanıcı arayüzü.
Aşağıda, büyük bir veri görselleştirme uygulaması oluşturmak için bu iki bileşenin uygulama kullanıcısı, Google Cloud ve Google Haritalar Platformu ile nasıl etkileşime geçtiğini gösteren bir sistem şeması verilmiştir.
Tasarımla ilgili dikkat edilmesi gereken noktalar
Google Cloud ve Google Haritalar Platformu'nu kullanarak yüksek performanslı bir veri görselleştirmesi oluşturmak için tasarımla ilgili dikkat edilmesi gereken birkaç nokta vardır.
- Kaynak veri boyutu ve güncelleme sıklığı.
- geoJSON biçimindeki kaynak veriler 5 MB'tan küçükse veya çok sık güncelleniyorsa, ör. Canlı hava durumu radar tahmini için verileri uygulamanızda geoJSON nesne istemci tarafı olarak sunabilir ve deck.gl katmanıyla oluşturabilirsiniz.
- Verilerinizin boyutu 5 MB'tan büyükse ve verileriniz saatte en fazla bir kez güncelleniyorsa bu belgedeki Datasets API mimarisini inceleyin.
- Veri kümeleri 350 mb'ye kadar boyuta sahip dosyaları destekler.
- Verileriniz 350 MB'tan büyükse veri kümelerine iletmeden önce kaynak dosyadaki geometri verilerini sadeleştirmeyi veya basitleştirmeyi düşünün (aşağıdaki Veri Kısaltma bölümüne bakın).
- Şema ve biçimi
- Verilerinizin her özellik için global olarak benzersiz bir kimlik özelliğine sahip olduğundan emin olun. Benzersiz kimlik, belirli bir özelliği seçip şekillendirmenize veya verileri görselleştirmek üzere bir özellikle birleştirmenize (ör. "tıklama" kullanıcı etkinliğinde seçili bir özelliğin stilini şekillendirmenize olanak tanır.)
- Verilerinizi geçerli sütun adları, veri türleri ve GeoJSON nesne türleriyle Datasets API spesifikasyonuna göre CSV veya GeoJSON olarak biçimlendirin.
- BigQuery'den kolayca veri kümeleri oluşturmak için SQL CSV dışa aktarma dosyasında
wkt
adlı bir sütun oluşturun. Veri kümeleri,wkt
adlı bir sütundan İyi Bilinen Metin (WKT) biçiminde bir CSV'den geometrinin içe aktarılmasını destekler. - Verilerinizin geçerli geometri ve veri türleri olduğundan emin olun. Örneğin, GeoJSON, WGS84 koordinat sisteminde, geometrik sarma sırasında vb. olmalıdır.
- Bir kaynak dosyadaki tüm geometrilerin geçerli olduğundan emin olmak için geojson-validate veya kaynak dosyayı biçimler ya da koordinat sistemleri arasında dönüştürmek için ogr2ogr gibi bir araç kullanın.
- Veri ayıklama
- Özelliklerin sayısını en aza indirin. Çalışma zamanında bir özelliğe ait ek özellikleri benzersiz bir tanımlayıcı anahtarında birleştirebilirsiniz (örnek).
- Mümkün olduğunda özellik nesneleri için tam sayı veri türlerini kullanarak karo depolama alanını en aza indirin ve istemci uygulamasında blokların HTTPS üzerinden yüklenme performansını sürdürün.
- Çok karmaşık özellik geometrilerini basitleştirme ve/veya toplama; kaynak dosya boyutunu küçültmek ve harita performansını iyileştirmek için karmaşık poligon geometrilerinde ST_Simplify gibi BigQuery işlevlerini kullanabilirsiniz.
- Döşeme
- Google Haritalar Veri Kümeleri API'si, bir web veya mobil Haritalar SDK'sı ile kullanmak üzere kaynak veri dosyanızdan harita blokları oluşturur.
- Harita blokları, görsel uygulamaya veri yüklemek için daha verimli yöntemler sağlayan yakınlaştırma tabanlı bir dizine ekleme sistemidir.
- Harita parçaları, düşük yakınlaştırma düzeylerinde yoğun veya karmaşık özellikleri bırakabilir. Kullanıcı görüntüyü uzaklaştırarak bir eyalete ya da ülkeye (ör. z5-z12), şehir veya mahalleye yakınlaştırıldığında (ör. z13-z18) farklı görünebilir.
Örnek - Londra'daki demiryolları
Bu örnekte, GCP ve Google Haritalar ile Londra'daki tüm demiryollarını Open Street Map (OSM) verilerinden görselleştiren bir web uygulaması oluşturmak için referans mimarisi uygulayacağız.
Ön koşullar
- BigQuery Korumalı Alanı'na ve Cloud Console'a erişim
- GCP projeniz ve faturalandırma hesabı kurulumunuz olduğundan emin olun.
1. Adım - BigQuery'de veri sorgulama
BigQuery Herkese Açık Veri Kümeleri'ne gidin. "bigquery-public-data" veri kümesi ve geo_openstreetmap.planet_features
tablosu, tüm olası özellikler dahil olmak üzere dünya genelindeki Open Street Map (OSM) verilerini içerir. OSM Wiki'de amenity
, road
ve landuse
gibi sorgulanabilen tüm özellikleri keşfedin.
SQL kullanarak tabloyu sorgulamak için Cloud Shell veya BigQuery Cloud Console'u(https://console.cloud.google.com) kullanın. Aşağıdaki kod snippet'i, bir sınırlayıcı kutu ve ST_Intersects() işlevi kullanılarak yalnızca Londra'ya filtrelenen tüm demiryollarını sorgulamak için bq query komutunu kullanır.
Bu sorguyu Cloud Shell'den gerçekleştirmek için aşağıdaki kod snippet'ini çalıştırın ve ortamınızın proje kimliğini, veri kümesini ve tablo adını güncelleyin.
bq query --use_legacy_sql=false \
--destination_table PROJECTID:DATASET.TABLENAME \
--replace \
'SELECT
osm_id,
feature_type,
(SELECT value
FROM unnest(all_tags)
WHERE KEY = "name") AS name,
(SELECT value
FROM unnest(all_tags)
WHERE KEY = "railway") AS railway,
geometry as wkt
FROM bigquery-public-data.geo_openstreetmap.planet_features
WHERE ("railway") IN (SELECT key FROM unnest(all_tags))
AND ST_Intersects(
geometry,
ST_MakePolygon(ST_MakeLine(
[ST_GeogPoint(-0.549370, 51.725346),
ST_GeogPoint(-0.549370, 51.2529407),
ST_GeogPoint(0.3110581, 51.25294),
ST_GeogPoint(0.3110581, 51.725346),
ST_GeogPoint(-0.549370, 51.725346)]
))
)'
Sorgu şu sonucu döndürür:
- her özellik için benzersiz bir tanımlayıcı
osm_id
feature_type
, ör. noktalar, çizgiler vb.- Özelliğin
name
öğesi, ör.Paddington Station
railway
türü, ör. ana, turizm, asker vb.- Özelliğin
wkt
değeri - WKT biçimindeki nokta, çizgi veya poligon geometrisi. WKT, BigQuery Coğrafya sütunlarının bir sorguda döndürdüğü standart veri biçimidir.
Not: Veri kümesi oluşturmadan önce sorgu sonuçlarınızı görsel olarak doğrulamak için Looker Studio'yu kullanarak BigQuery'deki bir kontrol panelinde verilerinizi hızlıca görselleştirebilirsiniz.
Tabloyu bir Google Cloud Storage paketindeki bir CSV dosyasına aktarmak için Cloud Shell'de bqExtract komutunu kullanın:
bq extract \
--destination_format "CSV" \
--field_delimiter "," \
--print_header=true \
PROJECTID:DATASET.TABLENAME \
gs://BUCKET/FILENAME.csv
Not: Verilerinizi düzenli olarak güncellemek için Cloud Scheduler'ı kullanarak her adımı otomatikleştirebilirsiniz.
2. Adım - CSV dosyanızdan bir veri kümesi oluşturun
Ardından, Google Cloud Storage'da (GCS) sorgu çıkışından bir Google Haritalar Platformu veri kümesi oluşturun. Datasets API'yi kullanarak bir veri kümesi oluşturabilir ve ardından GCS'de barındırılan bir dosyadan veri kümenize veri yükleyebilirsiniz.
Başlamak için GCP projenizde Haritalar Veri Kümeleri API'sini etkinleştirin ve API belgelerini inceleyin. Veri kümeleri API'sini uygulamanızın arka ucundaki mantıktan çağırmak için Python ve Node.js istemci kitaplıkları vardır. Ayrıca Cloud Console'da veri kümelerini manuel olarak oluşturmak için kullanabileceğiniz bir Veri Kümeleri GUI'si bulunur.
Veri kümesi yüklemeniz tamamlandıktan sonra veri kümenizi Veri Kümeleri GUI'sinde önizleyebilirsiniz.
4. Adım - Veri Kümenizi bir Harita Kimliğiyle ilişkilendirin
Veri kümeniz oluşturulduktan sonra, ilişkili bir Harita Stili ile bir Harita Kimliği oluşturabilirsiniz. Harita Stili düzenleyicisinde, harita kimliği ve stili Veri kümesiyle ilişkilendirebilirsiniz. Haritanızın görünümünü ve tarzını özelleştirmek için Bulut Tabanlı Harita Stili'ni de uygulayabilirsiniz.
5. Adım - İstemci uygulama haritası görselleştirmenizi oluşturun
Son olarak, Haritalar JS API'yi kullanarak veri kümesini bir istemci tarafı veri görselleştirme uygulamasına ekleyebilirsiniz. Önceki adımda yer alan veri kümenizle ilişkilendirilmiş harita kimliğini kullanarak harita nesnenizi başlatın. Daha sonra Veri Kümesi katmanının stilini ve etkileşimini ayarlayın. Daha fazla ayrıntı için veri kümeleri ile veriye dayalı stil kılavuzuna göz atın.
Maps JS API'yi kullanarak stili özelleştirebilir, stili dinamik olarak değiştirmek için etkinlik işleyiciler ekleyebilir ve daha fazlasını yapabilirsiniz. Belgelerdeki örneklere göz atın. Aşağıda, “feature_type” özelliğine dayanarak bu örnek için nokta ve çizgi özellik stilini oluşturmak üzere bir setStyle işlevi tanımlayacağız.
function setStyle(params) {
const map.getDatasetFeatureLayer("your-dataset-id");
const datasetFeature = params.feature;
const type = datasetFeature.datasetAttributes["feature_type"];
if (type == "lines") {
return {
fillColor: "blue",
strokeColor: "blue",
fillOpacity: 0.5,
strokeWeight: 1,
}
} else if (type == "points") {
return {
fillColor: "black",
strokeColor: "black",
strokeOpacity: 0.5,
pointRadius: 2,
fillOpacity: 0.5,
strokeWeight: 1,
}
}
}
Not: Veri kümeniz için harita uygulamanıza her zaman atıf eklediğinizden emin olun. OSM ilişkilendirmesi eklemek için OSM yönergelerine bağlı olarak dokümanlardaki ilişkilendirme kodu örneğini uygulayın.
Tek sayfalık bir web uygulamasında başlatıldığında yukarıdaki kod, aşağıdaki harita verisi görselini sağlar:
Buradan, özellikleri filtrelemek için mantık ekleyerek, kullanıcı etkileşimine göre stil ekleyerek ve uygulamanızın geri kalanıyla etkileşimde bulunarak setStyle() işlevinde harita görselleştirmenizi genişletebilirsiniz.
Sonuç
Bu makalede, referans mimarisi ve Google Cloud ve Google Haritalar Platformu kullanılarak büyük bir veri görselleştirme uygulamasının örnek uygulamasını ele aldık. Bu referans mimarisi kullanarak, GCP BigQuery'deki tüm verilerden Google Haritalar Veri Kümeleri API'sini kullanarak herhangi bir cihazda yüksek performans gösteren konum verisi görselleştirme uygulamaları oluşturabilirsiniz.
Sonraki İşlemler
Daha fazla bilgi:
- Google Haritalar Platformu Veri Kümeleri API'si belgeleri
- Veri Sürücüsü Stilleri ile verilerinizi gerçek zamanlı olarak görün
- BigQuery'de coğrafi analizlere giriş
- Coğrafi analiz için BigQuery'de GeoJSON kullanma
Katkıda bulunanlar
Ana yazarlar:
- Ryan Baumann, Google Haritalar Platformu Çözümleri Mühendislik Yöneticisi