আর-তে এসপি অবজেক্টগুলি প্রজেক্ট করা হচ্ছে


35

আমার কাছে বিভিন্ন সিআরএসে বেশিরভাগ শেফফিল রয়েছে (বেশিরভাগ ডাব্লুজিএস ৮৮ ল্যাট / দীর্ঘ) যা আমি একটি সাধারণ প্রজেকশনে রূপান্তর করতে চাই (সম্ভবত অ্যালবার্স ইক্যুয়াল এরিয়া কনিক, তবে আমার সমস্যাটি আরও ভাল হয়ে গেলে আমি অন্য প্রশ্নে বাছাইয়ের জন্য সাহায্য চাইতে পারি) -defined)।

আমি আরে স্থানিক পরিসংখ্যান স্টাফ করতে কয়েক মাস ব্যয় করেছি, তবে এটি 5 বছর আগে। আমার জীবনের জন্য, আমি মনে করতে পারি না কীভাবে কোনও spবস্তুর (যেমন SpatialPolygonsDataFrame) একটি প্রজেকশন থেকে অন্য প্রজেক্টে রূপান্তর করা যায়।

উদাহরণ কোড:

P4S.latlon <- CRS("+proj=longlat +datum=WGS84")
hrr.shp <- readShapePoly("HRR_Bdry"), verbose=TRUE, proj4string=P4S.latlon) 
# Shapefile available at 
#   http://www.dartmouthatlas.org/downloads/geography/hrr_bdry.zip 
#   but you must rename all the filenames to have the same 
#   capitalization for it to work in R

এখন আমার কাছে SpatialPolygonsDataFrameউপযুক্ত প্রজেকশন তথ্য রয়েছে তবে আমি এটি পছন্দসই অভিক্ষেত্রে রূপান্তর করতে চাই। আমি মনে করি এটির জন্য কিছুটা অনিচ্ছাকৃত-নামক কার্য রয়েছে, তবে এটি কী তা মনে করতে পারছি না।

মনে রাখবেন যে আমি কেবল সিআরএস পরিবর্তন করতে চাই না তবে সমন্বয়গুলি মেলে ("পুনরায় প্রজেক্ট", "রূপান্তর", ইত্যাদি) পরিবর্তন করতে চাই।

সম্পাদন করা

একে / এইচআই বাদ দিচ্ছেন যা এই শেফফিলের জন্য বিরক্তিকরভাবে মেক্সিকোয় স্থাপন করা হয়েছে:

library(taRifx.geo)
hrr.shp <- 
  subset(hrr.shp, !(grepl( "AK-" , hrr.shp@data$HRRCITY ) |
                                     grepl( "HI-" , hrr.shp@data$HRRCITY )) )
proj4string(hrr.shp) <- P4S.latlon

এখানে প্রোজ 4 প্যাকেজ ব্যবহার করে প্রজেক্ট করার পূর্ববর্তী উত্তর । যদিও স্পটালপলিজোনস ডেটা ফ্রেমের সাথে এটি ব্যবহার করে নি।
সিম্বামাঙ্গু

প্রকৃতপক্ষে দেখে মনে হচ্ছে প্রজ 4 স্থানিক বস্তুর সাথে কাজ করে না - তবে নীচের উত্তরটি দেখুন।
সিম্বামাঙ্গু

2
সর্বদা স্পেসিয়াল টাস্ক ভিউ রয়েছে: cran.r-project.org/web/views/Spatial.html এবং স্পেসিয়াল ডেটা সম্পর্কে আমার নোট [নির্লজ্জ প্লাগ]: math.lancs.ac.uk/~rowlings/Taching/UseR2012
স্পেসডম্যান

উত্তর:


44

আপনি spTransform()আরজিডিএলগুলিতে পদ্ধতিগুলি ব্যবহার করতে পারেন - আপনার উদাহরণ ব্যবহার করে আপনি ক্যানসাস (26978) এর জন্য NAD83 এ অবজেক্টটি রূপান্তর করতে পারেন:

library(rgdal)
library(maptools)

P4S.latlon <- CRS("+proj=longlat +datum=WGS84")
hrr.shp <- readShapePoly("HRR_Bdry", verbose=TRUE, proj4string=P4S.latlon)
plot(hrr.shp)

