空的区县匹配最邻近的点

**注意:**地图创建要使用标准地图,那个有2901个区县,而county0907只有2900个区县。

步骤:
1、百度——查找距离最近的点
或者链接:传送门
2、打开arcgis导入空的区县的中心点以及包含中国的大的点文件,如下图
在这里插入图片描述
zxd:区县的中心点文件
111Export_Output:nc提取数值后展示的点
3、分析工具——领域分析——生成近邻表
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
其中NEAR_FID就是离空的区县中心点最近的点了,如何查看
在这里插入图片描述
如图,86671就是朝阳区,离东城区和西城区最近的点

注意:
(1)输入要素是中心点;邻近要素是大的点文件(nc提取展示的点),选择近查找最近的要素,选择反的话就是大的文件了,注意
(2)注意的是这儿坐标系要一致,如何保持一致,只需要图层右击——导出数据——导出数据框,这样的话坐标系就保持一致了,如图
在这里插入图片描述
4、找到最近的点后,然后就是进行连接了,此处连接步骤是:
(1)中心点(zxd)、查找的最近距离的csv(jin1263)都新建一个字段,记得要FID+1,这一步是为了获得FID_county(空的区县的)。在zxd上通过FID(FID+1字段)连接jin1263,此时,就有了区县信息以及FID_county(用于分组合区县,之前不缺的区县的合并分组字段)
ps:其实也可以直接近领分析,这样就直接区县和市等几个字段和NEAR_FID匹配在一块了,就是没有FID_county(空的区县的)
在这里插入图片描述
然后打开属性表把该文件导出为csv数据(如kong_county.csv)。
注意: 这一步非常重要,因为有的区县最近点是一个(如东城区、西城区最近点是86671),此时连接数据的时候,只会连接第一个区县(如东城区),这样的点不是很多也就会遗漏20多个。所以此时要用代码进行查找匹配,在R中用merge函数来做这个匹配查找NEAR_FID 所对应的pm2.5的值

5、merge()函数 匹配空的区县所对应的PM2.5值(nc中提取的值)
步骤:
(1)首先新建一个NEAR_FID(要和提取的PM2.5一样多),回头在代码中用于和PM2.5值合并做后续merge匹配合并
建立的NEAR_FID
这个p就是PM2.5的值(nc中提取的经纬度所对应的值)
在这里插入图片描述
在给定一个中心点所对应的缺的区县的NEAR_FID ,在这里我同时给出了空区县的FID_county,
在这里插入图片描述
下面就是敲代码运行了,如下:

代码:

fun <- function(input,output){
  
  bb <-  dir(input)
  cd <-  paste(input,bb,sep = "")
  
  NEAR_FID1 <- read.csv("路径/NEAR_FID.csv",header = T)
  zxd_NEAR_FID_county <- read.csv("路径/zxd_NEAR_FID_model.csv",header = T)
  
  for (i in 1:length(cd)){
    #先读取NEAR_FID并合并PM2.5值
    pm_25 <- read.csv(cd[i],header = T)
    
    #合并NEAR_FID和pm2.5
    NEAR_FID1_pm25 <- cbind(NEAR_FID1,pm_25)
    
    
    #使用merge函数合并并提取空的区县所对应的PM2.5值
    merge_result <- merge(zxd_NEAR_FID_county,NEAR_FID1_pm25,all = F)
    
    #修改文件名
    dd <- substring(cd[i],nchar(cd[i])-13)
    
    filename <- paste(output,dd,sep="")
    write.csv(merge_result,filename,row.names = F)
    
    print(i)
  }
}

通过上述代码就可以跑出来198个空的区县所对应的PM2.5值了,结果见下图
在这里插入图片描述
在下面就是这些小时值文件跑到日均上面,跑完日均后就可以将2703个区县和198个区县合并并排序输出了。

合并并排序的代码:

fun <- function(input1,input2,output){
  bb <- dir(input1)
  cd <- paste(input1,bb,sep="")
  cc <- dir(input2)
  cdd <- paste(input2,cc,sep = "")
  
  for (i in 1:length(cd)){
    Nokong_county <- read.csv(cd[i],header = T)
    kong_county <- read.csv(cdd[i],header = T)
    
    #合并成2901个区县
    hb <- rbind(Nokong_county,kong_county)
    
    #将合并后的2901个区县按照FID_county排序输出
    hb_order <- hb[order(hb$FID_county),]
    
    dd <- substring(cd[i],nchar(cd[i])-11)
    #写入文件
    filename = paste(output,dd,sep="")
    write.csv(hb_order,filename,row.names = F)
    print(i)
  }
  print("successful!")
}

这样的话一个空气污染数据集就做完了。以后也可以这样来提取,但是还是直接是R里面那个定义坐标系的代码跑效果最好。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

初于青丝mc终于白发

老爷们,觉得好的给个打赏呗!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值