0

我有一个文本文件包含如下信息:

     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

我想找到属于这个区域的所有经纬度

     :lat 40.000  ,43.00 and long 0.000000, 3.902665. 

好吧,我可以手动完成,但这需要很多时间。谁能帮我建立这个功能

              insert the zone of lat and long

然后将在文件中找到该区域内的所有经纬度以及相应的网格点索引和单元格。

读取文件

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

2 回答 2

3
foo <- function(df,  latMin, latMax, longMin, longMax) {
    return (
        df[
            df$Latitude >= latMin & df$Latitude <= latMax &
            df$Longitude >= longMin & df$Longitude <= longMax,
            c('Grid.Point.Index', 'Cell')
        ]
    )
}

用法:

> foo(das, latMin=40, latMax=43, longMin=0, longMax=3.902665)
[1] Grid.Point.Index Cell            
<0 rows> (or 0-length row.names)

> das[1,c(2,3)] <- c(41.0, 2)

> foo(das, latMin=40, latMax=43, longMin=0, longMax=3.902665)
Grid.Point.Index Cell
1            167 1350
于 2013-09-20T13:25:34.193 回答
1

你有这个 data.frame X 包含你的数据。您可以通过将条件写入索引括号来选择行:

X[ cond1 & cond2 & ..., ]

在您的示例中:

a <- 40
b <- 43
c <- 0
d <- 3.9
X[ X$Lat > a & x$Lat < b & X$Lon > c & X$Lon < d, ]
于 2013-09-20T13:35:57.663 回答