Dado un polígono en una base de datos PostGIS, ¿cuál es la mejor manera para crear un gráfico de su distribución a través de un rango de latitudes? Estoy imaginando una gráfica de una curva, donde la proporción del área total bajo la curva que se encuentra entre dos puntos en el eje x (latitud) representa la proporción de la poligonal del área entre esas latitudes. Las herramientas que tengo a mi disposición son PostGIS y R. me parece que esto debe ser una bastante rutina de ejercicio para los que no están bien establecidos los enfoques que yo simplemente no he sido capaz de encontrar.
Respuesta
¿Demasiados anuncios?
Jay Bazuzi
Puntos
194
Bueno, aquí en una respuesta, algún código R - aplicaciones rgeos, sp:
Para p = un SpatialPolygon solo o una sola fila de un SpatialPolygonsDataFrame:
slice <- function(p,n=20){
bb = bbox(p)
ys = seq(bb[2,1],bb[2,2],len=n)
ll = list()
for(s in 1:(n-1)){
ll[[s]] = Polygons(list(
Polygon(cbind(
c(bb[1,1],bb[1,2],bb[1,2],bb[1,1],bb[1,1]),
c(ys[s],ys[s],ys[s+1],ys[s+1],ys[s])))),s)
}
SpatialPolygons(ll)
}
donde n = número de sectores, polígonos de división rectangular n vueltas. Superposición de ahora:
lls = slice(p,40)
ii = gIntersection(p,lls,byid=TRUE)
plot(ii)
debería mostrarte las rebanadas. Ahora haz las áreas:
a = sapply(slot(ii,"polygons"),slot,"area")
Simplemente no sé cómo correcta que será si los polígonos tienen agujeros en ellos. Intentar algunas pruebas primero.