5 votos

Espacial gráficos, distribución del área de polígono sobre latitudes

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.

4voto

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.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X