6 votos

Cargando un shapefile multipunto en R

Este problema sólo se ha planteado en la comunidad una vez, hace dos años, al mejor de mi conocimiento. Creo que es tiempo de plantear la cuestión de nuevo!

readOGR, desde el rgdal paquete, no puede manejar multipunto shapefiles, incluso a pesar de que se cargan bien en otros SIG paquetes como QGIS. Por supuesto, usted puede guardar el archivo como un único objeto de la parte (ver imagen de abajo) en un programa externo, pero lo ideal también sería posible hacerlo en R. por Favor vea el ejemplo a continuación.

multipart shp file in qgis

download.file("http://www.personal.leeds.ac.uk/~georl/egs/lnd-stations-multi.zip", 
              "lnd-stations.zip") # download multi part polygon
unzip("lnd-stations.zip") # unzip
lndS <- readOGR(".", "lnd-stations", p4s = "+init=epsg:27700") # load

OGR data source with driver: ESRI Shapefile 
Source: ".", layer: "lnd-stations"
with 2532 features and 27 fields
Feature type: wkbMultiPoint with 2 dimensions
Error in readOGR(".", "lnd-stations", p4s = "+init=epsg:27700") : 
  Incompatible geometry: 4

Después de realizar "Multipart a singleparts" en el QGIS Vector de menú (se muestra arriba) y guardar el archivo, se carga bien en R. probarlo:

download.file("http://www.personal.leeds.ac.uk/~georl/egs/lnd-stns.zip", 
              "lnd-stns.zip")
unzip("lnd-stns.zip")
lndS <- readOGR(".", "lnd-stns", p4s = "+init=epsg:27700")
plot(lndS)

-2voto

Parece estar funcionando con maptools. La carga de la fija shapefile como por el código:

download.file("http://www.personal.leeds.ac.uk/~georl/egs/lnd-stns.zip", "lnd-stns.zip")
unzip("lnd-stns.zip")
lndS.fix <- readOGR(".", "lnd-stns", p4s = "+init=epsg:27700")
plot(lndS.fix)

OGR data source with driver: ESRI Shapefile 
Source: ".", layer: "lnd-stns"
with 2532 features and 27 fields
Feature type: wkbPoint with 2 dimensions

Lo hace por su tamaño y estructura?

str(lndS.fix)
Formal class 'SpatialPointsDataFrame' [package "sp"] with 5 slots
  ..@ data       :'data.frame': 2532 obs. of  27 variables:
  .. ..$ CODE      : int [1:2532] 5520 5520 5520 5520 5520 5520 5520 5520 5520 5520 ...
<truncated>

Comparar con el original de datos multipunto, pero cargado con readShapePoint (que carga sin errores):

library(maptools)
download.file("http://www.personal.leeds.ac.uk/~georl/egs/lnd-stations-multi.zip", "lnd-stations.zip") # download multi part polygon
unzip("lnd-stations.zip") # unzip
lndS <- readShapePoints("lnd-stations.shp")

#Look at it
str(lndS)
Formal class 'SpatialPointsDataFrame' [package "sp"] with 5 slots
  ..@ data       :'data.frame': 2532 obs. of  27 variables:
  .. ..$ CODE      : int [1:2532] 5520 5520 5520 5520 5520 5520 5520 5520 5520 5520 ...
<truncated>

Parece que han cargado bien, pero son realmente idénticos?

identical(lndS, lndS.fix)
FALSE

No ... pero tienen las mismas variables y el mismo conjunto de coordenadas XY:

identical(lndS@coordinates[[2]], lndS.fix@coordinates[[2]]
TRUE

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