python 克里金插值_R语言克里金插值(三)

本文详细探讨了如何使用Python和R语言进行克里金插值,对比了两种语言在实现该插值方法时的异同。通过实例,展示了克里金插值在地理信息系统中的应用,帮助读者理解并掌握这两种编程语言在处理空间数据插值上的技巧和优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

事实证明: 自拍后, 只要你用心P图3小时,大家就看不出来你是 肥仔 !!!

b911cbb429a421caeb371422bf30d9e7.png

039068c2ea1b636e929131473e02b7b6.png

setwd("F:/Rpeng/23")#### 首先生成一套模拟数据simdat, 通过Volcano数据随机提取1000个点, 用raster的extract函数提取library(raster)rrr 0, xmx= x11()plot(rrr, col = terrain.colors(100))set.seed(12345)loc x = round(runif(value simdat ### The simulated data#### Krig准备工作开始, 导入程序包library(sp)library(gstat)#### simdat需要转换为sp格式, 需要指定坐标coordinates(simdat) x+### bubble(simdat, "alt")spplot(simdat, "alt") ### 查看每个点的值 #### 创建克里格所用的网格, 20m方格的中心位置xgrid q(ceiling(min(simdat$x)), floor(max(simdat$x)), by = ygrid q(ceiling(min(simdat$y)), floor(max(simdat$y)), by = basexy #### plot(y ~ x, basexy)colnames(basexy) "x", coordinates(basexy) x+gridded(basexy) vgm1 1, simdat)plot(vgm1, plot.numbers = TRUE) m 01,plot(vgm1, model=m)### 设定vgm模型的初始值m 01,### 进行克里格krige_res 1, simdat, basexy, model = ### 查看克里格插值的结果spplot(krige_res, zcol = "var1.pred", main = "Predictions of altitude based on the randomly sampled data", col.regions = terrain.colors(100))

b45f686c24c252da616fe6afd8bf8e13.png

setwd("F:/Rpeng/23")library(maps)      ## 提供绘制世界地图的函数library(mapdata)   ## 提供世界地图library(rgdal)library(ggplot2)   ## 绘图核心函数library(maptools)  ## 提供 readShapePoly 函数, 读取中国多边形数据china0    "F:/Rpeng/23/shp/bou1_4p") china_df  ## 将list转换为ggplot可以使用的dataframe## 读取数据 https://simplemaps.com/static/data/world-cities/basic/simplemaps-worldcities-basic.csvcities "F:/Rpeng/23/shp/simplemaps-worldcities-basic.csv")cities 1:nrow(cities), size = pdf(file = "sampling sites location.pdf", width = 11.5, height = 5.8)cities$tempvar "Kingjames Kingpeng"rrr  borders(colour='darkgrey') +                  ## 添加世界地图 geom_polygon(data = china_df,   aes(x = long, y = lat, group = group), colour = "darkgrey",   fill = "white") +                           ## 添加中国地图 geom_point(data = cities,   aes(x=lng, y=lat, colour=pop), size = 2) +  ##点的颜色代表人口   theme_bw()+scale_colour_gradientn(colours=c("green", "yellow", "orange", "red"))+facet_grid(. ~ tempvar) +        theme(strip.background = element_rect(fill="#999999"),              strip.text = element_text(size=15, colour="white"))rrrdev.off()

dda5a2ce38262d1ddaf0d5cb827f65df.png

setwd("F:/Rpeng/23/sample_map")library(tmap)library(tmaptools)library(sp)library(rgdal)rm(list = ls())## 读取地图country "bou1_4l.shp")province "province_polygon.shp")world "ne_50m_admin_0_countries.shp")# Source: https://www.naturalearthdata.com/downloads/50m-cultural-vectors/ world "longlat")    country "longlat")    province "longlat")    province "longlat")    data(World)# 城市city "simplemaps-worldcities-basic.csv", header = city 1:nrow(city), coordinates(city) proj4string(city) "+proj=longlat +datum=WGS84")World$name[World$name == "Taiwan"] # 转换为spatial dataframe# 绘图tm_shape(world,          xlim = c(60, 140),          ylim = c(0, 60)) +   tm_borders("grey40", lwd = 1.5) +   tm_grid()+ tm_shape(province) +  tm_fill(col = "lightgrey") +   tm_borders("grey60", lwd = 0.8) + tm_shape(country) +   tm_lines(col="grey40", lwd = 1.5) + tm_scale_bar(position=c(0.05,0.0)) + tm_compass(type = "4star",            position=c("left", "top")) +     tm_layout(inner.margins=c(0.12,0.03,0.08,0.03),           legend.stack = "horizontal") + tm_shape(city) +    tm_bubbles("pop",                col = "red",                scale=.5,               border.col = "red") +     tm_text("city", size=0.5) + tm_legend(legend.position = c(0.05, 0.08)) + tm_shape(World) +    tm_text("name", size=1.0)

