3 votos

Añadir lat/lon a múltiples shapefiles

Tengo puntos de datos de ubicación para las colonias (archivo csv). Tengo un shapefile que necesito duplicar y georeferenciar a cada colonia. ¿Hay alguna manera de hacer esto en r?

EDIT: Quiero crear un copia del shapefile existente del KUD para cada ubicación de la colonia. I no quiere crear un KUD único para cada colonia.

La imagen muestra el shapefile (verde) que estoy tratando de replicar para cada colonia y tener el centro del shapefile georeferenciado en la colonia. Las flechas muestran el cambio que quiero hacer en la ubicación del shapefile.

enter image description here

La imagen muestra la tabla de datos de las colonias. Se importan como un archivo csv y necesito crear una copia del shapefile para cada punto de datos de la colonia situado en la misma lat/lon.

enter image description here

1voto

La geometría de los objetos espaciales en el sf (características simples) pueden ser tratadas como matrices - y por lo tanto sumar / restar fácilmente, y se señala en los comentarios que usted puede tratar esto como una simple traducción XY.

Crea un polígono básico:

kud <- st_as_sf(data.frame(name = "poly1", 
   wkt = "Polygon ((1 1, 1 2, 2 2, 2 1, 1 1))"), 
   wkt = "wkt", crs = 4326)

Encontrar el centroide

kud.cent <- st_centroid(kud)

Crea una copia del polígono y luego resta las coordenadas del centroide del polígono para obtener un polígono centrado en 0,0

kud.0 <- kud
kud.0$wkt <- kud.0$wkt - kud.cent$wkt

Para centrar el polígono en un nuevo punto, basta con añadir ese punto al polígono '0':

pt1 <- st_as_sf(data.frame(name = "colony1", wkt = "POINT(3 1)"), wkt = "wkt", crs = 4326)
kud.1 <- kud.0
kud.1$name <- pt1$name # assign the name to the new poly
kud.1$wkt <- kud.1$wkt + pt1$wkt

Para su archivo CSV, probablemente podría utilizar:

colony <- read.csv("yourfile")
colony <- st_as_sf(colony, coords = c("Lon", "Lat"))
kud.1 <- kud.0
kud.1$wkt <- kud.1$wkt - colony$wkt[1]

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