我(試圖)在一對地理點上執行操作。我在WGS84中有我的座標,我需要讓他們參加Lambert 2 Extended CRS(LIIE)。我正在嘗試使用rgdal
。在R中的兩個CRS之間切換(使用rgdal)
下面是我在做什麼:
library("rgdal")
library("sp")
# Loading CRS
WGS84<-"+proj=longlat +ellps=WGS84 +towgs84=0,0,0,-0,-0,-0,0 +no_defs"
LIIE<-"+proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=0 +k_0=0.99987742 +x_0=600000 +y_0=2200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs"
# Loading the pairs of points
matrix<-read.table(file="file_with_coordinates.csv", header=TRUE, sep=";", stringsAsFactors = F)
的matrix
列如下:origin_id
,destination_id
,or_lon
,or_lat
,de_lon
,de_lat
。顯然,只有最後4列需要從WGS84轉換爲LIIE。
我能夠通過這樣變換座標:
matrix_sp<-SpatialPoints(coords = od_matrix[,c("de_lon","de_lat","or_lon","or_lat")],proj4string = CRS(WGS84))
matrix_sp_liie<-spTransform(od_matrix_sp, CRSobj = CRS(LIIE))
matrix_liie<-data.frame(matrix_sp_liie)
但是,我因此失去了出發地和目的地的ID ...(而且什麼事,可以讓我去,我沒有合併在一起matrix_liie
與origin/destination ids
在matrix_sp
)。我試過了(它基本上是相同的代碼,但destination_id
和oririgin_id
包含在第一行),但我真的無法得到一些有趣的東西(我得到一個Error in .local(obj, ...) : cannot derive coordinates from non-numeric matrix
錯誤)。
od_matrix_sp<-SpatialPoints(coords = od_matrix[,c("destination_id","oririgin_id","de_lon","de_lat","or_lon","or_lat")],proj4string = CRS(WGS84))
matrix_sp_liie<-spTransform(od_matrix_sp, CRSobj = CRS(LIIE))
matrix_liie<-data.frame(matrix_sp_liie)
有關我如何實現這一點的任何想法?
謝謝。從CSV
樣品:
origin_id destination_id or_lon or_lat de_lon de_lat
123_a 005 3.88 45.6 1.56 46.7
123_b 006 5.10 41.1 2.4 42.6
你可以給你的csv文件中的幾行代碼示例嗎?因爲我懷疑答案只是創建一個'SpatialLinesDataFrame'或者一個'SpatialPointsDataFrame'作爲行數的兩倍的特徵,並且使用ID值來鏈接它們...... – Spacedman
啊,是的,你是對的我沒有,我想這樣做,我編輯了我的答案。如果你想發佈這個作爲答案,我會撤回我的 – Victorp
謝謝你的評論。我從CSV中添加了一個示例。我不確定你的意思是「行數爲特徵數的兩倍,並使用ID值來鏈接它們」? –