Haritaya ısı haritası katmanı ekleme
Nokta yoğunluğu haritaları olarak da bilinen ısı haritaları, bir veri görselleştirme t t t t'leridir. Bir renk aralığı kullanarak veri yoğunluğunu göstermek ve verileri haritada "sıcak noktalar" göstermek için kullanılır. Isı haritaları, veri kümelerini çok sayıda noktayla işlemenin harika bir yoludur.
Semboller olarak on binlerce nokta işleme, harita alanı çoğunu kapsıyor olabilir. Bu durum büyük olasılıkla birçok sembolün çakışmasıyla sonuç verir. Verileri daha iyi anlamayı zorlaştırarak. Ancak aynı veri kümesine ısı haritasıyla görselleştirerek her veri noktasının yoğunluğunu ve göreli yoğunluğunu kolayca görebiliriz.
Isı haritalarını aşağıdakiler gibi birçok farklı senaryoda kullanabilirsiniz:
- Sıcaklık verileri: İki veri noktası arasındaki sıcaklığın ne olduğu hakkında yaklaşık tahminler sağlar.
- Gürültü algılayıcıları için veriler: Yalnızca algılayıcının bulunduğu yerde kirliliğin yoğunluğunu değil aynı zamanda mesafenin dağılımı hakkında da içgörüler sağlar. Herhangi bir sitenin gürültü düzeyi yüksek olabilir. Birden çok algılayıcıdan gelen gürültü kapsamı alanı çakışıyorsa, bu çakışan alan daha yüksek gürültü düzeyleriyle karşılasabilir. Bu nedenle, çakışan alan ısı haritasında görünür olur.
- GPS izlemesi: Her veri noktasının yoğunluğunun hıza bağlı olduğu ağırlıklı yükseklik haritası olarak hızı içerir. Örneğin bu işlevsellik, aracın hızının nerede olduğunu görmenin bir yolunu sağlar.
İpucu
Isı haritası katmanları varsayılan olarak bir veri kaynağında tüm geometrilerin koordinatlarını işler. Katmanı yalnızca nokta geometrisi özelliklerini işleyene kadar sınırlamak için filter katmanın özelliğini olarak ['==', ['geometry-type'], 'Point'] ayarlayın. MultiPoint özelliklerini de eklemek için katmanın filter özelliğini olarak ['any', ['==', ['geometry-type'], 'Point'], ['==', ['geometry-type'], 'MultiPoint']] ayarlayın.
Isı haritası katmanı ekleme
Noktalardan bir veri kaynağını ısı haritası olarak işlemek için veri kaynağınızı sınıfın bir örneğine iletir ve HeatMapLayer haritaya ekleyin.
Aşağıdaki kodda, her ısı noktasının tüm yakınlaştırma düzeylerinde 10 piksel yarıçapı vardır. Daha iyi bir kullanıcı deneyimi sağlamak için ısı haritası etiket katmanının altındadır. Etiketler net bir şekilde görünür durumda kalır. Bu örnekteki veriler USGS Deprem Tehlikeleri Programı'dır. Son 30 gün içinde meydana gelen önemli depremler için.
//Create a data source and add it to the map.
var datasource = new atlas.source.DataSource();
map.sources.add(datasource);
//Load a dataset of points, in this case earthquake data from the USGS.
datasource.importDataFromUrl('https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/all_week.geojson');
//Create a heat map and add it to the map.
map.layers.add(new atlas.layer.HeatMapLayer(datasource, null, {
radius: 10,
opacity: 0.8
}), 'labels');
Yukarıdaki kodun çalışan tam kod örneği aşağıdaki şekildedir.
Isı haritası katmanını özelleştirme
Önceki örnek, yarıçap ve opaklık seçeneklerini ayarerek ısı haritasını özelleştirdi. Isı haritası katmanı, özelleştirme için aşağıdakiler dahil olmak üzere çeşitli seçenekler sağlar:
radius: Her veri noktasının iş için bir piksel yarıçapı tanımlar. Yarıçapı sabit bir sayı veya ifade olarak ayarlayın. Bir ifade kullanarak yarıçapı yakınlaştırma düzeyine göre ölçeklendirin ve haritada tutarlı bir uzamsal alanı (örneğin, 5 mil yarıçap) temsil edin.color: Isı haritasının nasıl renklendirmesi olduğunu belirtir. Renk gradyan, ısı haritalarının yaygın bir özelliğidir. Etkiyi bir ifadeyle eldeinterpolateetmek için. Ayrıca ısı haritasını renklendirmek için bir ifade de kullanabilir, yoğunluğu görsel olarak bir yas veya radar stili haritaya benzeyensteparalıklara bölün. Bu renk paletleri minimumdan maksimum yoğunluk değerine kadar olan renkleri tanımlar.Isı haritaları için renk değerlerini değer üzerinde bir ifade olarak
heatmap-densitybelirtirsiniz. Verinin bulunduğu alan rengi, "İlişkilendirme" ifadesinin dizin 0'sinde veya "Adımlı" ifadenin varsayılan renginde tanımlanır. Bir arka plan rengi tanımlamak için bu değeri kullanabilirsiniz. Bu değer genellikle saydam veya yarı saydam siyah olarak ayarlanır.Renk ifadelerinin örnekleri aşağıda verilmiştir:
İlişkilendirme renk ifadesi Adımlı renk ifadesi [
'ilişkilendirme',
['linear' ] ,
['heatmap-density' ] ,
0, 'saydam',
0,01, 'mor',
0,5, '#fb00fb',
1, '#00c3ff'
][
'step',
['heatmap-density' ] ,
'saydam',
0,01, 'deniz mavisi',
0,25, 'yeşil',
0,50, 'sarı',
0,75, 'kırmızı'
]opacity: Isı haritası katmanının ne kadar opak veya saydam olduğunu belirtir.intensity: Isı haritasının genel yoğunluğunu artırmak için her veri noktasının ağırlığına bir çarpan uygular. Veri noktalarının ağırlığında bir farka neden olur ve görselleştirilenin daha kolay hale getirir.weight: Varsayılan olarak, tüm veri noktalarının ağırlığı 1 olur ve eşit olarak ağırlıklıdır. Ağırlık seçeneği bir çarpan gibi davranır ve bunu sayı veya ifade olarak ayarlayın. Bir sayı ağırlık olarak ayarlanırsa, her veri noktasını haritaya iki kez yerleştirme denkliğidir. Örneğin ağırlık 2 ise yoğunluk iki katına çıkar. Ağırlık seçeneğini bir sayı olarak ayarsanız ısı haritası, yoğunluk seçeneğini kullanmaya benzer şekilde işler.Ancak bir ifade kullanırsanız, her veri noktasının ağırlığı her veri noktasının özelliklerine göre olabilir. Örneğin, her veri noktasının bir depremi temsil ettiğini varsayalım. Büyüklük değeri, her deprem veri noktası için önemli bir ölçüm oldu. Depremler her zaman meydana gelir, ancak çoğu depremin büyüklüğü düşüktür ve farkeder. Her veri noktasına ağırlığı atamak için bir ifadede büyüklük değerini kullanın. Ağırlığı atamak için büyüklük değerini kullanarak ısı haritasında depremlerin önemini daha iyi bir şekilde gösterirsiniz.
sourcevesource-layer: Veri kaynağını güncelleştirmeye olanak sağlar.
Farklı ısı haritası katmanı seçeneklerini test etmek için aşağıdaki aracı inceleebilirsiniz.
Tutarlı yakınlaştırılabilir ısı haritası
Varsayılan olarak, ısı haritası katmanında işlenen veri noktalarının rady değeri tüm yakınlaştırma düzeyleri için sabit bir piksel yarıçapa sahiptir. Haritayı yakınlaştırırken veriler bir araya toplanmış ve ısı haritası katmanı farklı görünür.
Her bir veri noktasının haritanın aynı fiziksel alanına sahip olması için her yakınlaştırma düzeyi için zoom yarıçapı ölçeklendirmek üzere bir ifade kullanın. Bu ifade ısı haritası katmanının daha statik ve tutarlı bir şekilde görünür. Haritanın her yakınlaştırma düzeyi, önceki yakınlaştırma düzeyine göre dikey ve yatay olarak iki kat fazla piksele sahip.
Yarıçapı her yakınlaştırma düzeyiyle iki katına çıkararak ölçeklendirmek, tüm yakınlaştırma düzeylerinde tutarlı görünen bir ısı haritası oluşturur. Bu ölçeklendirmeyi uygulamak için, aşağıdaki örnekte gösterildiği gibi en düşük yakınlaştırma düzeyi için piksel yarıçapı ayarlanmış bir taban 2 ifadesi ve maksimum yakınlaştırma düzeyi için ölçeklendirilen yarıçapı hesaplanmış olarak zoom exponential interpolation 2 * Math.pow(2, minZoom - maxZoom) kullanın. Isı haritasının yakınlaştırma düzeyiyle nasıl ölçeklendirildiklerini görmek için haritayı yakınlaştırın.
İfade zoom yalnızca ve step interpolate ifadelerinde kullanılabilir. Aşağıdaki ifade, bir yarıçapı metre olarak yaklaşık olarak tahmin etmek için kullanılabilir. Bu ifade, istediğiniz radiusMeters yarıçapla değiştirmeniz gereken bir yer tutucu kullanır. Bu ifade, yakınlaştırma düzeyleri 0 ve 24 için ekvatorda bir yakınlaştırma düzeyi için yaklaşık piksel yarıçapını hesaplar ve haritada çalışma sistemiyle aynı şekilde bu değerler arasında ölçeklendirme yapmak için bir ifade exponential interpolation kullanır.
[
`'interpolate',
['exponential', 2],
['zoom'],
0, ['*', radiusMeters, 0.000012776039596366526],
24, [`'*', radiusMeters, 214.34637593279402]
]
İpucu
Veri kaynağında kümeleyi etkinleştirerek birbirine yakın noktalar kümelenmiş bir nokta olarak gruptur. Isı haritası için ağırlık ifadesi olarak her kümenin nokta sayısını kullanabilirsiniz. Bu, işlenecek noktaların sayısını önemli ölçüde azaltabilir. Bir kümenin nokta sayısı, point_count nokta özelliğinin bir özelliğinde depolanır:
var layer = new atlas.layer.HeatMapLayer(datasource, null, {
weight: ['get', 'point_count']
});
Kümeleme yarıçapı yalnızca birkaç pikselden azsa, işlemede küçük bir görsel fark olur. Daha büyük bir yarıçap, her kümeye daha fazla işaret sağlar ve heatmap 'in performansını geliştirir.
Sonraki adımlar
Bu makalede kullanılan sınıflar ve yöntemler hakkında daha fazla bilgi edinin:
Haritalarınıza eklenecek daha fazla kod örneği için aşağıdaki makalelere bakın: