• R语言地理空间分析(一)读写空间数据文件文件


    读取shp文件


    R包:sf
    数据来源:.shp

    library(sf)
    #st_read()函数可以读取.shp文件
    data<-st_read("Income_schooling.shp")
    

    注意:文件路径上不要出现汉字和空格,否则读出的空间数据会出现乱码
    查看空间数据data的前几条记录

    head(data,n=4)
    
    # Simple feature collection with 4 features and 5 fields
    # Geometry type: MULTIPOLYGON
    # Dimension:     XY
    # Bounding box:  xmin: 379071.8 ymin: 4936182 xmax: 596500.1 ymax: 5255569
    # Projected CRS: NAD83 / UTM zone 19N
    # NAME Income   NoSchool NoSchoolSE IncomeSE                       geometry
    # 1   Aroostook  21024 0.01338720 0.00140696  250.909 MULTIPOLYGON (((513821.1 51...
    # 2    Somerset  21025 0.00521153 0.00115002  390.909 MULTIPOLYGON (((379071.8 50...
    # 3 Piscataquis  21292 0.00633830 0.00212896  724.242 MULTIPOLYGON (((445039.5 51...
    # 4   Penobscot  23307 0.00684534 0.00102545  242.424 MULTIPOLYGON (((472271.3 49...
    

    geometry为多边形的顶点信息
    进行可视化表达:

    #得到各个属性的可视化表达,若属性值为连续变量,则会自动 调用冷暖色调来做数值区分;如果是类别变量,利用不同的颜色区分
    plot(data)
    

    数据框创建空间数据类

    有时候我们没有.shp文件,只有点的信息数据。这时候可以利用st_as_sf函数进行创建空间sf类。

    df <- data.frame(lon = c(-68.783, -69.6458, -69.7653),
                     lat = c(44.8109, 44.5521, 44.3235),
                     Name= c("Bangor", "Waterville", "Augusta"))
    
    #coords=设置坐标,crs=设置坐标系,4326代表WGS84坐标系
    point<-st_as_sf(df, coords = c("lon", "lat"), crs = 4326)
    point
    

    读取栅格文件

    R包:raster

    library(raster)
    img<-raster("elev.img")
    

    sf类转换为其他空间数据类

    转换函数as()

    #data为sp类
    data.sp<-as(data,"Spatial")
    class(data.sp)
    #[1] "SpatialPolygonsDataFrame"
    
    #将sf多边形类转换为owin类
    #需要maptools包
    library(maptools)
    data.owin<-as(data,"owin")
    
    #将sf点数据转换为ppp类,ppp类和spatstat包关联
    #需要先把sf类转换为sp类,然后将sp类转为ppp类
    #需要maptools包
    library(maptools)
    data.sp<-as(data,"Spatial")
    data.ppp<-as(data.sp,"ppp")
    

    如果sp类转为ppp类时,出现如下错误:

    Error in as.ppp.SpatialPointsDataFrame(point) : Only projected coordinates may be converted to spatstat class objects

    ppp类与spatstat包相关联,该包是在笛卡尔投影坐标系下进行运算的。错误消息是:地理坐标系不能在该包下运算,因此需将地理坐标系转换为投影坐标系。

    data.utm<-st_transform(data,32619)#st_transform()表示坐标系统转换,32619代表epsg代码,utm投影坐标系
    data.sp<-as(data.utm,"Spatial")
    data.ppp<-as(data.sp,"ppp")
    

    sp类转换为sf

    st<-st_as_sf(sp)
    

    空间数据文件导出

    st_write(data, "shapefile_out.shp", driver="ESRI Shapefile")
    
  • 相关阅读:
    html bottom html submit按钮表单控件与CSS美化
    Extjs4.0以上版本智能提示的方法
    Delete from join 用法
    vs2015开发Windows服务
    -bash: Chmod: command not found
    使用OpenPop.dll开发读取POP3邮件程序
    邮箱学堂:SPF详解
    js中escape对应的C#解码函数 UrlDecode
    json字符串CSS格式化
    Sql server not in优化
  • 原文地址:https://www.cnblogs.com/cqy-wt1124/p/15098623.html
Copyright © 2020-2023  润新知