科学网

 找回密码
  注册

tag 标签: 空间数据

相关帖子

版块 作者 回复/查看 最后发表

没有相关内容

相关日志

R语言读取空间数据以及ArcGIS中OLS工具回归结果可视化R语言版
GISdsq 2017-8-30 15:39
前面已经介绍过R语言读取excel的方法了,当然读取数据来说,个人还是推荐csv或txt存储(针对小数据量)。大数据量的数据的话建议还是用数据库,此外也可以考虑data.table包读取,这个包也是个神包,后面学习完可能来谈谈。这个都是题外话,今天主要目的还是来介绍R语言读取空间数据的方法。主要是之前有同学问过读取的方法。我就顺带整理下,另外虾神今天刚发了一篇关于ArcGIS的OLS工具回归结果可视化内容,并贴出了Python版可视化的代码(文末贴链接),所以对应写个R语言版。 本文介绍的空间数据类型主要包括了三种:矢量数据(以最普遍的的shapefile为例),栅格(raster,这个格式就比较多了,不过大同小异),地理数据库(geodatabase也就是.gdb文件,Esri的数据库)。 1.矢量数据 矢量数据其实主要包括了三类:点,线和面,能读取的方式有很多种。下面列举几种。 先从点线面分别读取的方式来看,主要包括readShapePoints(读取点),readShapeLines(读取线要素),readShapePoly(读取面要素)。这几个函数都是maptools包里面的。所以第一步如果没安装的话请先安装。 install.packages(‘maptools’) library(maptools) 接着定位到我们所需读取数据的工作路径上,然后就可以开始读取对应的数据了。 fujian-readShapePoints(‘fujian.shp’) nanhailine-readShapeLines(“linesnation.shp”) province-readShapePoly(“province.shp”) 如果不需要什么其他操作,读取数据只需要填入文件名字作为传入的参数即可。这几个函数完整的参数大体差不多,主要包括下面几个。 fn——文件名,一般能读的是.shp文件,.shx文件和.dbf文件 proj4string = CRS(as.character(NA))——坐标系的CRS字符串,关于坐标系的问题,这里不详讲。其实就是一个坐标系对应一个ID,把对应ID读进去,按照对应坐标系读取,这个是遵循规范的。 一般前两个参数用得多。后面这些只介绍这三个函数共有的参数,其他参数就请参照帮助文档。 verbose = FALSE——默认为False,这个主要是在读取数据后是否返回读入要素的类型和数量。 repair=FALSE——这个参数的话,主要是考虑到.shx索引文件太大,默认False会跳过读取数据,TRUE的话,会进行内部修复,读取这类文件。 而maptools同样提供了另外一个函数readShapeSpatial,这个就可以读以上的三类要素。 fujian-readShapeSpatial(“fujian.shp”) 当然除了maptools,还有其他包可以读取,事实上,maptools提供的函数读取只能传输较差分辨率的空间数据,所以更推荐的是用rgdal包的OGR驱动程序来读取。熟悉开源GIS的同学对GDAL会比较熟悉,事实上rgdal就是GDAL的R接口(当然没装还是要先装,方法同上),读取方式如下,参数也是传入文件名即可简单读取,不过这个参数可以读具体文件也可以读文件夹名。对应上面proj4string也有一个参数p4s,其他参数参照文档。 fujian-readOGR(“fujian.shp”) 此外还有shapefiles包也可以进行读取。读取方式(可以读取shp和shx,shx读取结果为空间索引)如下: fujian-read.shp(“fujian.shp”) 矢量数据读取主要通过以上几种方式就可以实现。 2.栅格数据 栅格数据的话,格式还是多种多样的。这边主要提供几种不同格式的读取方法(.img文件,.tif文件,ASCII码文件和.asc文件)。栅格数据读取主要是基于rgdal包,读取方式如下,img和tif都可以通过readGDAL直接读取。 co2-readGDAL(“CO22008.img”) co2-readGDAL(“CO22008.tif”) 这里面的参数我就不详细介绍了,主要解释几个个人认为比较重要的参数。有兴趣的同学可以去查询官方文档。 band——波段数,单纯栅格无所谓。做遥感影像数据处理时就会遇到需要几个波段的问题,如果缺省的话,是全部导入。 p4s——等同于上面的proj4string type——像素深度:8bit,16bit等 除了rgdal之外,也可以通过raster包进行读取.img文件和.tif文件,这个更方便些。读取方式如下 co2-raster(“CO22008.img”) co2-raster(“CO22008.tif”) 当然栅格数据还有较为普遍的以ASCII码文件存储的方式。这里也提供下如何读取ASCII码文件,这个方法是基于sp包的,所以需要先安装和载入sp包,这个包是R语言空间数据的基础包,指定了空间数据库的方法和对象。 co2-read.asciigrid(“co22008.txt”) 当然ASCII码文件可能是以.asc文件存储的,只需把后缀名改成.asc即可读取。 栅格的读取大概就如上。 3.地理数据库(Geodatabase)数据读取 Geodatabase是Esri在ArcInfo8之后引入的一种全新的面向对象的空间数据模型。具体简介可以自己搜索。也就是说Geodatabase是Esri官方提出的一种数据库,没有ArcGIS是无法创建Geodatabase的。读取的话其实也相对麻烦些。目前看到的只有Esri官方给出的一个R包可以读取Geodatabase数据。R语言与ArcGIS的结合在未来将很有潜力。目前Esri已经在github上开源了部分工具,2015年全球用户大会上也秀出了R-ArcGIS的Sample工具。 具体开源地址: https://r-arcgis.github.io/ 本次用来读取Geodatabase的包就是R-ArcGIS中的一个关键包——arcgisbinding。这个包目前没有在cran上,建议下载之后离线安装。下载地址: https://github.com/R-ArcGIS/r-bridge/releases/tag/v1.0.0.125。 这个包的官方文档可以从官网下载,也可以从下面的连接下载。 http://download.csdn.net/detail/esa_dsq/9823403 具体安装,同时安装完之后需要先确认ArcGIS的许可(要求应该是ArcGIS10.4以上的版本或者ArcGIS pro1.1以上),具体代码如下: install.packages(“G:/GIS/Esri/ArcGIS Plugin/arcgisbinding_1.0.0.125.zip”, repos = NULL, type = “win.binary”) arc.check_product() 读取的方式稍微复杂些,用到了arc.open,arc.select,arc.data2sp三个函数,arc.open是打开gdb文件里的featureclass(支持的格式还包括layers等),arc.select是将打开的featureclass按照需要的字段和sql读成R语言中熟悉的数据框,arc.data2sp是将数据框转化成空间要素。使用方式如下。 china-arc.open(“china.gdb/province”) chinapop-arc.select(china,fields = c(‘Pop_Rural’,’Pop_Urban’,’POPU’)) chinapopsp-arc.data2sp(chinapop) 当然读取完了我们还是要来可视化一下。用的是spplot函数,这里就不展开讲了,只贴出图(当然只是随手画的,色带啥的都没调)。 4.ArcGIS中OLS工具回归结果可视化(R语言版) 最后的最后。对应虾神文章的Python版本ArcGIS中OLS工具回归结果可视化,写个R语言版本。 载入包如果没安装,请先安装,如果已安装,请注释install.packages(“…/arcgisbinding_1.0.0.125.zip”, repos = NULL, type = “win.binary”)…表示arcgisbinding离线包的路径install.packages(“car”)install.packages(“GGally”)install.packages(“ggplot2”) library(arcgisbinding) library(car) library(GGally) library(ggplot2) 设置工作路径 setwd(“F:/R/demo/readdata”) 检查ArcGIS产品许可 arc.check_product() 读取数据并将数据转换为数据框 olsdata-arc.open(“china.gdb/olstest”) olsdata olsdataframe-arc.select(olsdata,fields = c(“gdp”,”Index_2000”,”Pop_Urban”,”POPU”,”PRODUCT”,”Estimated”,”Residual”,”StdResid”)) 把因变量和自变量单独分离出来并用car包里的spm函数绘图 variableframe-olsdataframe spm(variableframe,diagonal=”hist”) 感觉似乎不是很好看,换个方式。 利用GGally的ggpairs函数画图 ggpairs(variableframe,upper = list(continuous=”cor”),lower = list(continuous=”smooth”),diag = list(continuous=”barDiag”)) 绘制标准残差的分布,用ggplot2画图 a-ggplot(olsdataframe,aes(x=StdResid))+ geom_histogram(aes(y=..density..),binwidth = 0.5,colour=”white”,fill=”grey”)+ geom_line(stat=’density’,colour=”#FF6666”) a 绘制标准残差和观测值的散点图 opar-par(no.readonly = T) par(fig=c(0,0.8,0,0.8)) plot(olsdataframe StdResid,col=”grey”,pch=16) par(fig=c(0,0.8,0.7,1),new=T) hist(olsdataframe$gdp,col=”grey”) par(fig=c(0.75,1,0,0.8),new=T) hist(olsdataframe$StdResid,col=”grey”) 主要是为了和虾神最后的效果类似,事实上,在读取完数据框之后,纯属散点图矩阵可视化方面的内容。 最后贴出虾神的公众号和博客。 微信公众号:虾神daxialu——以推广空间分析和空间数据挖掘为己任,致力于在GIS界传递分析价值。 虾神博客原文地址:《白话空间统计二十三:回归分析番外-ArcGIS中的OLS(三)》 http://blog.csdn.net/allenlu2008/article/details/70456024
个人分类: 技术干货|3752 次阅读|0 个评论
大数据时代的空间智能已到,你在哪里?
热度 14 janenana 2015-10-21 08:37
上周我在美国华盛顿DC参加一个ESRI的meetup聚会。ESRI是全球最大的做空间分析和空间计算的公司,其中一个为大家所熟悉的产品就是ArcGIS,专门的地理信息系统分析工具。另外和大家解释一下什么是meetup? meetup.com是一个聚会网站,不是我们说的常识里的聚餐或者团购(但是其实也差不多),是由共同爱好的兴趣的人参加一个特定的meetup group,大家定一个主题然后聚在一起。一般由特别活跃和愿意结交新朋友的人发起,都是免费的聚会,主要是起到一个社交和networking(扩展人脉)的作用,看到有同个兴趣的人都在做什么,同行的牛人都做到什么程度---的确是特别激动人心的事情。我平常去的meetup都是素人,大家见面打招呼,自我介绍,听报告,或者介绍我们领域里面最新的话题最热的研究手段什么的。但是这次,ESRI的聚会弄得特别大特别“豪华”。 在这里最想要和大家分享的是在北美政治最活跃的地方,空间智能已经发展到什么程度了。 说到空间智能,其实大家每一天都在使用就是百度地图,bing地图还有谷歌地图。比如说你的公交车大概什么时间到这个站点,你要到一个餐厅见朋友最快的开车路线是什么?中国90%以上的高速路都是收费的,然后大家都在找10%的不收费的路线,大家都打开过地图选择过不收费路段什么的。其实空间智能就是这么简单的一个东西。现代的社会,每一个人都会用手机(忘了在哪里看的新闻说今年全球第一个卖出去的手机sim卡超过了全球总人口数,是不是很惊悚),未来的某一个时间段里面每一个都会使用地图---这就是空间智能和空间计算的魅力和能力。 ESRI聚会上请来了三个机构代表给我们讲使用地图和空间智能的魅力。 第一个是协助北美警务系统寻找失踪儿童的空间分析公司。这个空间分析公司做的工作原理非常的简单,第一他们用电脑和地图替代了警察们传统使用的黑板画地图功能;第二他们把小孩失踪24小时之内所有证人的证词和地点放在电脑的地图上(这里使用的当然就是ESRI的ArcGIS);第三把出勤的警犬都绑上GPS(空间定位系统)然后实时传输数据到电脑的地图上,这样,控制着电脑和地图的人就可以直接和地面出勤人员沟通哪些地方已经调查过哪些地方没有。这个地理信息系统的运用,除了省时省精力---避免不再同一个时间地点做同样的工作。另外一个好处是北美特别多热心的人想要帮丢失孩子的父母找回孩子,所以可视化的地图也可以告诉大家哪些地方已经搜索过,那些地方没有,哪些地方又是重点搜索的地方。这是一个非常智能的工作,后台的操作是我们说的空间智能手段。这个空间智能管理系统同时也可以通过分析过往的类似的案列,研究丢失的小孩的案列分析出可能的嫌犯,可能的去向,并且在全国水平内连续上能够帮得到忙的警察和警务系统。 第二个案例是讲美国的一个负责入户调查的卫生部门现在也开始使用地理信息系统(他们是自己开发的系统,没有使用的ESRI的产品)。这个地理信息系统里面把入户调查所需要的表格和地理信息系统结合在一起。这个也是非常聪明的设计。这个卫生部门每年都要做很多入户调查,他们的难处在于每年调查回来做内业的时候工作都非常的繁重。因此现在直接安装在ipad和手提电脑上,就可以入户调查。调查的数据实时反馈回到总部,总部通过前几年的工作重点也可以实时提醒调查的工作人员工作重点是什么。比如他们举得一个例子:去年有一个地方的人抱怨隔壁邻居家私设了一个养鸡笼没有合理做好卫生工作污染了周边环境,给周围的卫生埋下隐患,上一年已经通报整改。所以今年总部的人在调查人员都该地方调查的时候,可能会让入户调查人员特别调查树林边上的那个鸡笼还在不在之类的。然后现场调查的人员自己也可以在系统上做笔记,和现场调查的空间数据联系在一起,这样回来做内业写报告的时候就可以把笔记调出来。 第三个案例是管理华盛顿DC的所有市内绿化树木的一个公司。大家到过DC的人都知道整个DC的森林覆盖率非常的高。这个公司的工作就包括了:1,调查所有DC市内特别是人流比较密集的地方的树健康状况;2,砍伐、重新种植和整理树木枝条等等这些工作。接到群众的举报电话,类似于那个树枝老了要断了,邻居家私人的树对路人和自己造成困扰等等都可以请他们出门解决。他们的工作也是用了地理信息系统和空间分析,比如约翰负责C区的500棵树,那么如果接到电话他就要出门工作解决问题,所有的工作内容都在地图上对外开放。约翰本来只需要用72小时就可以解决的问题,如果100个小时还没有解决那么这个信息就会在对外公开的地图上显示。这是一个实时监督的工作。讲座现场上大家都觉得这样给这个公司的工作带来了不少压力,比如你解决不了这个问题,那么群众的举报电话就会一直显示在地图上。但是主讲人称现在很多华盛顿DC的政府部门都会考虑到引入他们的这个空间管理手段。 看到这样的,也会让我想为什么在国内做这些工作困难重重? 首先要完成这些工作需要特别好的空间数据,我见到的国内做地理信息系统的同事们都非常的聪明和厉害,技术和学习能力上都不会比北美的这些精英们差多少。但是我们做不了太多工作。一帮聪明人没有作为的背后其实是数据的开放问题。我认为在国内要做数据分析工作必须有特别好的人脉,但是大家都知道特别geeks(偏重技术的奇客)他们愿意花在人脉上的时间精力都很少。美国的调查、统计都是公开的,而且大部分的这些统计数据都是有定位信息的,他们的地理空间信息也都是公开的。美国的统计局现在还有一个工作是提供给small business(个体经济)经营者一个空间选址的工作包括写字楼选址餐馆邮局机场等等的选址----哪一个地方是开展这个工作最合理的地点。比如丽莎想要开一个餐馆只卖好咖啡和健康、绿色餐饮,目标消费人群是中产阶级的白领们。那么利用空间选址可以就把区域人群平均收入,消费水平,交通状况,通达度,周围类似的餐馆数目等等作为分析因子,在全国各地或者某一个城市选一个特别合适的地点。在国内做不了这样的工作主要是数据的公开程度。 地图和空间信息是一个特别强大的沟通手段,前面说了未来的每一个人都会看地图。所以地图的沟通能力强而有力。国内做不了这个工作的一个原因是管理部门认识水平还达不到这个程度。另外也是因为空间数据和地图也特别容易暴露问题管理单位的不作为。比如我们说一个城市的土地管理,本来规划的时候说好这个地方不盖楼房的,但是后来就盖上了。如果这些信息公开了,群众一看就知道哪个部门没有做好自己分内的事情。还有您说您的城市森林覆盖率是30%但是从卫星图像上一分析连10%都没有。空间智能和空间分析工作的开展和繁荣,很大一个程度上会增加政府和管理部门的工作量,和被监督的压力,但是刚好也可以让群众更好的监督工作的开展。这些都是双赢的模式。说真的,我看不到任何不做的理由。可能会有人说万一空间数据落入坏人手里怎么办,问这个相当于这个航空公司飞机发生空难了那是不是我们所有的人都不做飞机了。空间数据其实就是个大数据,要想从大数据中获得有用的信息是一个特别庞大的功能,首先坏人要有一批人格不健全还有迫害能力,而且数学统计和地理信息和编程能力特别厉害的人。大家想一下你出门被闪电击中的几率是多少,大家只要计算一下这种坏人出现的几率还是很少的,因为现实生活毕竟不是电影。 另一个我现在知道的空间智能是智能城市,现在北美已经开始使用智能城市中的一些方面。其中的一个例子是下雨洪灾来了,一方面相关的部门可以模拟这样的降雨量可能的洪灾范围是哪里,强度怎么样---这个是模型的部分。是个模型都需要验证,那么现在的验证手段是通过手机智能定位和社交网络(social media),比如facebook,instagram还有twitter,你发的信息和照片都有卫星定位(GPS),那么这个洪水监控部门就可以通过某一个监控时段内社交网络发布的信息和照片来验证模型。有人会问:万一有人恶意用错误的卫星定位数据来干扰验证怎么办?如果大家学过统计的话,这种信息叫做异常值都不会对整个验证过程产生影响。毕竟大部分群众的眼睛和三观还是正的,再多的五毛党都会被揪出来,对吗?! 未来的社会是一个空间智能的世界。而且人人都是其中的一个信息决策者,比如当时尼泊尔地震发生的时候,全世界有一大批的志愿者没有选择全部飞到尼泊尔从废墟中刨出遇难者而是选择一个叫做open stree map和遥感数据分析的志愿者工作。绘制可能能够帮助到救援队伍的救援路线,绘制可能在未来余震之下再次发生灾害的地方。open stree map是每个人都可以绘图的地方。这些信息数据的公开其实是对每一个人都有好处,毕竟人类社会的大部分人都希望世界和平有爱,人人各尽其职,对吗? 甘地说过:First they ignore you, then they laugh at you, then they fight you, then you win。翻译为:他们首先忽视你,然后嘲笑你,然后和你斗争,最后赢的是你。中国大部分的人选择不作为和做一些在自己comfort zone (安全感)之内的事情,而且关注的东西都很少有改变周围改变环境的心和行为,是因为我们都认为我们生活在一个繁荣富强的社会,另外一个是“不敢”。就是甘地说的这个,如果要做和别人不一样的工作,第一个阶段别人忽视你的作为还可熬得过去,但是到了嘲笑这个阶段就是过不去的坎。所以我倒是希望中国未来更多的年轻人能够坚持自己的想法,找到志同道合的同伴,然后社会更宽容一些。大家也多一些包容和诚信。这样空间智能产生也是更多的正能量。让人人各尽其职。 我更多的英文空间信息,地理信息博客网站:geoyi.org.希望收到大家更多的批评和指正。
个人分类: 工作博文|9591 次阅读|21 个评论
[转载]空间分析与一般数据分析的区别-王劲峰
wanyou9 2010-4-16 14:28
中科院地理所王劲峰研究员认为,地理空间信息与一般信息从数据结构来讲是不同的,前者是时空坐标数据;从数据分析与处理来看,空间数据是相互关联的,时间序列空间数据具有不可重复性,空间信息维的加入使数据量大大丰富,能够揭示数据表面背后的空间格局机理,是地形分析、地图和交通等分析的唯一手段,可以进行时空多维转换,在优化运筹领域加入空间维能大大优化结果。 摘自:《北京大学数字中国研究院简报-香山科学会议第303次学术讨论会专报》
个人分类: 生活点滴|4506 次阅读|0 个评论

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-5-12 02:58

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部