获取R中多个坐标的中心
Getting centre of multiple coordinates in 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?)
阅读此 ,问题可能与我的字符串格式的值有关,而不是 numeric/double。
然后我继续将这些列值转换为数字:
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
我有一个包含 '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?)
阅读此
然后我继续将这些列值转换为数字:
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