geotrellis官方大概意思是說核密度是一種將點(diǎn)要素的集合(矢量數(shù)據(jù))轉(zhuǎn)換為柵格數(shù)據(jù)的一種方法誓竿,具體核密度估值的資料可以從百度上查詢,我數(shù)學(xué)也一般大概知道是什么意思但也不是熟悉谈截。
從網(wǎng)上找的一段解釋筷屡,文章來源于:
http://support.supermap.com.cn/DataWarehouse/WebDocHelp/iDesktop/Features/Analyst/Raster/KernelDensityAnalysis.htm
核密度分析用于計(jì)算點(diǎn)、線要素測量值在指定鄰域范圍內(nèi)的單位密度簸喂。簡單來說毙死,它能直觀的反映出離散測量值在連續(xù)區(qū)域內(nèi)的分布情況。其結(jié)果是中間值大周邊值小的光滑曲面喻鳄,柵格值即為單位密度扼倘,在鄰域邊界處降為0。
核密度分析可用于計(jì)算人口密度除呵、建筑密度再菊、獲取犯罪情況報(bào)告、旅游區(qū)人口密度監(jiān)測颜曾、連鎖店經(jīng)營情況分析等等纠拔。例如:
某街區(qū)分布了多棟高層公寓及住宅,已知每棟的入住人數(shù)泛啸,想要了解街區(qū)內(nèi)各處的人口分布情況,即可使用此功能秃症,相當(dāng)于將每棟樓的人口數(shù)量以核函數(shù)的變化趨勢分布到指定的圓形鄰域內(nèi)候址,重疊區(qū)域進(jìn)行加和,最后得到街區(qū)內(nèi)各處的人口密度种柑。而人口密度結(jié)果可用于店鋪選址決策岗仑、犯罪率估算等。
某地區(qū)有多家店面的連鎖零售店聚请,假定顧客會(huì)根據(jù)路程的遠(yuǎn)近來選擇光顧哪家店面荠雕,假定任何一個(gè)顧客總是會(huì)選擇最近的那家店面稳其。根據(jù)顧客到店面的距離字段,得出各個(gè)店面顧客分布情況的柵格面炸卑。
某地區(qū)準(zhǔn)備修建道路(或者公用設(shè)施管線)既鞠,可根據(jù)道路(或管線)對(duì)野生動(dòng)物棲息地的影響字段,計(jì)算道路(管線)對(duì)野生動(dòng)物棲息地造成影響盖文。
核密度估值示例代碼:
package com.scrdny
import geotrellis.raster._
import geotrellis.raster.mapalgebra.focal.Kernel
import geotrellis.vector.{Extent, Feature, Point, PointFeature}
import scala.util.Random
object demo3 {
def main(args:Array[String]): Unit = {
val extent = Extent(-109, 37, -102, 41);
def randomPointFeature(extent: Extent): PointFeature[Double] = {
def randInRange (low: Double, high: Double): Double = {
val x = Random.nextDouble
low * (1-x) + high * x
}
Feature(Point(randInRange(extent.xmin, extent.xmax),
randInRange(extent.ymin, extent.ymax)),
Random.nextInt % 16 + 16)
}
val pts = (for (i <- 1 to 1000) yield randomPointFeature(extent)).toList;
println(pts);
val kernelWidth: Int = 9;
val kern: Kernel = Kernel.gaussian(kernelWidth, 1.5, 25);
val kde: Tile = pts.kernelDensity(kern, RasterExtent(extent, 700, 400));
val colorMap = ColorMap(
(0 to kde.findMinMax._2 by 4).toArray,
ColorRamps.HeatmapBlueToYellowToRedSpectrum
)
kde.renderPng(colorMap).write("/Users/mocker/Downloads/test.tif")
}
1嘱蛋、先randomPointFeature在范圍生成隨機(jī)的點(diǎn)。for循環(huán)中的yield主要作用記住每次迭代數(shù)據(jù)的值五续,保存在集合中洒敏,循環(huán)結(jié)束后將返回該集合。
2疙驾、使用核密度函數(shù)處理數(shù)據(jù)凶伙,并生成一個(gè)700 * 400分辨率的柵格地圖,
3它碎、輸出地圖函荣,輸出的格式可以選擇為png圖片,或者tif柵格链韭。
4偏竟、查看生成的柵格地圖,放大之后查看可以發(fā)現(xiàn)每一塊都是九個(gè)像素點(diǎn)敞峭,也是通過val kernelWidth: Int = 9;設(shè)置的踊谋。