3

次のような情報を含むテキストファイルがあります。

   Grid Point Index, Latitude, Longitude, Cell
 167,    0.000000,    9.432301, 1350
 169,    0.000000,    9.544590, 1350
 171,    0.000000,    9.656878, 1350
 173,    0.000000,    9.769168, 1350
 175,    0.000000,    9.881457, 1350
 177,    0.000000,    9.993747, 1350
 179,    0.000000,   10.106036, 1386
 181,    0.000000,   10.218326, 1386

この緯度と経度:0.000000、11.902665に対応するグリッドポイントとセルを見つけたいと思います。手動で行うこともできますが、これには多くの時間がかかります。入力に対応する正確な座標がないことは確かなので、ファイル内の入力に最も近い座標が必要です。この機能を構築するのを手伝ってくれる人はいますか

   insert lat and long

次に、ファイル内の最も近い緯度と経度、および対応するグリッド ポイントのインデックスとセルを検索します。

ファイルを読む

      das= read.table("C:\\Users\\lonlatnter.txt", sep=",",header=TRUE)
4

4 に答える 4

6

gdistImap パッケージの関数は、大圏距離を計算します。これを試して:

install.packages("Imap")
library("Imap")

#Dummy data
dat <- read.table(text="   Grid Point Index, Latitude, Longitude, Cell
 167,    0.000000,    9.432301, 1350
 169,    0.000000,    9.544590, 1350
 171,    0.000000,    9.656878, 1350
 173,    0.000000,    9.769168, 1350
 175,    0.000000,    9.881457, 1350
 177,    0.000000,    9.993747, 1350
 179,    0.000000,   10.106036, 1386
 181,    0.000000,   10.218326, 1386", header=T, sep=",")

#MyPoint
myLatitude <- 0.000000 
myLongitude <- 11.902665

#gdist Geodesic distance (great circle distance) between points
dat$Dist <- gdist(lat.1=dat$Latitude,
                       lon.1=dat$Longitude,
                       lat.2=myLatitude,
                       lon.2=myLongitude)

#Output the shortest distance - Min
dat[dat$Dist == min(dat$Dist),]

#Output
#   Grid.Point.Index Latitude Longitude Cell     Dist
#8              181        0  10.21833 1386 101.2418
于 2013-06-24T13:18:52.713 に答える
3

もう 1 つのオプションは、Google マップggmapを使用しmapdistてマップの距離を計算する を使用することです。

library(ggmap)
origin <- revgeocode(c( 11.902665,0.000000))
do.call(rbind,apply(DT,1,function(x){
  end <- revgeocode(c(x['Longitude'],x['Latitude']))
  mapdist(from=origin,to=end)[,c('from','to','km')]
  }))

km 単位の距離を持つ場所名 (notlat/long) のスマートな結果が得られます。

        from                       to      km
1 R14, Gabon       Komo-Mondah, Gabon      NA
2 R14, Gabon       Komo-Mondah, Gabon      NA
3 R14, Gabon       Komo-Mondah, Gabon      NA
4 R14, Gabon       Komo-Mondah, Gabon      NA
5 R14, Gabon              Komo, Gabon 324.206
6 R14, Gabon                N1, Gabon 281.145
7 R14, Gabon N1, Ekouk Village, Gabon 304.186
8 R14, Gabon          N1, Oyan, Gabon 308.246

なぜNAを与えているのかわかりません。しかし、この詳細を省略した場合:) ニアセットポイントは次のとおりです。

res [which.min(res$km),]
 from        to      km
6 R14, Gabon N1, Gabon 281.145
于 2013-06-24T14:06:25.277 に答える
1

これを試して

data = read.table("C:\\Users\\lonlatnter.txt", sep=",",header=TRUE)

distance = function(Latitude, Longitude,x,y)
{
    sqrt((Latitude-y)^2+(Longitude-x)^2)
}
nearby <- function(y,x)
{
    dist= (with(data,distance(Latitude, Longitude,x,y)))
    data[match(min(dist),dist),]
}

nearby(0,9.6)

# Grid.Point.Index Latitude Longitude Cell
# 2              169        0   9.54459 1350
于 2013-06-24T13:30:18.033 に答える