Reprojekcja warstwy wektorowej
Ostatnio pokazaliśmy jak nadać układ współrzędnych wczytanej warstwie wektorowej. Co w przypadku, gdy chcemy przeliczyć współrzędne obiektów z jednego układu do drugiego? Możemy do tego wykorzystać narzędzie spTransform z biblioteki sp (biblioteka sp ładuje się razem z rgdal).
library(rgdal) kolej <- readOGR("D:/","kolej",stringsAsFactors = F)
Wyświetlamy informację o warstwie kolej:
> kolej class : SpatialLinesDataFrame features : 213 extent : 638667.5, 678777.7, 490053.6, 519583.1 (xmin, xmax, ymin, ymax) coord. ref. : +proj=tmerc +lat_0=0 +lon_0=19 +k=0.9993 +x_0=500000 +y_0=-5300000 +ellps=GRS80 +units=m +no_defs variables : 4 names : osm_id, code, fclass, name min values : 120785643, 6101, narrow_gauge, NA max values : 460572267, 6106, rail, NA
Warstwa jest w układzie PUWG 1992. Przetransformujmy współrzędne obiektów do układu geograficznego WGS84 (EPSG:4326).
Najpierw zapiszmy parametry układu do zmiennej uw_wgs84:
uw_wgs84 = crs("+init=EPSG:4326")
> uw_wgs84 CRS arguments: +init=EPSG:4326 +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0
Korzystając z funkcji spTransform przeliczmy wszystkie współrzędne warstwy kolej do nowego układu:
kolej_wgs84 = spTransform(kolej,uw_wgs84)
Wyświetlmy informacje o warstwie:
> kolej_wgs84 class : SpatialLinesDataFrame features : 213 extent : 21.04023, 21.6354, 52.25615, 52.51271 (xmin, xmax, ymin, ymax) coord. ref. : +init=EPSG:4326 +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0 variables : 4 names : osm_id, code, fclass, name min values : 120785643, 6101, narrow_gauge, NA max values : 460572267, 6106, rail, NA
Obiekty zostały przetransformowane do nowego układu.