2013-09-20 1 views
0

У меня есть текстовый файл содержит следующую информацию:Найти long и lat в текстовом файле в зоне?

 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 

тогда найти все LAT-давно в этой зоне в файле и соответствующий индекс точки сетки и ячейки.

, чтобы прочитать файл

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

1. Что у вас до сих пор? 2. Ваше описание нечеткое. Вам нужны точки внутри зоны или точки, наиболее близкие к зоне? – zero323

ответ

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 
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, ] 
+1

Кстати: вы уверены, что хотите работать с зонами координат, а не расстояниями? – holgrich

Смежные вопросы