Saya memiliki sejumlah shapefile di CRS yang berbeda (kebanyakan WGS84 lat / lon) yang ingin saya ubah menjadi proyeksi umum (kemungkinan Albers Equal Area Conic, tetapi saya dapat meminta bantuan dalam memilih pertanyaan lain setelah masalah saya membaik -defined).
Saya menghabiskan beberapa bulan melakukan hal statistik spasial di R, tapi itu 5 tahun yang lalu. Untuk kehidupan saya, saya tidak ingat bagaimana mengubah suatu sp
objek (misalnya SpatialPolygonsDataFrame
) dari satu proyeksi ke proyeksi lainnya.
Kode contoh:
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
Sekarang saya memiliki SpatialPolygonsDataFrame
informasi proyeksi yang sesuai, tetapi saya ingin mengubahnya menjadi proyeksi yang diinginkan. Saya ingat ada fungsi yang agak tidak sengaja dinamai untuk ini, tapi saya tidak ingat apa itu.
Perhatikan bahwa saya tidak ingin hanya mengubah CRS tetapi untuk mengubah koordinat yang cocok ("proyeksi ulang", "transformasi", dll.).
Edit
Tidak termasuk AK / HI yang ditempatkan secara mengganggu di Meksiko untuk shapefile ini:
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
sumber
Jawaban:
Anda dapat menggunakan
spTransform()
metode dalam rgdal - menggunakan contoh Anda, Anda dapat mengubah objek ke NAD83 untuk Kansas (26978):Untuk menyimpannya dalam proyeksi baru:
EDIT : Atau, sesuai saran @ Spacedman (yang menulis file .prj dengan info CRS):
Jika seseorang tidak yakin dari CRS mana untuk memproyeksikan, lihat posting berikut:
Dan jika seseorang ingin mendefinisikan / menetapkan CRS ketika data tidak memilikinya, lihat:
sumber
Sejak diperkenalkannya paket sf (lihat sketsa sf1 , sf2 , sf3 , sf4 dan panduan migrasi di sini ), Anda dapat menggunakan
st_transform()
untuk memproyeksi ulang data vektor Anda:sf akan menggantikan sp di masa depan dan memiliki kesederhanaan dan kecepatan karena beberapa keunggulan dibandingkan sp.
sumber