1aa15007e33c5b4a071fd59b32df016e.png

c9503b6c6c132feffdbe5ddf9eafbd69.png

setwd("F:/Rpeng/23")library(ggplot2)library(rgdal)rm(list = ls())  ## 删除所有对象## 去过的地方provinces_visited "Beijing",                "Liaoning", "Jilin", "Jiangxi", "Hunan",               "Zhejiang", "Hubei", "Chongqing", "Sichuan",               "Henan", "Guangxi", "Guangdong", "Fujian",               "Hainan", "Yunnan", "Guizhou")provinces_visited_df                                    visited_status = rep("Visited", length(provinces_visited)))## 读取地图country      "F:/Rpeng/23/chinamap/bou1_4l.shp")province     "F:/Rpeng/23/chinamap/province_polygon.shp")    province$ID  as.character(province$ID) ## 转换为ggplot2绘图用的data.framecountry_df  province_df ## 提取省级数据中的信息province_dat ## 改正省级数据中关于香港和澳门的错误index_HK "Xianggang")province_dat$X[index_HK] 114.156121province_dat$Y[index_HK] 22.37725province_dat$ID[index_HK] "Hong Kong"index_MC "Aomen")province_dat$X[index_MC] 113.545681province_dat$Y[index_MC] 20.197303province_dat$ID[index_MC] "Macau"## id与province_df数据表中的省出现的顺序相同, 这里id都从0开始, 所以需要减去1,以便匹配province_dat$id as.character(## 增加省拼音province_dat2 "ID",                        by.y = "province_pinyin", all.x = TRUE)## 由于visited status 默认是 factor 类型, 这里需要先转换为字符串, 再处理province_dat2$visited_status as.character(province_dat2$visited_status)## 所有没有匹配上的省份都是没有去过的, 状态为 not yetprovince_dat2$visited_status[is.na(province_dat2$visited_status)] "Not Yet"province_df_merged "id")                   ## 绘图## 用geom_path绘制读取的polyline,因为国界线是polyline## 多圆锥投影 ## http://desktop.arcgis.com/zh-cn/arcmap/10.3/guide-books/map-projections/polyconic.htmcountry_df$tempvar "Kingjames Kingpeng"ggplot() + geom_path(data = country_df,              aes(x = long, y = lat, group=group), colour="darkblue") +  coord_map("polyconic") +                                                geom_polygon(data = province_df_merged,              aes(x = long, y = lat, group=group,                  fill = visited_status), colour="grey") + geom_text(mapping = aes(x = X, y = Y, label = ID),           data = province_dat, colour = 'Black')+xlab("Longitude") + ylab("Latitude") + theme(legend.position = "bottom") + scale_fill_discrete(name = "Province")+facet_grid(. ~ tempvar) +        theme(strip.background = element_rect(fill="#999999"),              strip.text = element_text(size=15, colour="white"))

43eb8c78242a71f506220258123a80ed.png

setwd("F:/Rpeng/23")library(maps)library(ggplot2)thismap = map_data("world")thismap$tempvar "Kingjames Kingpeng"ggplot(thismap, aes(long, lat, group=group)) +  geom_polygon(fill="white", colour="gray") +facet_grid(. ~ tempvar) +        theme(strip.background = element_rect(fill="#999999"),              strip.text = element_text(size=15, colour="white"))ggplot(thismap, aes(long, lat, group=group, fill=region)) +   geom_polygon(show.legend = F) +facet_grid(. ~ tempvar) +        theme(strip.background = element_rect(fill="#999999"),              strip.text = element_text(size=15, colour="white"))library(mapdata) # with china map# map("china")ggplot(map("china", plot=F), aes(long, lat, group=group, fill=region)) +   geom_path(show.legend = F) +  ggtitle("Map of China")thismap "state")thismap$tempvar "Kingjames Kingpeng"ggplot(thismap, aes(long, lat, group=group, fill=region)) +   geom_polygon(show.legend = F)+facet_grid(. ~ tempvar) +        theme(strip.background = element_rect(fill="#999999"),              strip.text = element_text(size=15, colour="white"))

