como dividir um mapa em áreas retangulares?

Olá pessoal, Por favor, como eu faço para dividir um mapa em uma grade? Eu preciso que o tamanho da grade seja ajustável e que todos os retângulos tenham pela menos uma porção da sua área no continente: require('maps') require('spatial') require('maptools') brazil <- map("world", "brazil", fill = TRUE, plot = FALSE) ids <- sapply(strsplit(brazil$names, ":"), function(x) x[1]) llCRS <- CRS("+proj=longlat +ellps=WGS84") brazil.poly <- map2SpatialPolygons(brazil, IDs = ids, proj4string = llCRS) A representação gráfica aqui não é importante. Eu preciso apenas das coordenadas dos quatro cantos de cada retângulo passar para um webservice. Como há um limite de requisições que eu posso fazer, preciso dar um jeito de não requisitar dados para áreas no meio do oceano. Farei isso para todo o continente americano. Eu nunca trabalhei com mapas mas imaginei que, como eu não tenho um objeto da classe SpatialGrid, eu poderia criar um mapa de classe SpatialPolygon, usar a função spsample para conseguir pontos no continente e depois transformar esses pontos em uma grade. De qualquer forma, não funcionou: spsample(brazil.poly, 100, type = "regular") # Error in .local(x, n, type, ...) : cannot sample in zero-area polygons Realmente há polígonos com área 0 nesse mapa e eu não sei como resolver isso. Obrigado, Gustavo.
sessionInfo() R version 2.13.0 (2011-04-13) Platform: x86_64-apple-darwin9.8.0/x86_64 (64-bit)
locale: [1] C/en_US.UTF-8/C/C/C/C attached base packages: [1] stats graphics grDevices utils datasets methods base other attached packages: [1] maptools_0.8-7 sp_0.9-81 spatial_7.3-3 maps_2.1-6 foreign_0.8-43 sos_1.3-0 [7] brew_1.0-6 igraph_0.5.5-2 Matrix_0.999375-50 lattice_0.19-23 loaded via a namespace (and not attached): [1] grid_2.13.0 raster_1.8-22 tools_2.13.0

A forma abaixo é o suficiente para mim. llCRS <- CRS("+proj=longlat +ellps=WGS84") brazil <- map("world", "brazil", fill = T, plot = F) brazil <- map2SpatialPolygons(brazil, IDs = 1:23, proj4string = llCRS) pontos <- spsample(brazil@polygons[[1]], bb = bbox(brazil), n = 10, type="regular", proj4string=llCRS) pixels <- as(pontos, "SpatialPixels") plot(brazil) plot(pixels, add = T) Obrigado, Gustavo. 2011/5/24 Gustavo Henrique de Carvalho <gustavo.bio@gmail.com>:
Olá pessoal,
Por favor, como eu faço para dividir um mapa em uma grade? Eu preciso que o tamanho da grade seja ajustável e que todos os retângulos tenham pela menos uma porção da sua área no continente:
require('maps') require('spatial') require('maptools') brazil <- map("world", "brazil", fill = TRUE, plot = FALSE) ids <- sapply(strsplit(brazil$names, ":"), function(x) x[1]) llCRS <- CRS("+proj=longlat +ellps=WGS84") brazil.poly <- map2SpatialPolygons(brazil, IDs = ids, proj4string = llCRS)
A representação gráfica aqui não é importante. Eu preciso apenas das coordenadas dos quatro cantos de cada retângulo passar para um webservice. Como há um limite de requisições que eu posso fazer, preciso dar um jeito de não requisitar dados para áreas no meio do oceano. Farei isso para todo o continente americano. Eu nunca trabalhei com mapas mas imaginei que, como eu não tenho um objeto da classe SpatialGrid, eu poderia criar um mapa de classe SpatialPolygon, usar a função spsample para conseguir pontos no continente e depois transformar esses pontos em uma grade. De qualquer forma, não funcionou:
spsample(brazil.poly, 100, type = "regular") # Error in .local(x, n, type, ...) : cannot sample in zero-area polygons
Realmente há polígonos com área 0 nesse mapa e eu não sei como resolver isso.
Obrigado,
Gustavo.
sessionInfo() R version 2.13.0 (2011-04-13) Platform: x86_64-apple-darwin9.8.0/x86_64 (64-bit)
locale: [1] C/en_US.UTF-8/C/C/C/C
attached base packages: [1] stats graphics grDevices utils datasets methods base
other attached packages: [1] maptools_0.8-7 sp_0.9-81 spatial_7.3-3 maps_2.1-6 foreign_0.8-43 sos_1.3-0 [7] brew_1.0-6 igraph_0.5.5-2 Matrix_0.999375-50 lattice_0.19-23
loaded via a namespace (and not attached): [1] grid_2.13.0 raster_1.8-22 tools_2.13.0
participantes (1)
-
Gustavo Henrique de Carvalho