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).
1 2 |
library(rgdal) kolej <- readOGR("D:/","kolej",stringsAsFactors = F) |
Wyświetlamy informację o warstwie kolej:
1 2 3 4 5 6 7 8 9 |
> 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:
1 |
uw_wgs84 = crs("+init=EPSG:4326") |
1 2 3 |
> 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:
1 |
kolej_wgs84 = spTransform(kolej,uw_wgs84) |
Wyświetlmy informacje o warstwie:
1 2 3 4 5 6 7 8 9 |
> 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.