0a2014a81bb36da8a6569f1b39905413.png

9cd21bcf5ac7b0fdbc65e7a9f8f4fb97.png

ccbe6cf1a4b436cc6e0a34a59c119167.png

### 回答1: Python克里金插值是一种基于统计学的插值方法,它可以通过已知的点数据分析出空间上的连续的函数值。这种方法通过建立一个空间模型来解决无法测量部分数值的问题,将一些散点数据转化为连续的数据。 使用Python进行克里金插值时,需要先确定空间结构和变异函数,然后通过数据集构建克里金模型,最后通过该模型计算插值结果。 在确定变异函数方面,通常需要通过试验确定适合于所研究数据的变异函数,以使得插值效果最优。在实际操作中,Python中的插值库可以自动进行变异函数的拟合,并将插值结果输出为栅格图像。 Python克里金插值算法的特点是能够通过控制插值参数和调整插值模型而获得更好的插值结果,同时这种方法可以处理高维数据并输出带有置信度区间的插值结果。 总之,Python克里金插值是一种基于统计学的插值方法,它可以通过已知的数据点分析出空间上的连续函数值。它具有良好的适应性和可调节性,在实际应用中得到了广泛应用。 ### 回答2: Python克里金插值是一种通过空间上已知点的属性值来生成新点属性值的方法。这个过程通过对已知点之间的距离进行建模来实现最佳值的估计。Python克里金插值算法会对数据进行一定的预处理,对数据密度进行分析,并通过克里金变换对数据进行修正。与其它均值方法不同的是,该算法利用了整个点数据的特点,进而得出更准确的预测值。 Python克里金插值算法最重要的一步是确定克里金模型。克里金模型是克里金预测过程中参数的集合,这些参数决定了预测值和其它局部变量之间的空间关系。克里金模型的选取需要考虑数据集中点的坏值,因为这些坏值会严重影响模型的准确性。因此,在选择克里金模型时应当采用合适的手段对数据进行预处理来改善估计值的精度。 在确定了克里金模型之后,Python克里金插值算法通过较小的空间距离对已知点进行插值预测。根据对数据的分析,该算法可以得到一个权重权值向量,其权值表示已知点与被估计点之间的空间距离。然后,这些权值将被应用到线性结构中,从而得出被估计点的预测值。 在最后的结果中,Python克里金插值算法会生成一个等间距的栅格上,主要包括两个栅格的预测值和运行预测参数。预测参数包括与空间条件相关的多个属性值。这些参数能够为栅格上的每个点提供更为准确的预测值,在数据集出现异常值或者区域过于密集时,这些参数将对预测值的准确性产生较大的影响。 总而言之,Python克里金插值是一种非常流行的插值技术,它能够广泛地用于各种工程领域和科学领域中。使用Python实现的克里金插值算法能够为使用者提供实用、高效、方便的克里金方法,从而提高科学研究和工程建设的效率。 ### 回答3: python克里金插值是一种地理信息系统(GIS)技术,可以对数据进行空间插值处理。这种插值方法常用于地质、地形和气象的数据分析与模拟,用于将离散的间隔数据转化为光滑连续的表面数据。 Python克里金插值是基于数学模型的插值方法,其核心思想是通过已知点的样本数据,来构建一个连续的表面函数。这个函数可以对离散的点做出预测,从而形成一个整个区域的连续表面。在使用Python克里金插值时,需要先选择合适的插值模型,常用的有线性插值、简单克里金和普通克里金。 Python克里金插值的基本步骤包括:数据探索、空间插值模型的选择、插值参数的设置和插值结果的评价。在数据探索中,我们需要理解变量之间的关系和趋势,确定全局变量、区域变量以及空间自相关性等。然后,选择合适的插值模型,并设置相关参数。最后,使用交叉验证和误差分析来评估插值结果的准确性和精度。 python克里金插值提供了一种方便、快速且准确的方法来处理离散的空间数据,并生成连续表面。这种方法可用于许多领域,包括地质、地形和气象等的空间预测和分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值