【发布时间】:2021-10-11 12:00:24
【问题描述】:
我有一个SpatialPolygonsDataFrame 对象,其多边形坐标以米 (UTM) 为单位。我想将坐标重新缩放为公里(将坐标除以 1000)。 sp 包中是否有可以做到这一点的函数?
【问题讨论】:
我有一个SpatialPolygonsDataFrame 对象,其多边形坐标以米 (UTM) 为单位。我想将坐标重新缩放为公里(将坐标除以 1000)。 sp 包中是否有可以做到这一点的函数?
【问题讨论】:
我的解决方法,其中 TiogaHabitatBoundary 是多边形的 shapefile。 https://mhallwor.github.io/_pages/basics_SpatialPolygons 是一个很好的资源。
TiogaHabitat<- readOGR("TiogaHabitatBoundary.shp")
TiogaHabitat<-spTransform(TiogaHabitat, CRS("+proj=utm +zone=10 +datum=NAD83")) #transform to UTMs
#Extract coordinates and put them in a list
extractCoords <- function(sp.df)
{
results <- list()
for(i in 1:length(sp.df@polygons[[1]]@Polygons))
{
results[[i]] <- sp.df@polygons[[1]]@Polygons[[i]]@coords
}
results
}
vertices<-extractCoords(TiogaHabitat)
#Divide coordinates by 1,000
meters.to.km<-function(meters){
km<-meters/1000
}
scaled.vertices<-lapply(vertices, meters.to.km)
#Create Polygons and Spatial Polygons Data Frame from scaled list of coordinates
Polys<-list()
for(i in 1:length(scaled.vertices)){
Polys[i]<-sp::Polygon(scaled.vertices[[i]])
}
Polys.plural<-sp::Polygons(Polys, ID = "0")
Polys.sp<-sp::SpatialPolygons(list(Polys.plural), proj4string = CRS("+proj=utm +zone=10 +datum=NAD83"))
Tioga.spdf<-sp::SpatialPolygonsDataFrame(Polys.sp, data = TiogaHabitat@data)
【讨论】: