Creating Shapefiles in R

后端 未结 2 441
谎友^
谎友^ 2021-02-06 02:29

I\'m trying to create a shapefile in R that I will later import to either Fusion Table or some other GIS application.

To start,I imported a blank shapefile containing al

相关标签:
2条回答
  • 2021-02-06 02:43

    Use rgdal and writeOGR. rgdal will preserve the projection information

    something like

    library(rdgal)
    
    shape <- readOGR(dsn = 'C:/TEST', layer = 'blank_ct')
    # do your processing
    shape@data = data.frame(shape@data, data2[match(shape@data$CTUID, data2$CTUID),]) #data2 is my      created attributes that I'm attaching to blank file
    shape1 <-shape[shape$CMAUID == 933,]
    writeOGR(shape1, dsn = 'C:/TEST', layer ='newstuff', driver = 'ESRI Shapefile')
    

    Note that the dsn is the folder containing the .shp file, and the layer is the name of the shapefile without the .shp extension. It will read (readOGR) and write (writeOGR) all the component files (.dbf, .shp, .prj etc)

    0 讨论(0)
  • 2021-02-06 02:48

    Problem solved! Thank you again for those who help!

    Here is what I ended up doing:

    As Mnel wrote, this line will create the shapefile.

    writeOGR(shape1, dsn = 'C:/TEST', layer ='newstuff', driver = 'ESRI Shapefile')
    

    However, when I ran this line, it came back with this error:

    Can't convert columns of class: AsIs; column names: ct2,mprop,mlot,mliv
    

    This is because my attribute data was not numeric, but were characters. Luckily, my attribute data is all numbers so I ran transform() to fix this problem.

    shape2 <-shape1
    shape2@data <- transform(shape1@data, ct2 = as.numeric(ct2),
    mprop = as.numeric(mprop),
    mlot = as.numeric(mlot),
    mliv = as.numeric(mliv))
    

    I tried the writeOGR() command again, but I still didn't get the .prj file that I was looking for. The problem was I didn't specified the coordinate systems for the shapefile when I was importing the file. Since I already know what the coordinate system is, all I had to do was define it when importing.

    readShapePoly('C:/TEST/blank_ct.shp',proj4string=CRS("+proj=longlat +datum=WGS84")
    

    After that, I re-ran all the things I wanted to do with the shapefile, and the writeOGR line for exporting. And that's it!

    0 讨论(0)
提交回复
热议问题