unprojected

hrr.shp.2 <- spTransform(hrr.shp, CRS("+init=epsg:26978"))
plot(hrr.shp.2)

অভিক্ষিপ্ত

নতুন প্রক্ষেপণে এটি সংরক্ষণ করতে:

writePolyShape(hrr.shp.2, "HRR_Bdry_NAD83")

সম্পাদনা : বা @ স্পেসডম্যানের পরামর্শ অনুসারে (যা সিআরএস তথ্যের সাহায্যে একটি .prj ফাইল লেখায়):

writeOGR(hrr.shp.2, dsn = getwd(), layer = "HRR_Bdry_NAD83", driver="ESRI Shapefile")

কোন সিআরএস থেকে প্রজেক্ট করতে হবে তা যদি নিশ্চিত না হয় তবে নিম্নলিখিত পোস্টটি দেখুন:

এবং যদি কোনও সিআরএস সংজ্ঞায়িত / নির্ধারণ করতে চায় যখন ডেটা না থাকে তবে উল্লেখ করুন:


10
নোট করুন যে পলি শ্যাপ। prj ফাইলটি লেখেন না! আপনি আরজিডাল থেকে রাইটওজিআর ব্যবহার করুন (এবং শেডফিলগুলি পড়তে রিডওজিআর ব্যবহার করুন) আপনি যদি আরে আপনার স্থানীয় স্থানের সিআরএস সেট করতে .prj ফাইলটি লিখতে এবং পড়তে চান তবে!
স্পেসডম্যান

অনেক ভাল (সেই অনুযায়ী সম্পাদিত) - ধন্যবাদ; এটি বুঝতে পারে না যে এটি .PP ফাইল তৈরি করে! ওয়েল ওয়েল, আপনার পৃষ্ঠায় অসাধারণ চিট শীট।
সিম্বামাঙ্গু

1
এটি আশ্চর্যজনক যে মেক্সিকোয় প্রক্ষেপণটি আলাস্কা এবং হাওয়াই ইনসেটগুলির উপস্থিতিকে কীভাবে প্রভাবিত করে :-)।
whuber

@ হুবার - হুম, হ্যাঁ ... কেউ আমার পোস্টটি সম্পাদনা করেছেন যার মধ্যে প্রকৃত মানচিত্র ছিল না বরং এটি অনুপযুক্ত পোকামাকড় দেখায় ... তারা সেখানে আছে তা দেখার জন্য নিজেকে কখনও পরিকল্পনা করেননি।
সিম্বামাঙ্গু

@ সিম্বামাঙ্গু দুঃখিত, আমি গ্রাফগুলি যুক্ত করতে সহায়ক হওয়ার চেষ্টা করার পরে এই .shp ফাইলটি ইনসেটগুলিকে অনুপযুক্তভাবে অন্তর্ভুক্ত করেছিল!
এরি বি ফ্রেডম্যান

8

SF-প্যাকেজের সূচনার পর থেকে (vignettes, কটাক্ষপাত আছে sf1 , sf2 , sf3 , sf4 এবং মাইগ্রেশন নির্দেশিকা এখানে আপনি ব্যবহার করতে পারেন) st_transform()আপনার ভেক্টর ডেটা পুনরায় reprojecting জন্য:

require(sf)

hrr_sf = st_read('HRR_Bdry.shp', stringsAsFactors = FALSE,
    crs = 4326) # has +proj=longlat +datum=WGS84
plot(hrr_sf)

hrr_sf2 = st_transform(hrr_sf, "+init=epsg:26978") # 1st option sp::CRS() not working/ needed
hrr_sf2 = st_transform(hrr_sf, 26978) # 2nd option - EPSG code as an integer
plot(hrr_sf2)

# don't think about doing this:
hrr_sf3 = st_read('HRR_Bdry.shp', stringsAsFactors = FALSE,
    crs = 26978)

# Output layer
st_write(hrr_sf2, dsn = getwd(), layer = "HRR_Bdry_NAD83", driver = "ESRI Shapefile")

এসএফ ভবিষ্যতে এসপি প্রতিস্থাপন করবে এবং এর সরলতা এবং গতির কারণে এসপি এর তুলনায় বেশ কয়েকটি সুবিধা রয়েছে।

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