Selecionar a extração de valores dos pixels em linhas a cada número de pixels arbitrário

Prezados Membros, Tenho um raster hipotético r: require(raster); require(sp) ## Criando um raster r <- raster(nc=10, nr=10) r <- setValues(r, round(runif(ncell(r))* 255)) Consigo extrair os valores dos pixels de interesse dadas as coordenadas centrais dos mesmos: x <- c(54,18,54,54) y <- c(27,81,9,63) pontos <- SpatialPoints(cbind(x,y)) cells <- cellFromXY(r, pontos); cells p.cen <- xyFromCell(r, cells); p.cen values <- extract(r,p.cen) dados<-cbind(p.cen,cells,values) No entanto, eu gostaria de encontrar um modo para extrair o valor dos pixels, no qual, eu selecionaria uma coordenada e a função realizaria a extração dos pixels de linhas verticais inteiras do raster a cada dois pixels à partir da coordenada dada, por exemplo? Alguém poderia me dar uma ideia de como chegar a esse resultado? Obrigado, -- ====================================================================== Alexandre dos Santos Proteção Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 99686-6970 (VIVO) (+55) 65 3221-2674 (FIXO) e-mails:alexandresantosbr@yahoo.com.br alexandre.santos@cas.ifmt.edu.br Lattes: http://lattes.cnpq.br/1360403201088680 OrcID: orcid.org/0000-0001-8232-6722 - ResearcherID: A-5790-2016 Researchgate: www.researchgate.net/profile/Alexandre_Santos10 LinkedIn: br.linkedin.com/in/alexandre-dos-santos-87961635 Mendeley:www.mendeley.com/profiles/alexandre-dos-santos6/ ======================================================================

Cara, não entendi direito o que você quer. mas no meu entendimento vc precisa: 1- obter o nx,ny do seu raster 2- obter o index do seu ponto um i,j e ai vc cria um vetor de 2 em 2 com seq (seq(i,ny,2)) E extrai pelo index Caso não seja possíve extrair pelo index vc pode criar um vetor de coordenadas e colocar o loop nelas. Eu nunca mexi muito com raster no R (geralmente uso Py pra isso por que a empresa usa mais py que R) mas acredito que funcione. Se tiver dificuldades com os comandos da um alô que eu te dou uma força Tito Conte Em 26 de janeiro de 2017 17:43, ASANTOS via R-br <r-br@listas.c3sl.ufpr.br> escreveu:
Prezados Membros,
Tenho um raster hipotético r:
require(raster); require(sp)
## Criando um raster r <- raster(nc=10, nr=10) r <- setValues(r, round(runif(ncell(r))* 255))
Consigo extrair os valores dos pixels de interesse dadas as coordenadas centrais dos mesmos:
x <- c(54,18,54,54) y <- c(27,81,9,63)
pontos <- SpatialPoints(cbind(x,y))
cells <- cellFromXY(r, pontos); cells p.cen <- xyFromCell(r, cells); p.cen
values <- extract(r,p.cen) dados<-cbind(p.cen,cells,values)
No entanto, eu gostaria de encontrar um modo para extrair o valor dos pixels, no qual, eu selecionaria uma coordenada e a função realizaria a extração dos pixels de linhas verticais inteiras do raster a cada dois pixels à partir da coordenada dada, por exemplo?
Alguém poderia me dar uma ideia de como chegar a esse resultado?
Obrigado,
-- ====================================================================== Alexandre dos Santos Proteção Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 99686-6970 (VIVO) (+55) 65 3221-2674 (FIXO) e-mails:alexandresantosbr@yahoo.com.br alexandre.santos@cas.ifmt.edu.br Lattes: http://lattes.cnpq.br/1360403201088680 OrcID: orcid.org/0000-0001-8232-6722 - ResearcherID: A-5790-2016 Researchgate: www.researchgate.net/profile/Alexandre_Santos10 LinkedIn: br.linkedin.com/in/alexandre-dos-santos-87961635 Mendeley:www.mendeley.com/profiles/alexandre-dos-santos6/ ======================================================================
_______________________________________________ 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 fornea cdigo mnimo reproduzvel.

