[R-br] como dividir um mapa em áreas retangulares?

Gustavo Henrique de Carvalho gustavo.bio em gmail.com
Terça Maio 24 12:11:47 BRT 2011


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


Mais detalhes sobre a lista de discussão R-br