问题描述
我有两个土壤湿度hdf图像。第一个是3Km分辨率,第二个是36km。使用相同的代码,第二个代码可以映射如下代码: soil moisture in 36Km resolution
第一个不显示土壤湿度信息: soil moisture in 3km resolution
我正在使用的代码如下
install.packages("hdf5")
BiocManager::install("hdf5")
devtools::install_github("hhoeflin/hdf5r")
library(devtools)
library(BiocManager)
library(rhdf5)
library(tidyr)
library(ggplot2)
mydata <- h5read("/Users/ss/Downloads/SMAP_L2_SM_A_01725_D_20150529T123629_R13080_001.h5","Soil_Moisture_Retrieval_Data")
str(mydata)
latitude<-mydata$latitude
longitude<-mydata$longitude
soil_moisture<-mydata$soil_moisture
soil_moisture[soil_moisture==-9999]<-NA
soil_moisture[soil_moisture>0.5]<-NA
soil_moisture[soil_moisture<0.02]<-NA
data<-cbind(latitude,longitude,soil_moisture)
data1<-data[complete.cases(data),]
soil_moisture = soil_moisture*4
data1<-as.data.frame(data1)
xlmax<-max(data1$longitude)
xlmin<-min(data1$longitude)
ylmax<-max(data1$latitude)
ylmin<-min(data1$latitude)
dataplot<-ggplot(data1)+
geom_tile(aes(x=longitude,y=latitude,fill=soil_moisture))+
xlab("Longitude (deg)") + # x-axis label
ylab("Latitude (deg)") +
geom_path(data = map_data("world"),aes(x = long,y = lat,group = group))+
scale_fill_distiller(palette = "YlOrRd",limits=c(0.02,0.5),name="SM") +
coord_fixed(xlim =c(floor(xlmin),ceiling(xlmax)),ylim=c(floor(ylmin),ceiling(ylmax)))
print(dataplot)
# ggsave("myplot.png",width=8,height=8,unit="cm",dpi=300)
解决方法
对于可能遇到相同问题的任何人,您都可以使用
dataplot<-ggplot(data1)+
geom_point(aes(x=longitude,y=latitude,fill=soil_moisture))+
xlab("Longitude (deg)") + # x-axis label
ylab("Latitude (deg)") +
geom_path(data = map_data("world"),aes(x = long,y = lat,group = group))+
scale_fill_distiller(palette = "YlOrRd",limits=c(0.02,0.5),name="SM") +
coord_fixed(xlim =c(floor(xlmin),ceiling(xlmax)),ylim=c(floor(ylmin),ceiling(ylmax)))
print(dataplot)
绘制3km分辨率的土壤湿度图。
用geom_point替换geom_tile。