سؤال

أحاول استخدام wrld_simpl من حزمة Maptools لرسم جزء من خريطة العالم باستخدام شبكة خطوط الطول/خطوط العرض.

على سبيل المثال، لدي ملف netCDF يتضمن خطوط الطول والعرض، وأقوم بإنشاء مصفوفة تحتوي على جميع النقاط التي يمكنني الحصول عليها على الشبكة:

lat <- get.var.ncdf(nc,"lat")
long <- get.var.ncdf(nc,"lon")
pts <- SpatialPoints(expand.grid(long,lat), CRS(proj4string(wrld_simpl)))

الآن أريد رسم البلدان التي توجد إحداثياتها على شبكتي.

لا أعرف كيفية التعامل مع سمات wrld_simpl!

هل كانت مفيدة؟

المحلول

هل نظرت إلى maps mapproject حزم؟يمكنك رسم أي خط ساحلي بسرعة كبيرة بالدقة المطلوبة ويأتي مزودًا بإسقاطات وشبكة.يمكنك تطبيق الإسقاطات على أحد الكائنات الخاصة بك (expand.grid(long,lat)).مثال في القارة القطبية الجنوبية:

library("mapproj")
m <- map( "world", "Antarctica", plot=FALSE)
map("world", "Antarctica", proj="conic", param=-90, fill=TRUE, col="gray")
map.grid(m, nx=4, ny=6, col="black")

front.lim <- data.frame(x=seq(-180, 180, length.out=1000),
                        y=rep(-62, 1000))
front.lim <- mapproject(front.lim$x, front.lim$y, projection="conic", parameters=-90)
lines(front.lim$x, front.lim$y, col="red", lwd=2)

إذا كنت قد قمت بالفعل برسم مصفوفة ncdf، فيمكنك ببساطة إضافة map(add=TRUE).سوف يقرأ حدود x و y ويرسم الحدود في هذه المنطقة.

plot(c(-10, 45), c(30, 60), type="n", xlab="", ylab="") # image(ncdf)
map(add=TRUE, fill=TRUE, col="gray")
abline(v=seq(-10, 45, 7.5), lty=2)
abline(h=seq(-30, 60, 7.5), lty=2)
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top