use a função getValuesBlock do raster. require(raster); require(sp) set.seed(1) ## Criando um raster r <- raster(nc=10, nr=10) r <- setValues(r, round(runif(ncell(r))* 255)) #Consigo extrair os valores dos pixels de interesse dadas as coordenadas centrais dos mesmos x <- c(54,18,54,54) y <- c(27,81,9,63) p <- data.frame(x,y) pontos <- SpatialPoints(p) p$cel <- cellFromXY(r, pontos) p$col <- colFromCell(r, p$cel) p$row <- rowFromCell(r, p$cel) p plot(r) text(r) points(pontos, pch = 4, col = 2) library(plyr) vals2cols <- ldply(1:nrow(p), function(ir){ getValuesBlock(r, col = p$col[ir], ncols = 2, row = p$row[ir], nrows = 1) }# end fun ) df <- data.frame(p, vals2cols) df 2017-01-26 17:43 GMT-02:00 ASANTOS via R-br <r-br@listas.c3sl.ufpr.br>:
Prezados Membros,
Tenho um raster hipotético r:
require(raster); require(sp)
## Criando um raster r <- raster(nc=10, nr=10) r <- setValues(r, round(runif(ncell(r))* 255))
Consigo extrair os valores dos pixels de interesse dadas as coordenadas centrais dos mesmos:
x <- c(54,18,54,54) y <- c(27,81,9,63)
pontos <- SpatialPoints(cbind(x,y))
cells <- cellFromXY(r, pontos); cells p.cen <- xyFromCell(r, cells); p.cen
values <- extract(r,p.cen) dados<-cbind(p.cen,cells,values)
No entanto, eu gostaria de encontrar um modo para extrair o valor dos pixels, no qual, eu selecionaria uma coordenada e a função realizaria a extração dos pixels de linhas verticais inteiras do raster a cada dois pixels à partir da coordenada dada, por exemplo?
Alguém poderia me dar uma ideia de como chegar a esse resultado?
Obrigado,
-- ====================================================================== Alexandre dos Santos Proteção Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 99686-6970 (VIVO) (+55) 65 3221-2674 (FIXO) e-mails:alexandresantosbr@yahoo.com.br alexandre.santos@cas.ifmt.edu.br Lattes: http://lattes.cnpq.br/1360403201088680 OrcID: orcid.org/0000-0001-8232-6722 - ResearcherID: A-5790-2016 Researchgate: www.researchgate.net/profile/Alexandre_Santos10 LinkedIn: br.linkedin.com/in/alexandre-dos-santos-87961635 Mendeley:www.mendeley.com/profiles/alexandre-dos-santos6/ ======================================================================
_______________________________________________ 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 fornea cdigo mnimo reproduzvel.
-- ############################################################### ## Jônatan Dupont Tatsch ## Professor do Departamento de Física ## Centro de Ciências Exatas e Naturais (CCNE) ## Universidade Federal de Santa Maria - UFSM ## Faixa de Camobi, Prédio 13 - Campus UFSM - Santa Maria, RS, Brasil - 97105-900 ## Telefone: +55(55)33012083 ## www.ufsm.br/meteorologia ###############################################################

