获取R中多个坐标的中心



我有一个带有"lat"、"lon"值的数据帧,例如:

index      lat         lon     
------- ----------- ----------- 
1   51.513393   -0.115650  
2   51.513428   -0.115461  
3   51.513428   -0.115462  
4   51.513428   -0.115465  
5   51.513428   -0.115470  
6   51.513432   -0.115462  
7   51.513432   -0.115467  
8   51.513435   -0.115471  
9   51.513439   -0.115468  
10   51.513439   -0.115469  

我正试图获得这些点的中心:

center_point <- centroid(df)

我遇到了"geosphere"包出现错误的问题:

Error in .pointsToMatrix(x, poly = TRUE) : longitude > 360
In addition: Warning message:
In .pointsToMatrix(x, poly = TRUE) :
Suspect column names (longitude and latitude reversed?)

通过阅读这篇stackoverflow文章,问题可能与我的值格式化为字符串而不是数字/双精度有关。

然后,我将这些列值转换为数字:

df$lon <- as.numeric(df$lon)
df$lat <- as.numeric(df$lat)

然而,当我现在看的时候,转换似乎把我的数据搞砸了;它显示:

index   lat   lon  
------- ----- ----- 
1     1    35  
2     2     8  
3     2     9  
4     2    11  
5     2    15  
6     3     9  
7     3    12  
8     4    16  
9     5    13  
10     5    14  

有人知道我该如何处理这个问题吗?

在djhurio的帮助下解决了这个问题:

必须先将值转换为:

as.character((

以下代码现在适用于我的应用程序:

df$lon <- as.numeric(as.character(df$lon))
df$lat <- as.numeric(as.character(df$lat))
center_point <- centroid(df)
require(sp)
require(rgeos)
x =  'lat,lon
51.513393,-0.115650 
51.513428,-0.115461 
51.513428,-0.115462 
51.513428,-0.115465 
51.513428,-0.115470 
51.513432,-0.115462 
51.513432,-0.115467  
51.513435,-0.115471  
51.513439,-0.115468  
51.513439,-0.115469'
x = read.table(text = x, sep = ',', header = TRUE, colClasses= rep('numeric', 2) )
sx = SpatialPoints(coords = x[, c('lon','lat')], proj4string = CRS("+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs") )
gCentroid(sx)

SpatialPoints:
x        y
1 -0.1154845 51.51343
Coordinate Reference System (CRS) arguments: +proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs +towgs84=0,0,0 

相关内容

  • 没有找到相关文章

最新更新