আমি উত্তর আমেরিকার দেশের সীমানাগুলি একটি রাস্টার চিত্রের উপর দিয়ে কিছু পরিবর্তনশীল এবং তারপরে আর এর সাহায্যে প্লটটির শীর্ষে ওভারলে সংশ্লেষ চিত্রিত করতে চাই base আমি বেস গ্রাফিক্স এবং ল্যাটিস ব্যবহার করে এটি সফল করতে পেরেছি, তবে মনে হচ্ছে প্লট করার প্রক্রিয়াটি অনেক ধীর! আমি এখনও ggplot2 এ এটি করিনি, তবে আমি সন্দেহ করি যে এটি গতির দিক থেকে আরও ভাল হবে।
গ্রাইব ফাইল থেকে নেট নেট সিডিএফ ফাইলের ডেটা আমার কাছে রয়েছে । আপাতত, আমি কানাডা, মার্কিন যুক্তরাষ্ট্র এবং মেক্সিকোতে দেশের সীমানা ডাউনলোড করেছি, যা জিএডিএম থেকে আরডিটা ফাইলগুলিতে পাওয়া যায় যা স্পেশিয়ালপলিজোনডাটা ফ্রেম অবজেক্ট হিসাবে আর-তে পড়ে।
এখানে কিছু কোড রয়েছে:
# Load packages
library(raster)
#library(ncdf) # If you cannot install ncdf4
library(ncdf4)
# Read in the file, get the 13th layer
# fn <- 'path_to_file'
r <- raster(fn, band=13)
# Set the projection and extent
p4 <- "+proj=lcc +lat_1=50.0 +lat_2=50.0 +units=km +x_0=32.46341 +y_0=32.46341 +lon_0=-107 +lat_0=1.0"
projection(r) <- CRS(p4)
extent(r) <- c(-5648.71, 5680.72, 1481.40, 10430.62)
# Get the country borders
# This will download the RData files to your working directory
can<-getData('GADM', country="CAN", level=1)
usa<-getData('GADM', country="USA", level=1)
mex<-getData('GADM', country="MEX", level=1)
# Project to model grid
can_p <- spTransform(can, CRS(p4))
usa_p <- spTransform(usa, CRS(p4))
mex_p <- spTransform(mex, CRS(p4))
### USING BASE GRAPHICS
par(mar=c(0,0,0,0))
# Plot the raster
bins <- 100
plot(r, axes=FALSE, box=FALSE, legend=FALSE,
col=rev( rainbow(bins,start=0,end=1) ),
breaks=seq(4500,6000,length.out=bins))
plot(r, legend.only=TRUE, col=rev( rainbow(bins,start=0,end=1)),
legend.width=0.5, legend.shrink=0.75,
breaks=seq(4500,6000,length.out=bins),
axis.args=list(at=seq(4500,6000,length.out=11),
labels=seq(4500,6000,length.out=11),
cex.axis=0.5),
legend.args=list(text='Height (m)', side=4, font=2,
line=2, cex=0.8))
# Plot the borders
# These are so slow!!
plot(can_p, add=TRUE, border='white', lwd=2)
plot(usa_p, add=TRUE, border='white', lwd=2)
plot(mex_p, add=TRUE, border='white', lwd=2)
# Add the contours
contour(r, add=TRUE, nlevel=5)
### USING LATTICE
library(rasterVis)
# Some settings for our themes
myTheme <- RdBuTheme()
myTheme$axis.line$col<-"transparent"
myTheme$add.line$alpha <- 1
myTheme2 <- myTheme
myTheme2$regions$col <- 'transparent'
myTheme2$add.text$cex <- 0.7
myTheme2$add.line$lwd <- 1
myTheme2$add.line$alpha <- 0.8
# Get JUST the contour lines
contours <- contourplot(r, margin=FALSE, scales=list(draw=FALSE),
par.settings=myTheme2, pretty=TRUE, key=NULL, cuts=5,
labels=TRUE)
# Plot the colour
levels <- levelplot(r, contour=FALSE, margin=FALSE, scales=list(draw=FALSE),
par.settings = myTheme, cuts=100)
# Plot!
levels +
layer(sp.polygons(can_p, col='green', lwd=2)) +
layer(sp.polygons(usa_p, col='green', lwd=2)) +
layer(sp.polygons(mex_p, col='green', lwd=2)) +
contours
বহুভুজগুলির চক্রান্ত দ্রুত করার কোনও উপায় আছে কি? যে সিস্টেমে আমি কাজ করছি তাতে প্লট করা বেশ কয়েক মিনিট সময় নেয়। অবশেষে আমি একটি ফাংশন করতে চাই যা পরিদর্শন করার জন্য এই প্লটগুলির একটি সংখ্যা সহজেই উত্পন্ন করবে এবং আমি মনে করি আমি এই মানচিত্রগুলির অনেকগুলি প্লট করব, তাই আমি প্লটের গতি বাড়াতে চাই!
ধন্যবাদ!