【问题标题】:rdist.earth() with pairs of coordinatesrdist.earth() 带有坐标对
【发布时间】:2016-07-23 01:03:51
【问题描述】:

所以我已将我的坐标对转换为 2 个矩阵,如下所示:

    long1      lat1
1 -1.290672 0.7124777
2 -1.290643 0.7125160
3 -1.290692 0.7125405
4 -1.290724 0.7124929
5 -1.290748 0.7124579
6 -1.290766 0.7124353

    long2      lat2
1 -1.290643 0.7125160
2 -1.290692 0.7125405
3 -1.290724 0.7124929
4 -1.290748 0.7124579
5 -1.290766 0.7124353
6 -1.290771 0.7124249

试图运行一个看似简单的命令,但它正在挂起我的机器。不知道为什么,因为每个矩阵只有 507550 个元素和 17.4 Mb。

foo <- rdist.earth(coords, coords2, miles=FALSE, R=6371)

有更简单的方法吗???

【问题讨论】:

标签: r coordinates distance


【解决方案1】:
dist <- rdist.earth.vec(coords, coords2, miles=FALSE, R=6371)

【讨论】:

    【解决方案2】:

    有更好的方法来做到这一点。但是,如果您的 R 技能很少:您可以将第一个矩阵矩阵子集为子矩阵(例如,每个子矩阵的大小是总数的 1/10,针对第二个矩阵运行每个子矩阵,然后将结果组合为最后。我遇到了同样的问题,这就是我想出的。

    getwd()
    setwd("C:/_R")
    library(maptools)
    require(rgdal)
    # Read SHAPEFILE.shp from the current working directory (".")
    points2010 <- readOGR(dsn = "C:/_R", layer = "points_2010")
    metro <- readOGR(dsn = "C:/_R", layer = "selection")
    plot(points2010)
    plot(metro, axes=TRUE)
    head(points2010)
    
    library("rgeos")
    ohio.metro <- spTransform(points2010, CRS("+proj=longlat +datum=WGS84"))
    plot(ohio.metro, axes=TRUE)
    
    ohio.metro$COUNTYFP10<-substr(ohio.metro$id,3,5)
    countylist<-unique(ohio.metro$COUNTYFP10)
    # "035" "055" "085" "093" "103"
    ohio.county035 <- subset( ohio.metro, COUNTYFP10 == "035"  )
    ohio.county055 <- subset( ohio.metro, COUNTYFP10 == "055"  )
    ohio.county085 <- subset( ohio.metro, COUNTYFP10 == "085"  )
    ohio.county093 <- subset( ohio.metro, COUNTYFP10 == "093"  )
    ohio.county103 <- subset( ohio.metro, COUNTYFP10 == "103"  )
    
    plot(ohio.metro$COUNTYFP10) #counties in the metro
    plot(ohio.county035$COUNTYFP10) # counties inthe county
    
    plot(ohio.metro) #counties in the metro
    plot(ohio.county035) # counties inthe county
    
    #get the coordinats for the Great circle command
    ohio.metro.coords <- ohio.metro@coords
    ohio.county035.coords <- ohio.county035@coords
    ohio.county055.coords <- ohio.county055@coords
    ohio.county085.coords <- ohio.county085@coords
    ohio.county093.coords <- ohio.county093@coords
    ohio.county103.coords <- ohio.county103@coords
    
    library(fields)
    great_circle<-rdist.earth(ohio.county035.coords,ohio.metro.coords,miles=TRUE, R=NULL) #works
    great_circle<-rdist.earth(ohio.county055.coords,ohio.metro.coords,miles=TRUE, R=NULL) #works
    great_circle<-rdist.earth(ohio.county085.coords,ohio.metro.coords,miles=TRUE, R=NULL) #works
    great_circle<-rdist.earth(ohio.county093.coords,ohio.metro.coords,miles=TRUE, R=NULL) #works
    great_circle<-rdist.earth(ohio.county103.coords,ohio.metro.coords,miles=TRUE, R=NULL) #works
    
    library(matrixStats)
    bm<-rowMedians(great_circle)
    head(bm)
    

    【讨论】:

      猜你喜欢
      • 2017-07-22
      • 2013-06-18
      • 1970-01-01
      • 1970-01-01
      • 2018-05-31
      • 2017-08-23
      • 2017-07-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多