는, 좌표, 그리고 spTransform
기능. 다른 것들 사이. 데이터 프레임으로 d
들어
:
> d
Longitude Latitude zone
1 233243 6571770 33
2 262706 6653520 33
3 195348 6573696 33
4 256880 6645020 33
5 260610 6654042 32
6 13799 6505840 33
되는 계획 : 기준 시스템 "좌표, 각리스트 요소는 공간 포인트 데이터를 프레임으로 만들고 상기 zone
ID가리스트로 분할 사용 + init = epsg : 326 "+"zone "(예 :"+ init = epsg : 32633 ", 영역 33), epsg : 4326 lat-long으로 변환 한 다음이 로트를 단일 공간 지점 데이터 프레임에 함께 묶습니다.
필요 :
> library(sp) ; library(raster)
, CRS를 좌표를 설정, 모든 부분 이상
> byzone = split(d,d$zone)
및 변환 :
존 ID로 목록을 작성
> zdll = lapply(byzone,
function(zd){
coordinates(zd)=~Longitude+Latitude
proj4string(zd)=paste0("+init=epsg:326",zd$zone[1])
spTransform(zd, CRS("+init=epsg:4326"))
})
을 지금 그들을 조인
> dll = do.call(rbind.SpatialPointsDataFrame, zdll)
dll
을 플로팅하면 이제 lat-long에 포인트가 표시됩니다. 좌표를 원하면 원래 좌표와 비교하려면 다음과 같이하십시오.
> cbind(d, coordinates(dll))
Longitude Latitude zone Longitude Latitude
5 233243 6571770 33 4.712098 59.95395
1 262706 6653520 33 10.327202 59.20086
2 195348 6573696 33 10.750120 59.95049
3 256880 6645020 33 9.663825 59.19259
4 260610 6654042 32 10.656096 59.87099
6 13799 6505840 33 6.663177 58.42136
예상되는 위치에 있습니까?
Ummm WGS84 *는 lat-long입니다. (사람들이 "WGS84"라고 말하면 일반적으로 EPSG : 4326 lat-long을 의미합니다). 실제 데이터를 볼 기회가 있습니까? 그렇지 않으면 우리는 참으로 ... 여기 – Spacedman
을 추측하고, 원시 데이터는 여기() 4952 (경도) 6,470,636 (위도) 32 (영역) 대상의 열 이름 데이터 예입니다 "길고 위도"이었다 형식은 다음과 같습니다. 13.665768 (경도) 59.739838 (위도) 이러한 형식은 모두 안정적이지 않습니다. P – andreas
WGS84가 아닌 UTM 좌표입니다. 질문을 편집하기 위해 몇 줄의 데이터를 붙여 넣을 수 있습니까? – Spacedman