데이터를 NAs
과 혼동하지 않도록 해수면 온도 데이터를 플롯하고 토지의 컬러 이미지를 추가하려고합니다. 그렇게하기 위해 여러 가지 방법을 시도했지만 아래 이미지에서 볼 수 있듯이 맵은 데이터와 관련하여 올바르게 정렬되지 않습니다. 정확하게 래스터 이미지에지도를 추가하는 방법
https://www.dropbox.com/s/e8pwgmnhvw4s0nf/sst.nc4?dl=0 내가 지금까지 개발 한 코드가;
library(ncdf4)
library(raster)
library(mapdata)
library(mapproj)
library(rgeos)
library(ggplot2)
비아 ncdf4, rasterToPoints, map_data 및 ggplot2
eight = nc_open("Downloads/sst.nc4")
sst = ncvar_get(eight, "sst")
sst = raster(sst)
sst = t(flip(sst, 1)) # have to orient the data properly
# extract the dimensions and set the extent
lat.min = min(eight$dim$lat$vals)
lat.max = max(eight$dim$lat$vals)
lon.min = min(eight$dim$lon$vals)
lon.max = max(eight$dim$lon$vals)
sst = setExtent(sst, ext = c(lon.min, lon.max, lat.min, lat.max))
# provide proper projection
crs(sst) = "+init=epsg:4326"
# convert raster to points
sst.p <- rasterToPoints(sst)
df <- data.frame(sst.p)
colnames(df) <- c("Longitude", "Latitude", "sst")
usa = map_data("usa")
ggplot(data=df, aes(y=Latitude, x=Longitude)) +
geom_raster(aes(fill=sst)) +
theme_bw() +
coord_equal() +
scale_fill_gradient("SST (Celsius)", limits=c(0,35)) +
geom_polygon(data = usa, aes(x=long, y = lat, group = group)) +
theme(axis.title.x = element_text(size=16),
axis.title.y = element_text(size=16, angle=90),
axis.text.x = element_text(size=14),
axis.text.y = element_text(size=14),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
legend.position = "right",
legend.key = element_blank()
)
비아 래스터가 maptools 데이터, SP 변형 및베이스
#read in the data
sst = raster("Downloads/sst.nc4", varname = "sst", stopIfNotEqualSpaced=FALSE)
# get world map data
data("wrld_simpl", package="maptools")
## Crop to the desired extent, then plot
newext <- c(lon.min, lon.max, lat.min, lat.max)
out <- crop(wrld_simpl, newext)
#transform to proper CRS
out = spTransform(out, "+init=epsg:4326")
#plot
plot(out, col="khaki", bg="azure2")
plot(sst, add = T)
년 - 투사가 'EPSG:4326
- 여기가 나는 또한 mapproj
으로 map()
기능을 사용하려고 한 sst.nc4
출력 투사
<crs>PROJCS["Mercator_1SP/World Geodetic System 1984",
GEOGCS["World Geodetic System 1984",
DATUM["World Geodetic System 1984",
SPHEROID["WGS 84", 6378135.0, 298.257223563, AUTHORITY["EPSG","7030"]],
AUTHORITY["EPSG","6326"]],
PRIMEM["Greenwich", 0.0, AUTHORITY["EPSG","8901"]],
UNIT["degree", 0.017453292519943295],
AXIS["Geodetic longitude", EAST],
AXIS["Geodetic latitude", NORTH]],
PROJECTION["Mercator_1SP"],
PARAMETER["latitude_of_origin", 0.0],
PARAMETER["central_meridian", 0.0],
PARAMETER["scale_factor", 1.0],
PARAMETER["false_easting", 0.0],
PARAMETER["false_northing", 0.0],
UNIT["m", 1.0],
AXIS["Easting", EAST],
AXIS["Northing", NORTH]]</crs>
를 지시하는 XML 조각입니다 s projection
인수이지만 옵션으로 의사 - mercator 투영이없는 것 같습니다.
가 제대로 ArcMap의 또는 QGIS에서받을 수를 용도에 충분한 해상도를 가진 RasterLayer을 설정하고, 래스터? 투영 문제가있는 것 같습니다. 아쿠아/MODIS에서 데이터를 가져오고 있습니까? – Masoud
@Masoud arcmap 또는 Qgis를 시도하지 않았습니다. 이 패키지에 대한 자습서를 알고 있습니까? 이것은 AQUA/MODIS 데이터입니다. – James
R 패키지가 아닙니다. 그들은 gis 소프트웨어입니다. NASA에는 panoply (또는 유사한 이름)라는 소프트웨어가 있습니다. 그것을 설치하고 그것에 netcdf 파일을로드하십시오. 그게 효과가 있다면 원하는 출력을 얻기 위해 R에서베이스 맵의 투영을 변경해야합니다. – Masoud