আর জিজিম্যাপ এবং জিজিপ্লট 2 প্যাকেজগুলির সাথে রবিনসন প্রক্ষেপণ নির্দিষ্ট করতে প্রজ 4 ব্যবহার করবেন?


13

আমি এই মানচিত্রটি রবিনসন অভিক্ষেপে প্রজেক্ট করতে চাই:

library(ggmap)
world <- map_data("world")
ggplot() + geom_path(data = world, 
                              aes(long, lat, group = group))

এখানে চিত্র বর্ণনা লিখুন

এবং আমি "রবিনসন" - (আমার আগের প্রশ্নের উত্তর থেকে পরামর্শ অনুসরণ করে) এর অভিক্ষেপ পরিবর্তন করতে চাই: বিশ্বব্যাপী জলবায়ু অঞ্চলের মানচিত্র উইকিপিডিয়া থেকে কোন প্রজেকশন ব্যবহার করে?

এই অভিক্ষেপের একটি ডিফল্ট বাস্তবায়ন পেতে আমার বেশ কষ্ট হয়েছিল, আমি proj4লাইব্রেরিটি ব্যবহারের জন্য নিম্নলিখিত কাজগুলি করেছি:

library(proj4)
robinson <- project(cbind(world$long, world$lat), 
                    proj = "+proj=robin +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")

আমি বেশ কয়েকটি পদ্ধতির চেষ্টা করেছি যার মধ্যে রয়েছে:

# using ggmap::get.map()
get_map("world", projection = mapprojection(robinson))
# using ggplot2::coord_map
coord_map(projection = robinson)
# and sp::coordinates:
library(sp)
coordinates(world) <- ~ lat + long
gridded(world) <- TRUE # returns error
proj4string(world) <- CRS(robinson)

কিন্তু এই কাজ কিছুই। এটি কি টাইপো, বা আমি এই পদ্ধতি সম্পর্কে মৌলিক কিছু অনুপস্থিত?

উত্তর:


11

Gpplot2 এর মধ্যে থেকে রবিনসনকে হ্যান্ডেল করা কঠিন হতে পারে।

আপনার অনুসন্ধান করা AFAIK ggplot2ord_map সমাধান ম্যাপ্রোজেক্ট প্যাকেজে সংজ্ঞায়িত হিসাবে অভিক্ষেপ তথ্য ব্যবহার করবে । সেখানে কয়েকটি উপলব্ধ আছে তবে দুর্ভাগ্যক্রমে রবিনসন তাদের মধ্যে একটিও নন এবং আমি নিশ্চিত না যে আপনি নিজের যুক্ত করতে পারেন কিনা।

এছাড়াও - আপনি যে worldডেটা ব্যবহার করছেন (জিগম্যাপ প্যাকেজ থেকে আমি অনুমান করি) ইতিমধ্যে একটি ডেটা ফ্রেম শ্রেণি। সুতরাং আপনি এটিকে সহজে (?) পুনঃপ্রক্রিয়া করতে সক্ষম হবেন না।

আমার পরামর্শটি স্ক্র্যাচ থেকে শেপ ফাইল ব্যবহার করে শুরু করা হবে এবং ভৌগলিক ডেটাগুলিকে জিজিপ্লাট 2 এ যাওয়ার আগে হ্যান্ডেল করবে। প্রাকৃতিক পৃথিবীর ডেটা ব্যবহার করে আমার অভিশাপ সমাধানটি এই পদক্ষেপগুলি অনুসরণ করবে:

library(ggplot2)
library(grid)

# get data
download.file(url="http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/110m/cultural/ne_110m_admin_0_countries.zip", "ne_110m_admin_0_countries.zip", "auto")
unzip("ne_110m_admin_0_countries.zip")
file.remove("ne_110m_admin_0_countries.zip")

# read shape file using rgdal library
library(rgdal)
ogrInfo(".", "ne_110m_admin_0_countries")
world <- readOGR(".", "ne_110m_admin_0_countries")
summary(world)  
plot(world, col = "grey")  

readOGR প্রজ ফাইল থেকে প্রজেকশন সম্পর্কিত তথ্য ব্যবহার করে এবং সংক্ষিপ্তসার এখন আমাকে বলে যে এখন বিশ্ব

Object of class SpatialPolygonsDataFrame
Coordinates:
   min       max
x -180 180.00000
y  -90  83.64513
Is projected: FALSE 
proj4string :
[+proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0]

এবং দেখতে দেখতে:

এখানে চিত্র বর্ণনা লিখুন

রবিনসনে রূপান্তর করা যাক:

worldRobinson <- spTransform(world, CRS("+proj=robin +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"))
summary(worldRobinson)  
plot(worldRobinson, col = "grey")  

সংক্ষিপ্তসারটি এখন:

Object of class SpatialPolygonsDataFrame
Coordinates:
        min      max
x -16810131 16810131
y  -8625154  8343004
Is projected: TRUE 
proj4string :
[+proj=robin +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs +towgs84=0,0,0]

এবং এটি দেখতে দেখতে:

এখানে চিত্র বর্ণনা লিখুন

এখান থেকে আপনার জিজিপ্লট (চালুর প্রয়োজন হতে পারে) দিয়ে চালিয়ে যেতে সক্ষম হওয়া উচিত।


7

আপনি এখন সরাসরি ggaltপ্যাকেজটির মাধ্যমে এটি করতে পারেন :

library(ggplot2)
library(ggalt)
library(ggthemes)

wrld <- map_data("world")

gg <- ggplot()
gg <- gg + geom_map(data=wrld, map=wrld,
                    aes(x=long, y=lat, map_id=region),
                    color="#2b2b2b", size=0.15, fill=NA)
gg <- gg + coord_proj("+proj=robin +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
gg <- gg + theme_map()
gg

এখানে চিত্র বর্ণনা লিখুন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.