Tengo una pregunta con respecto a la agregación espacial en R. Lo que estoy tratando de hacer es agregar un conjunto de datos de puntos a una cuadrícula. Sin embargo, no estoy seguro de cómo hacerlo, ya que tengo poca experiencia con este tipo de cosas. Esperaba que cualquiera de ustedes pudiera tener alguna guía útil / una posible solución.
Mi punto de vista es un conjunto de datos que contiene datos georreferenciados sobre eventos de conflicto en África (ver www.acleddata.com). Los puntos están georreferenciados con coordenadas de latitud / longitud y contienen datos sobre el tipo de evento y el tiempo. Lo que quiero hacer es agregar estos puntos a una cuadrícula de 1x1 grado.
Por lo tanto, una celda de cuadrícula debe contener la información de los puntos de datos si ocurre un evento dentro de esa celda de cuadrícula. El producto final de esto debería ser un marco de datos o algo que pueda exportar a un archivo csv ya que los datos están destinados a ser utilizados en un conjunto de datos de panel para análisis estadístico.
Hasta ahora cargué y tracé los datos y el archivo de forma usando el código a continuación. Creo que debería usar la función over del paquete sp para agregar, pero no sé cómo. Espero que alguno de ustedes pueda ayudar.
El código que usé hasta ahora se puede encontrar aquí con el resultado visual correspondiente allí .
Las sugerencias para hacer esto en QGIS también son bienvenidas.
fuente
Respuestas:
Los datos descargados contienen algunos errores de ubicación francos, por lo que lo primero que debe hacer es limitar las coordenadas a valores razonables:
Calcular coordenadas de celdas e identificadores de celdas es simplemente una cuestión de truncar los decimales de los valores de latitud y longitud. (En términos más generales, para los rásteres arbitrarios, primero céntrelos y escale para unificar el tamaño de la celda, trunca los decimales y luego vuelva a escalar y vuelva a centrar a su posición original, como se muestra en el código a
ji
continuación). Podemos combinar estas coordenadas en identificadores únicos, adjuntándolos a la trama de datos de entrada y escriba la trama de datos aumentada como un archivo CSV. Habrá un registro por punto:En su lugar, es posible que desee una salida que resuma los eventos dentro de cada celda de la cuadrícula. Para ilustrar esto, calculemos los recuentos por celda y generemos esos, un registro por celda:
Para otros resúmenes, cambie el
function
argumento en el cálculo decounts
. (Alternativamente, use una hoja de cálculo o un software de base de datos para resumir el primer archivo de salida por identificador de celda).Como verificación, mapeemos los recuentos usando los centros de cuadrícula para ubicar los símbolos del mapa. (Los puntos ubicados en el Mar Mediterráneo, Europa y el Océano Atlántico tienen ubicaciones sospechosas: sospecho que muchas de ellas resultan de mezclar latitud y longitud en el proceso de entrada de datos).
Este flujo de trabajo es ahora
Completamente documentado (por medio del
R
código mismo),Reproducible (volviendo a ejecutar este código),
Extensible (modificando el código de manera obvia), y
Razonablemente rápido (toda la operación tarda menos de 10 segundos en procesar estas 53052 observaciones).
fuente
Bueno, lo que quiere es un básico llamado "Unión espacial", que combina dos archivos de forma entre sí y asigna la suma (número de conteo) a la tabla de atributos resultante. Si busca "Unión espacial en R", encontrará numerosos ejemplos incluso aquí en GIS.Stackexchange. Rápidamente busqué en Google y encontré, por ejemplo, esto código publicado en una lista de correo.
Si desea lograr un atributo espacial unirse en QGIS, haga lo siguiente:
Si la unión falla de alguna manera (no funciona para mí todo el tiempo), entonces adhiérete a SEXTANTE y busca la caja de herramientas SAGA, que también tiene muy buenas funciones de unión.
fuente
R
destacan en. Usar shapefiles,rgdal
QGIS y Sextante es un poco como recomendar que alguien contrate una moderna planta industrial automatizada para unir dos tablas juntas :-).