
Boa tarde a todos, Estou com um problema em um loop. Tenho duas matrizes de 480 por 216 com latitudes e longitudes e quero selecionar dentre estas somente as que estão dentro de determinado limite (latLim e lonLim), que são pares. Estou usando: lat <- read.table(file="lat.txt") lon <- read.table(file="lon.txt") library(R.matlab) # para ler .mat sx <- readMat('SX.mat',maxLength=NULL, fixNames=TRUE,verbose=F,sparseMatrixClass='SparseM') # limite de longitude lonSX <- sx$SX[3,1,1] lonlim <- as.numeric(lonSX$Lon[1:130]) # limite de latitude latSX <- sx$SX[4,1,1] latlim <- as.numeric(latSX$Lat[1:130]) #### latA <- lonA <- matrix(NA,480,216) for(i in 1:(dim(lat)[1])){ for(j in 1:(dim(lon)[2])){ if (c(lat[i,j],lon[i,j]) > min(latLim,lonLim) # seleciona a lat/lon só para a área do polígono & c(lat[i,j],lon[i,j]) < max(latLim,lonLim)) latA[i,j] <- lat[i,j] lonA[i,j] <- lon[i,j] } } Mas a sintaxe não está correta pois eu não estou sabendo dizer que cada par latLim,lonLim é um delimitador de lat e lon. Se alguém puder me dar uma mãozinha, por favor. Os arquivos estão em anexo. Obrigada, Heloise --- Oc. Heloise Pavanato Pós-graduação em Oceanogra Biológica Instituto de Oceanografia Universidade Federal do Rio Grande

Olá, Seria uma função para recortar uma quadricula dentro de um intervalo de coordenadas? Se for, talvez isso que segue abaixo possa ajudar: #--------------------------------------------------------------------------- coords<-matrix(sample(0:100,200,r=T),100,2);colnames(coords)<-c("Lat","Lon") coordinates<-c(0,50,50,100)#Sequencia de valores: #1-Latitude Minima #2- Latitude Maxima #3- Longitude Minima #4- Longitude Maxima coords.1<-coords[c(which((coords[,"Lat"])>=(coordinates[1]))),]#.lat.min coords.2<-coords.1[c(which((coords.1[,"Lat"])<=(coordinates[2]))),]#.lat.max coords.3<-coords.2[c(which((coords.2[,"Lon"])>=(coordinates[3]))),]#.long.min coords.final<-coords.3[c(which((coords.3[,"Lon"])<=(coordinates[4]))),]#.long.max #Aqui no final saem somente os pontos que estão no intervalo determinado acima #--------------------------------------------------------------------------- Espero ter ajudado. Abraços Luciano 2012/8/21 Heloíse Pavanato <helopavanato@gmail.com>
Boa tarde a todos,
Estou com um problema em um loop. Tenho duas matrizes de 480 por 216 com latitudes e longitudes e quero selecionar dentre estas somente as que estão dentro de determinado limite (latLim e lonLim), que são pares.
Estou usando:
lat <- read.table(file="lat.txt") lon <- read.table(file="lon.txt")
library(R.matlab) # para ler .mat sx <- readMat('SX.mat',maxLength=NULL, fixNames=TRUE,verbose=F,sparseMatrixClass='SparseM')
# limite de longitude lonSX <- sx$SX[3,1,1] lonlim <- as.numeric(lonSX$Lon[1:130])
# limite de latitude latSX <- sx$SX[4,1,1] latlim <- as.numeric(latSX$Lat[1:130])
#### latA <- lonA <- matrix(NA,480,216)
for(i in 1:(dim(lat)[1])){ for(j in 1:(dim(lon)[2])){ if (c(lat[i,j],lon[i,j]) > min(latLim,lonLim) # seleciona a lat/lon só para a área do polígono & c(lat[i,j],lon[i,j]) < max(latLim,lonLim)) latA[i,j] <- lat[i,j] lonA[i,j] <- lon[i,j] } }
Mas a sintaxe não está correta pois eu não estou sabendo dizer que cada par latLim,lonLim é um delimitador de lat e lon.
Se alguém puder me dar uma mãozinha, por favor.
Os arquivos estão em anexo.
Obrigada, Heloise
--- Oc. Heloise Pavanato Pós-graduação em Oceanogra Biológica Instituto de Oceanografia Universidade Federal do Rio Grande
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
-- Luciano F. Sgarbi Mestrando em Ecologia e Evolução - UFG Laboratório de Ecologia de Insetos Cel. (62)8174-2262 Lab. (62)3521-1732

Heloíse, experimente fazer assim: lat <- read.table(file="lat.txt") lon <- read.table(file="lon.txt") library(R.matlab) # para ler .mat sx <- readMat('SX.mat',maxLength=NULL, fixNames=TRUE,verbose=F,sparseMatrixClass='SparseM') # limites de longitude lonSX <- sx$SX[3,1,1] lonmin <- min(as.numeric(lonSX$Lon[1:130])) lonmax <- max(as.numeric(lonSX$Lon[1:130])) # limites de latitude latSX <- sx$SX[4,1,1] latmin <- min(as.numeric(latSX$Lat[1:130])) latmax <- max(as.numeric(latSX$Lat[1:130])) indice=which(lat<latmax) #indices das latitudes menores do que a máxima indice=which(lat[indice]>latmin) #indices das latitudes maiores do que a minima indice=which(lon[indice]<lonmax) #indices das longitudes menores do que a máxima indice=which(lon[indice]>lonmin) #indices das longitudes maiores do que a minima no final vc terá os indices das coordenadas que encerram a área de interesse Atenciosamente, Tito Conte Instituto Oceanográfico Universidade de São Paulo LabPesq - Laboratório Oceanografia Pesqueira
participantes (3)
-
Heloíse Pavanato
-
Luciano F. Sgarbi
-
Tito Conte