5 votos

Crear un shapefile a partir de un dataframe en R, manteniendo la tabla de atributos

Estoy intentando crear un shapefile a partir de un archivo .csv en R. Puedo crear con éxito un shapefile de trabajo con este código, pero cuando intento ver la tabla de atributos para ello en arcMap 10.4, la tabla sólo contiene columnas para objectID, latitud y longitud. Necesito la información en las otras columnas para simbolizar los datos correctamente.

¿Hay alguna manera de especificar qué columnas de los datos se mantienen en el shapefile?

(Sé cómo convertir un marco de datos en un shapefile dentro de arcMap, pero me gustaría automatizar este paso en R si es posible).

library(maptools)
library(rgdal)
library(sp)

#data
site <- c("a","b","c","d")
prop_c <- c(0.88,0.48,0.15,0.47)
prop_b <- c(0.17,0.18,0.09,0.08)
minus_c <- 1-prop_c
minus_b <- 1-prop_b
lat <- c(44.22,38.38,33.35,43.48)
long <- c(-124.45, -123.70, -124.40, -124.05)
MyData <- cbind.data.frame(site, prop_c, prop_b, minus_c, minus_b, lat, long)

#convert data to shapefile    

WGScoor<-  MyData #data to convert
coordinates(WGScoor)=~long+lat #column names of the lat long cols
proj4string(WGScoor)<- CRS("++proj=longlat +datum=WGS84") # set coordinate system to WGS
WGScoor.df <- SpatialPointsDataFrame(WGScoor, data.frame(id=1:length(WGScoor)))
LLcoor<-spTransform(WGScoor.df,CRS("+proj=longlat"))
LLcoor.df=SpatialPointsDataFrame(LLcoor, data.frame(id=1:length(LLcoor)))
writeOGR(LLcoor.df, dsn=getwd(),layer="MyShapefile",driver="ESRI Shapefile")
#successfully creates shapefile that opens in arcGIS,
#but shapefile does not include other columns in original data frame

14voto

Jay Bazuzi Puntos 194

Puede utilizar el $q$ -Vandermonde identidad para expandir el lado izquierdo de su ecuación

$$ \binom{m + n}{k}_{\!\!q} = \sum_{j} \binom{m}{k - j}_{\!\!q} \binom{n}{j}_{\!\!q} q^{j(m-k+j)}\,, $$

$$ \max(0, k - m) \le j \le \min(n, k). $$

0 votos

Gracias. Eso realmente ayuda a aclarar los pasos del código, y ahora el shapefile se guarda con las columnas intactas.

1voto

Rafael Puntos 1079

Su identidad se desprende de esta versión de la regla de Pascal:

$${n \brack k}_q = {n-1 \brack k}_q + q^{n-k} {n-1 \brack k-1}_q.$$

Ampliar da

\begin {align} {a + b + 1 \brack b}_q &= {a+b \brack b}_q + q^{a+1} {a+b \brack b-1}_q \\ &= {a+b \brack b}_q + q^{a+1} \left ( {a+b-1 \brack b-1}_q + q^{a+1} {a+b-1 \brack b-2}_q \right ) \\ &= \cdots \\ &= \sum_ {j=0}^b q^{(b-j)(a+1)} {a+j \brack j}_q. \end {align}

Por supuesto, puedes convertir esto en una prueba adecuada por inducción.

0 votos

Este método también funciona. Crea algunas columnas adicionales en la tabla de atributos cuando se abre en ArcGIS, pero todas las columnas esenciales están ahí.

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