Obrigado Jônatan, Perfeita essa função usando getValuesBlocke consegui fazer a extração de 10 valores na horizontal à partir de uma coordenada arbitrária como xy(-150,80), porém não consigo agora capturar além dos valores dos pixel a coordenada central desses pixel pelo output dado pela função, poderia me ajudar? No meu caso tentei usar a função xyFromCell(): require(raster); require(sp) set.seed(1) ## Criando um raster r <- raster(nc=10, nr=10) r <- setValues(r, round(runif(ncell(r))* 255)) #Consigo extrair os valores dos pixels de interesse dadas as coordenadas centrais dos mesmos x <- c(-150) y <- c(-80) p <- data.frame(x,y) pontos <- SpatialPoints(p) p$cel <- cellFromXY(r, pontos) p$col <- colFromCell(r, p$cel) p$row <- rowFromCell(r, p$cel) p plot(r) text(r) points(pontos, pch = 4, col = 2) library(plyr) vals2cols <- ldply(1:nrow(p), function(ir){ getValuesBlock(r, col = p$col[ir], ncols = 10, row = p$row[ir], nrows = 1) }# end fun ) df <- data.frame(p, vals2cols) df p.cen <- xyFromCell(r, vals2cols); p.cen #END------------------------------------------------------------------------------------------------------- -- ====================================================================== Alexandre dos Santos Proteção Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 99686-6970 (VIVO) (+55) 65 3221-2674 (FIXO) e-mails:alexandresantosbr@yahoo.com.br alexandre.santos@cas.ifmt.edu.br Lattes: http://lattes.cnpq.br/1360403201088680 OrcID: orcid.org/0000-0001-8232-6722 - ResearcherID: A-5790-2016 Researchgate: www.researchgate.net/profile/Alexandre_Santos10 LinkedIn: br.linkedin.com/in/alexandre-dos-santos-87961635 Mendeley:www.mendeley.com/profiles/alexandre-dos-santos6/ ====================================================================== Em 01/02/2017 22:01, Jônatan escreveu:
use a função getValuesBlock do raster.
require(raster); require(sp) set.seed(1) ## Criando um raster r <- raster(nc=10, nr=10) r <- setValues(r, round(runif(ncell(r))* 255)) #Consigo extrair os valores dos pixels de interesse dadas as coordenadas centrais dos mesmos x <- c(54,18,54,54) y <- c(27,81,9,63) p <- data.frame(x,y) pontos <- SpatialPoints(p)
p$cel <- cellFromXY(r, pontos) p$col <- colFromCell(r, p$cel) p$row <- rowFromCell(r, p$cel) p plot(r) text(r) points(pontos, pch = 4, col = 2)
library(plyr) vals2cols <- ldply(1:nrow(p), function(ir){ getValuesBlock(r, col = p$col[ir], ncols = 2, row = p$row[ir], nrows = 1) }# end fun ) df <- data.frame(p, vals2cols) df
2017-01-26 17:43 GMT-02:00 ASANTOS via R-br <r-br@listas.c3sl.ufpr.br <mailto:r-br@listas.c3sl.ufpr.br>>:
Prezados Membros,
Tenho um raster hipotético r:
require(raster); require(sp)
## Criando um raster r <- raster(nc=10, nr=10) r <- setValues(r, round(runif(ncell(r))* 255))
Consigo extrair os valores dos pixels de interesse dadas as coordenadas centrais dos mesmos:
x <- c(54,18,54,54) y <- c(27,81,9,63)
pontos <- SpatialPoints(cbind(x,y))
cells <- cellFromXY(r, pontos); cells p.cen <- xyFromCell(r, cells); p.cen
values <- extract(r,p.cen) dados<-cbind(p.cen,cells,values)
No entanto, eu gostaria de encontrar um modo para extrair o valor dos pixels, no qual, eu selecionaria uma coordenada e a função realizaria a extração dos pixels de linhas verticais inteiras do raster a cada dois pixels à partir da coordenada dada, por exemplo?
Alguém poderia me dar uma ideia de como chegar a esse resultado?
Obrigado,
-- ====================================================================== Alexandre dos Santos Proteção Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 99686-6970 <tel:%28%2B55%29%2065%2099686-6970> (VIVO) (+55) 65 3221-2674 <tel:%28%2B55%29%2065%203221-2674> (FIXO) e-mails:alexandresantosbr@yahoo.com.br <mailto:e-mails%3Aalexandresantosbr@yahoo.com.br> alexandre.santos@cas.ifmt.edu.br <mailto:alexandre.santos@cas.ifmt.edu.br> Lattes: http://lattes.cnpq.br/1360403201088680 <http://lattes.cnpq.br/1360403201088680> OrcID: orcid.org/0000-0001-8232-6722 <http://orcid.org/0000-0001-8232-6722> - ResearcherID: A-5790-2016 Researchgate: www.researchgate.net/profile/Alexandre_Santos10 <http://www.researchgate.net/profile/Alexandre_Santos10> LinkedIn: br.linkedin.com/in/alexandre-dos-santos-87961635 <http://br.linkedin.com/in/alexandre-dos-santos-87961635> Mendeley:www.mendeley.com/profiles/alexandre-dos-santos6/ <http://www.mendeley.com/profiles/alexandre-dos-santos6/> ======================================================================
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br <mailto:R-br@listas.c3sl.ufpr.br> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-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 <http://www.leg.ufpr.br/r-br-guia>) e fornea cdigo mnimo reproduzvel.
-- ############################################################### ## Jônatan Dupont Tatsch ## Professor do Departamento de Física ## Centro de Ciências Exatas e Naturais (CCNE) ## Universidade Federal de Santa Maria - UFSM ## Faixa de Camobi, Prédio 13 - Campus UFSM - Santa Maria, RS, Brasil - 97105-900 ## Telefone: +55(55)33012083 ## www.ufsm.br/meteorologia <http://www.ufsm.br/meteorologia> ###############################################################

p.cen <- as.data.frame(xyFromCell(r, df$cel)) names(p.cen) <- c("xc", "yc") df <- data.frame(df, p.cen) df #dput(df) #structure(list(x = -150, y = -80, cel = 91, col = 1L, row = 10, V1 = 61, V2 = 15, xc = -162, yc = -81), .Names = c("x", "y", "cel", "col", "row", "V1", "V2", "xc", "yc"), row.names = c(NA, -1L), class = "data.frame") 2017-02-03 14:00 GMT-02:00 ASANTOS <alexandre.santos@cas.ifmt.edu.br>:
Obrigado Jônatan,
Perfeita essa função usando getValuesBlocke consegui fazer a extração de 10 valores na horizontal à partir de uma coordenada arbitrária como xy(-150,80), porém não consigo agora capturar além dos valores dos pixel a coordenada central desses pixel pelo output dado pela função, poderia me ajudar?
No meu caso tentei usar a função xyFromCell():
require(raster); require(sp) set.seed(1) ## Criando um raster r <- raster(nc=10, nr=10) r <- setValues(r, round(runif(ncell(r))* 255)) #Consigo extrair os valores dos pixels de interesse dadas as coordenadas centrais dos mesmos x <- c(-150) y <- c(-80) p <- data.frame(x,y) pontos <- SpatialPoints(p)
p$cel <- cellFromXY(r, pontos) p$col <- colFromCell(r, p$cel) p$row <- rowFromCell(r, p$cel) p plot(r) text(r) points(pontos, pch = 4, col = 2)
library(plyr) vals2cols <- ldply(1:nrow(p), function(ir){ getValuesBlock(r, col = p$col[ir], ncols = 10, row = p$row[ir], nrows = 1)
}# end fun )
df <- data.frame(p, vals2cols) df
p.cen <- xyFromCell(r, vals2cols); p.cen
#END-------------------------------------------------------- -----------------------------------------------
-- ====================================================================== Alexandre dos Santos Proteção Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 99686-6970 <+55%2065%2099686-6970> (VIVO) (+55) 65 3221-2674 <+55%2065%203221-2674> (FIXO)e-mails:alexandresantosbr@yahoo.com.br alexandre.santos@cas.ifmt.edu.br Lattes: http://lattes.cnpq.br/1360403201088680 OrcID: orcid.org/0000-0001-8232-6722 - ResearcherID: A-5790-2016 Researchgate: www.researchgate.net/profile/Alexandre_Santos10 LinkedIn: br.linkedin.com/in/alexandre-dos-santos-87961635 Mendeley:www.mendeley.com/profiles/alexandre-dos-santos6/ ======================================================================
Em 01/02/2017 22:01, Jônatan escreveu:
use a função getValuesBlock do raster.
require(raster); require(sp) set.seed(1) ## Criando um raster r <- raster(nc=10, nr=10) r <- setValues(r, round(runif(ncell(r))* 255)) #Consigo extrair os valores dos pixels de interesse dadas as coordenadas centrais dos mesmos x <- c(54,18,54,54) y <- c(27,81,9,63) p <- data.frame(x,y) pontos <- SpatialPoints(p)
p$cel <- cellFromXY(r, pontos) p$col <- colFromCell(r, p$cel) p$row <- rowFromCell(r, p$cel) p plot(r) text(r) points(pontos, pch = 4, col = 2)
library(plyr) vals2cols <- ldply(1:nrow(p), function(ir){ getValuesBlock(r, col = p$col[ir], ncols = 2, row = p$row[ir], nrows = 1)
}# end fun )
df <- data.frame(p, vals2cols) df
2017-01-26 17:43 GMT-02:00 ASANTOS via R-br <r-br@listas.c3sl.ufpr.br>:
Prezados Membros,
Tenho um raster hipotético r:
require(raster); require(sp)
## Criando um raster r <- raster(nc=10, nr=10) r <- setValues(r, round(runif(ncell(r))* 255))
Consigo extrair os valores dos pixels de interesse dadas as coordenadas centrais dos mesmos:
x <- c(54,18,54,54) y <- c(27,81,9,63)
pontos <- SpatialPoints(cbind(x,y))
cells <- cellFromXY(r, pontos); cells p.cen <- xyFromCell(r, cells); p.cen
values <- extract(r,p.cen) dados<-cbind(p.cen,cells,values)
No entanto, eu gostaria de encontrar um modo para extrair o valor dos pixels, no qual, eu selecionaria uma coordenada e a função realizaria a extração dos pixels de linhas verticais inteiras do raster a cada dois pixels à partir da coordenada dada, por exemplo?
Alguém poderia me dar uma ideia de como chegar a esse resultado?
Obrigado,
-- ====================================================================== Alexandre dos Santos Proteção Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 99686-6970 (VIVO) (+55) 65 3221-2674 (FIXO) e-mails:alexandresantosbr@yahoo.com.br alexandre.santos@cas.ifmt.edu.br Lattes: http://lattes.cnpq.br/1360403201088680 OrcID: orcid.org/0000-0001-8232-6722 - ResearcherID: A-5790-2016 Researchgate: www.researchgate.net/profile/Alexandre_Santos10 LinkedIn: br.linkedin.com/in/alexandre-dos-santos-87961635 Mendeley:www.mendeley.com/profiles/alexandre-dos-santos6/ ======================================================================
_______________________________________________ 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 fornea cdigo mnimo reproduzvel.
-- ############################################################### ## Jônatan Dupont Tatsch ## Professor do Departamento de Física ## Centro de Ciências Exatas e Naturais (CCNE) ## Universidade Federal de Santa Maria - UFSM ## Faixa de Camobi, Prédio 13 - Campus UFSM - Santa Maria, RS, Brasil - 97105-900 ## Telefone: +55(55)33012083 <+55%2055%203301-2083> ## www.ufsm.br/meteorologia ###############################################################
-- ############################################################### ## Jônatan Dupont Tatsch ## Professor do Departamento de Física ## Centro de Ciências Exatas e Naturais (CCNE) ## Universidade Federal de Santa Maria - UFSM ## Faixa de Camobi, Prédio 13 - Campus UFSM - Santa Maria, RS, Brasil - 97105-900 ## Telefone: +55(55)33012083 ## www.ufsm.br/meteorologia ###############################################################

Obrigado Jônatan, Desculpe se não fui claro na minha pergunta , mas a função sugerida xyFromCell(r, df$cel): x y [1,] -162 -81 Retorna apenas a coordenada do pixel V1 = 61, gostaria de extrair a coordenada do centro de todos os pixels de V1 a V10 x y cel col row V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 xc yc 1 -150 -80 91 1 10 61 15 164 223 199 203 116 105 207 154 -162 -81 Atenciosante, -- ====================================================================== Alexandre dos Santos Proteção Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 99686-6970 (VIVO) (+55) 65 3221-2674 (FIXO) e-mails:alexandresantosbr@yahoo.com.br alexandre.santos@cas.ifmt.edu.br Lattes: http://lattes.cnpq.br/1360403201088680 OrcID: orcid.org/0000-0001-8232-6722 - ResearcherID: A-5790-2016 Researchgate: www.researchgate.net/profile/Alexandre_Santos10 LinkedIn: br.linkedin.com/in/alexandre-dos-santos-87961635 Mendeley:www.mendeley.com/profiles/alexandre-dos-santos6/ ====================================================================== Em 03/02/2017 15:04, Jônatan escreveu:
p.cen <- as.data.frame(xyFromCell(r, df$cel)) names(p.cen) <- c("xc", "yc") df <- data.frame(df, p.cen) df
participantes (3)
-
ASANTOS
-
Jônatan
-
Tito Conte