代码之家  ›  专栏  ›  技术社区  ›  user8229029

用栅格包面积函数计算多边形面积的单位

  •  0
  • user8229029  · 技术社区  · 6 年前

    我试图使用栅格包和面积函数计算R中县和流域的交叉点面积(平方公里或英里)。
    到目前为止,我的代码如下:

    counties <- readOGR('C:\\Shapefiles\\tl_2017_us_county\\tl_2017_us_county.shp')
    counties <- spTransform(counties, CRS("+init=epsg:3455"))
    
    huc2_10 <- readOGR('C:\\Shapefiles\\WBD_10_HU2_Shape\\Shape\\WBDHU6.shp')
    huc2_10 <- spTransform(huc2_10, CRS("+init=epsg:3455"))
    

    然后我将两个形状文件相交:

    pi <- raster::intersect(huc2_10, counties)
    

    这个投影的单位通常是米(我相信),因为它是南达科他州的NAD83投影,所以面积函数应该以平方米计算面积我正在尝试使用面积函数计算由于这个交集而形成的每个多边形的面积(以平方英里为单位)。

    pi$area <- area(pi)/2.589988e6 
    

    但是,proj4string如下所示:

    +init=epsg:3455 +proj=lcc +lat_1=44.4 +lat_2=42.83333333333334 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y_0=0 +datum=NAD83 +units=us-ft +no_defs +ellps=GRS80 +towgs84=0,0,0
    

    根据这个,单位是“美国英尺”因此,面积函数是否会输出每个多边形的面积(平方英尺)?这似乎有道理,但我想确认一下,将我的代码更改为:

    pi$area <- area(pi)/5280**2
    

    谢谢您。

    0 回复  |  直到 6 年前
        1
  •  0
  •   Robert Hijmans    6 年前

    手册证实了您的期望:

    ?raster::area
    

    如果x是一个空间多边形*对象:如果每个空间对象的平方米(如果CRS是经度/纬度)或平方地图单位(通常是米),则为面积

    如果地图单位是英尺,则面积将以平方英尺为单位。