【问题标题】:Is there a R function to rescale coordinates from a SpatialPolygonsDataFrame?是否有 R 函数可以从 SpatialPolygonsDataFrame 重新缩放坐标?
【发布时间】:2021-10-11 12:00:24
【问题描述】:

我有一个SpatialPolygonsDataFrame 对象,其多边形坐标以米 (UTM) 为单位。我想将坐标重新缩放为公里(将坐标除以 1000)。 sp 包中是否有可以做到这一点的函数?

【问题讨论】:

    标签: r scale spatial sp


    【解决方案1】:

    我的解决方法,其中 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)
    

    【讨论】:

    猜你喜欢
    • 2021-08-07
    • 2020-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-05
    • 2016-04-04
    • 1970-01-01
    • 2015-06-16
    相关资源
    最近更新 更多