计算地理质心的经度/纬度

时间:2014-10-27 01:59:02

标签: r spatial centroid

我想用内布拉斯加州的县级作物产量数据对STAT类进行一些空间统计分析。为此,我需要每个县的地理质心的经度和纬度。任何人都知道如何在R中做到这一点?我知道它可以在ArcGIS中完成,但我现在无法访问它。

3 个答案:

答案 0 :(得分:3)

您没有提供任何有关shapefile的详细信息,但我从here获得了一个,您可以gCentroid使用rgeos

library(rgdal)
library(sp)
library(rgeos)

nebraska <- readOGR("CountyBoundsUTM/", "CountyUTM")

gCentroid(nebraska, byid=TRUE)

## SpatialPoints:
##           x       y
## 0  721768.5 4636738
## 1  430938.8 4524651
## 2  698036.4 4566570
## 3  370970.6 4641340
## ...
## 89 623301.6 4603228
## 90 618883.0 4486931
## 91 439295.3 4582756
## 92 493680.8 4522680
## Coordinate Reference System (CRS) arguments: +proj=utm +zone=14 +datum=NAD83
## +units=m +no_defs +ellps=GRS80 +towgs84=0,0,0 

答案 1 :(得分:0)

您还可以使用SpatialPolygons*提取coordinates个对象的质心,但质心不会像SpatialPoints一样返回rgeos::gCentroid

例如:

library(rgdal)
download.file('http://dds.cr.usgs.gov/pub/data/nationalatlas/countyp020_nt00009.tar.gz', 
              f <- tempfile()) # ~ 4.5 Mb
untar(f, exdir=tempdir())
counties <- readOGR(tempdir(), 'countyp020')
xy <- coordinates(counties)
head(xy)

#        [,1]     [,2]
# 0 -153.3905 69.30193
# 1 -156.0582 71.33094
# 2 -155.6695 71.24763
# 3 -155.5164 71.23148
# 4 -155.1846 71.18189
# 5 -155.6126 71.00725

请注意,正如@Spacedman在评论中指出的那样,首先应将多边形投影到平面坐标系。

答案 2 :(得分:-2)

您可以使用get_map()包中的ggplot2函数将美国县地图数据从maps包提取到数据框。然后,您可以按县(或您想用于定义地理中心的任何方法)计算纬度/经度列范围的中点。