您的位置: 网界网 > 软件 > 正文

R语言与GIS实践:Shapefile导入与地图显示

2014年07月31日 10:18:41 | 作者:佚名 | 来源: | 查看本文手机版

摘要:1. R项目简介 R是一个开源的统计计算和图形编程语言和软件环境,广泛应用于统计分析和数据挖掘[1]。R项目遵循GNU协议,它的软件环境源码由C,Fortran和R写就。R可以运行在多个平台,包括各种Unix,Linux发行版本,Window和MacO...

标签
GISShapefile

1. R项目简介

R是一个开源的统计计算和图形编程语言和软件环境,广泛应用于统计分析和数据挖掘[1]。R项目遵循GNU协议,它的软件环境源码由C,Fortran和R写就。R可以运行在多个平台,包括各种Unix,Linux发行版本,Window和MacOS上, 国内有中科院、厦门大学、北京交通大学等多个镜像[2]。R是对S语言的一种实现,由Ross Ihaka 和 Robert Gentleman 所创建,R取之他们名字的首字母。R具有由用户贡献的大量的类库,能够处理各种科学计算的问题。

2.R与GIS

与地学问题相关的R类库也十分繁多,包括Spatial data,Maptools,RGdal等。 不过似乎StackOverflow的主站关于R在GIS的问题比GIS分站更为活跃。原因未知……之所以要使用R是因为R能够以Hadoop集成[3],希望利用R更高效地处理空间聚类问题。虽然Mashout也是一个很好的解决方案,但是感觉用户更加需要脚本式的问题处理工具。R的GIS的书籍比较少,基本都是以文档的形式存在,其中Applied spatial data analysis with R是一本挺好的教材。多使用Example命令和Google也是学习R的一个好途径。

3.Shapefile导入与地图显示

R语言中导入Shapefile是非常容易的,可以使用的包(+本站微信networkworldweixin),包括RGdal,maptools,PBSmapping等。在这里我们采用maptools和sp两个类库来实现地图数据的导入和显示。在R中心选择镜像并下载。

加载这两个类库,输入如下代码:

  1. library(maptools) 
  2. library(sp) 

读取shapefile文件,可以直接输入文件路径或者通过file.choose函数来选择文件,这里采用国家基础地理信息系统1比400万数据中的省界国界。

  1. vent.map <-readShapeSpatial(file.choose()) 

或者选择点、线、面类型输入

  1. point.mp <- readShapePoints(file.choose()) 
  2. line.mp <- readShapeLines(file.choose()) 
  3. poly.mp <- readShapePoly(file.choose()) 

注意,这个命令并不导入Shapefiel的Proj文件,所以导入的是无坐标信息的数据。

  1. print(proj4string(vent.map)) 

输出是:

[1] NA

查看shapefile属性,添加坐标信息

  1. summary(vent.map) 

输出是:

  1. Object of class SpatialLinesDataFrame 
  2. Coordinates: 
  3.         min       max 
  4. x 73.446960 135.08583 
  5. y  3.408477  53.55793 
  6. Is projected: NA 
  7. proj4string : [NA] 
  8. Data attributes: 
  9.      FNODE_           TNODE_           LPOLY_          RPOLY_          LENGTH 
  10.  Min.   :   1.0   Min.   :   1.0   Min.   :  1.0   Min.   :  1.0   Min.   : 0.0040 
  11. st Qu.: 433.0   1st Qu.: 432.0   1st Qu.:  1.0   1st Qu.:  1.0   1st Qu.: 0.0300 
  12.  Median : 876.0   Median : 880.0   Median :  1.0   Median : 65.0   Median : 0.0700 
  13.  Mean   : 927.6   Mean   : 929.9   Mean   :128.8   Mean   :210.8   Mean   : 0.5421 
  14. rd Qu.:1344.0   3rd Qu.:1344.0   3rd Qu.:204.0   3rd Qu.:327.0   3rd Qu.: 0.2350 
  15.  Max.   :2131.0   Max.   :2131.0   Max.   :925.0   Max.   :926.0   Max.   :16.7130 
  16.     BOU2_4M_      BOU2_4M_ID        GBCODE 
  17.  Min.   :   1   Min.   :    1   Min.   :26010 
  18. st Qu.: 447   1st Qu.:  219   1st Qu.:26010 
  19.  Median : 893   Median :26010   Median :26010 
  20.  Mean   : 893   Mean   :17260   Mean   :35583 
  21. rd Qu.:1339   3rd Qu.:26010   3rd Qu.:61010 
  22.  Max.   :1785   Max.   :61156   Max.   :99001 

添加坐标信息

proj4string(vent.map) <- " proj=longlat datum=WGS84"

显示地图

plot(vent.map, axes=TRUE, border="gray")

R就会弹出新的窗口显示:如图-1所示:

原文链接:http://www.cnblogs.com/ventlam/archive/2012/11/15/2771619.html

4.参考文献

[1]R (programming language) 2012 http://en.wikipedia.org/wiki/R_(programming_language)

[2]The R Project for Statistical Computing 2012

http://www.r-project.org/

[3]RevolutionAnalytics / RHadoop 2012 https://github.com/RevolutionAnalytics/RHadoop

[责任编辑:孙可 sun_ke@cnw.com.cn]