конвертировать UTM в lat / long или наоборот - PullRequest
0 голосов
/ 26 сентября 2018

Я загрузил данные высот для Новой Зеландии в виде файла TIF, который сопровождается «мировым файлом» (tfw),

80.000000000000000
0.000000000000000
0.000000000000000
-80.000000000000000
1062571.750000000000000
6282711.000000000000000

Насколько я понимаю из Википедии, первоеи третьи числа обозначают масштаб (в пикселях / км), а последние два определяют местоположение в координатах UTM (если я правильно понимаю).

Теперь я хотел бы выровнять эти растровые данные с другим набором данныхсодержащий путь, прослеженный от координат GPS, который дает мне формат широты / долготы

       X         Y
1 174.7771 -41.29805
2 174.7771 -41.29815
3 174.7772 -41.29819
4 174.7772 -41.29824
5 174.7772 -41.29827
6 174.7772 -41.29836
...

Я пробовал следующее для преобразования из UTM в широты / долготы, но результаты кажутся совершенно неверными.Чего мне не хватает?

library(rgdal)
utm <- SpatialPoints(cbind(1062571.75, -6282711.0), 
                       proj4string=CRS("+proj=utm"))
spTransform(utm, CRS("+proj=nzmg"))

class       : SpatialPoints 
features    : 1 
extent      : 1754874408, 1754874408, 5271325323, 5271325323  (xmin, xmax, ymin, ymax)
coord. ref. : +proj=nzmg +ellps=WGS84 

Редактировать: следуя предложенному ниже предложению, я получил следующие данные из файла tif,

> library(raster)
> r <- raster("nztm.tif")
> r
class       : RasterLayer 
dimensions  : 19712, 13261, 261400832  (nrow, ncol, ncell)
resolution  : 80, 80  (x, y)
extent      : 1062532, 2123412, 4705791, 6282751  (xmin, xmax, ymin, ymax)
coord. ref. : +proj=tmerc +lat_0=0 +lon_0=173 +k=0.9996 +x_0=1600000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs 
data source : nztm.tif 
names       : nztm 
values      : -32768, 32767  (min, max)

> crs(r)
CRS arguments:
 +proj=tmerc +lat_0=0 +lon_0=173 +k=0.9996 +x_0=1600000 +y_0=10000000
+ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs

1 Ответ

0 голосов
/ 26 сентября 2018

Сначала проверьте, поставляется ли файл с системой координат (возможно, в файле .prj?). В R вы можете сделать:

library(raster)
r <- raster("elevation.tif")
r
crs(r)

Если это NA, и вы не можете найти какую-либо ссылкув других местах это может быть очень трудно понять.

Может случиться так, что crs повышения - это "UTM", но это совсем не гарантируется.Если это UTM, вам нужно знать, какая из 60 зон UTM, а затем могут быть некоторые другие параметры.На самом деле очень маловероятно, что кто-то выберет UTM для Новой Зеландии, поскольку страна пересекает несколько зон UTM.Вы можете попробовать это:

library(rgdal)
utm <- SpatialPoints(cbind(1062571.75, -6282711.0), 
                       proj4string=CRS("+proj=utm +zone=59 +datume=WGS84 "))
spTransform(utm, CRS("+proj=longlat +datum=WGS84"))
#SpatialPoints:
#     coords.x1 coords.x2
#[1,] -179.8818 -56.35255

Не , что далеко от Новой Зеландии.

"nzmg" или другие стандартные crs для NZ были бы более правдоподобными

utm <- SpatialPoints(cbind(1062571.75, -6282711.0), 
                       proj4string=CRS("+proj=nzmg +datum=WGS84"))
spTransform(utm, CRS("+proj=longlat +datum=WGS84"))

# -178.9791  -71.8877

Еще дальше, увы, почти Антарктида

...