点击上方“GIS慧” 可以订阅哦!


深度好文

字数:4743

建议阅读时间:5分钟



学GIS的都知道数据是GIS的血液,大数据时代GIS的优势和价值充分体现出来

后续更新我们要学习什么?
作为GIS专业我们核心的东西,地理信息系统,空间数据结构,空间数据类型,各种空间分析算法,数据压缩,空间索引,空间聚,地图学 地图投影,地图渲染等等,这些是我们学GIS最根本最基础的东西有了这些东西作为基础我们不管做什么都会游刃有余。不过懂了这些我还需要一个前提就是精通一本语言,c,c++,java, python,js着样我们就可以随意做想做的事情了。
看看当下我们一些学GIS的学生在学生在干什么,学习某某软件,学习利用某某api进行webGIS开发,废弃gis核心的东西。问一下道格拉斯普克算法没听过,web瓦片地图切片原理,R-tree等等完全没听过…… 不是成熟的GIS平台不好,但是我们在学习过程,不直接考虑gis各种空间分析功能的原理,仅仅是用别人的工具,这样到头来我们仅仅学会一个软件。学会这样技能我们获取在几年前可以找个比错的饭碗,但是互联时代,大数据时代就未必了。
移动互联网时代我们获取大量的用户位置信息,用户属性信息,对这些数据进行时空分析进而更好地挖掘用户行为,为用户和提高个性化推荐服务,亦或研究人口迁徙,城市发展状况。对与这些数据的分析作为具有地理学分析背景的学生我们有很大优势去做,然而大多数人都作不了。
现在确实很多高校GIS相关专业都在做空间大数据相关的研究,很多技术水平还是停留在使用用软件的水平。
我就接触很多这样的例子。
给某重点高校博士研究生20G含有空间信息的文件数据,问我怎么用excel,arcmap打开,想做语义分析(其实仅仅是做个词频统计罢了)问我有什么软件可以做,当时确实很无语……于是回复,你还是学一种编程语言吧。

为了适应数据量飞速膨胀的历史趋势,我们迫切需要海量数据的获取技术(Data Capture)、海量数据的存储技术(Data Curation)、海量数据的分析技术(Data Analysis) 和数据可视化(Data Visualization)的根本性突破。引自大数据领导干部读本(第六页)。

上面四种技术是大数据时代我们的迫切需要解决的问题,GIS数据就是天生的大数据,并且包含空间信息和时间信息。我们学习GIS应该向这个方向学习,并且GIS这几个方便有着举足轻重的地位,我们的要将的地理学思维,空间思维融入到大数据研究和大数据应用中。
下面从上面四个方面讲诉我们如何去学习
数据获取
作为个人我们只能是通过一定的渠道的去收集数据,很多GIS的学生在抱怨我们没有数据,没法去搞相关研究。虽然我国政府的数据开放进展比较迟缓,但是还是可以获取一些数据的,像空气质量数据,气象数据,遥感数据国外国内都有开放的数据像Modis,高分一号,环境星数据我们都可以免费获取的。除了这些数据我们还可以微博数据,大众点评数据,房价数据等等这些数据基本都有很多空间属性,
这些数据我们都是可以的获取的,但是据我所知很多GIS的学生的没有这个技术去获取这些,也不能快速发现一些可获取的数据源,像bat有时候会通过某些应用释放出很多有价值的数据,像腾讯的宜出行数据,百度迁徙数据,包括百度高德的地图poi都是可以获取的。我们除了要学会数据的获取技术,还能够及时的发现一些可获取的有价值的数据,发现完了机会就没有了。

获取数据最管用的还是爬虫了
1.搞爬虫首先要了解爬虫的原理,简单的来说就是用程序代替我们手工访问网页,并获取网页的数据。
2.搞爬虫需要对web网页有一定的了解如DOM结构,http协议,cookie等等
3.去写简单的爬虫的话想对比较简单了,很多成熟的包和库可以帮我们很轻松的完成

  • python 我们可以用urllib, scrapy  BeautifulSoup 

  • nodejs 我们可以 cheerio ,request 用node写爬虫的一个好处是某些在前端加密的数据,可以直接把加密算法放在后端来用

  • shell 命令 wget  curl 命令下载数据也是相当高效。

对于需要的大量抓取得数据像大众点评获取全量数据我的话我们可能就要搞代理,想快速的话我们还需去搞分布式爬虫。
当然爬虫除了获取数据我们还可以搞很多有意义的事情……
作为GIS学生无论是在做科研还是做应用做系统数据的获取能力是基本技能,为我们做GIS的补充源源不断血液。
答主也是个数据控,基本见有用的数据先抓下来再说。

暂时写到这里,有时间继续向下写
===============
数据存储
数据存储包括我们的获取的数据的存储,可以用数据库存储,文本存储
海里数据存储往大了讲就是海量数据的分布式储存系统这块东西的单纯的使用还是非常简单的
遥感数据存储,遥感数据不同现有的文本大数据,遥感数据如何更好的管理,如何在hadoop中存储组织这些数据目前没有比较成熟的方案。
还是说一下我们日常要用的数据储存吧,
其实很多数据最原始的是以文本形式存储的
空间数据库我们可以使用 postgresql+postGIS,Mogodb
postgresql+postGIS 我们基本可以完成所有的空间查询,空间查询功能,Mongdb同样也只支持空间查询功能
同样海里数据分布式 Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。
数据入库之前有个很重要的工作就是数据清洗,无论我们是通过爬虫爬去的数据还是自己生产的的数据,数据往往有着不同的来源,包含的很多脏数据,数据只有清洗才能进行入库,包括数据分析的过程我们同样要对数据进行清洗。数据清洗需要用哪些技术讲在数据分析环节讲述。

作为GIS的学生的确实使用数据库库包括空间数据库,需要掌握sql语句,还需要了解空间索引,空间索引不仅仅在数据库中在其他方面许多用处。
数据分析
数据分析才是我们通过数据发挥它最大价值的方法。
首先说一下数据清洗,作为数据科学家工作中最好时的恐怕就是数据清洗了,高效率的清洗方法为我们提供了很大便利。
数据清洗的利器
shell:  awk,uniq,cat,head,sed,sort 
python:pandas
无论我们是通过爬虫爬去的数据还是自己生产的的数据,数据格式基本都是不同统一的。
数据分析的首要任务是数据清洗

数据分析中最常用的方法就是分类,做为GIS学生其实我们已经学了很多数据分析的方法,像监督分类,非监督分类 最邻近规则的试探法、K-means均值算法、迭代自组织的数据分析法(ISODATA)等。判别分析、最大似然分析、特征分析、序贯分析和图形识别等。
这些我们在使用遥感的软件的用的相当娴熟,但是我们不能真正的了解这些算法和为什么要用这个方法。真是觉得在学习过程中直接学习如何使用软件,其实把我们给害了。大数据时代我们还能用软件处理这些数据吗……
卫星遥感数据,气象数据,地形数据,无人机和地面传感器采集的土壤湿度,温度等信息综合进行分析为精细化农业提供数据支持。
空间数据分析,GDAL,GEOS,OSG等开源库,还包括跨平台的GIS软件的QGIS 会我们的数据分析带来很大便利。但卫星数据就包括来自不然卫星传感器,不同时像的,不同空间分辨率,不同波段等等不同的数据融合成一种统一可用的数据,利用这些开源库加上我们专业的背景知识能够快速的得出准确的分析结果。

对于像参加比赛学习的同学来说 可以看看  Google Summer of Code  https://www.google-melange.com/gsoc/projects/list/google/gsoc2015 OSGeo - Open Source Geospatial Foundation 每年都空间数据相关的题目不仅可以学技术,还可以赚美刀。
python scikit-learn 基于NumPy, SciPy, and matplotlib构建的数据分析库,包含了数据处理降为=维,各种聚类,分类算法……
移动智能设备是获取位置信息更加便利,对时空数据挖掘可应用于人口 出行,旅游,物流,选址等等,政府决策方面的应用就更不用说了。
数据分析很多是和数据可视化并行的,可视化可应用于分析前和分析后,
Python中有许多可视化模块,最流行的当属matpalotlib库。我们也可选择bokeh和seaborn模块。
这里举个师弟的例子,一个师弟无论在技术实力和科研实力都是相当不错的本科就已经发表了高水平的SCI,但是当时的各种图表都是arcmap,excel,等等出图软件,接触过这些python的出图可视化工具后无论地图还是图表都是敲几个命令的事情。


GIS还有一个方向就是遥感数据分析,遥感数据更是是天生的大数据,目前遥感数据分析基本还是停留在学术界,政府方面会有一些简单的应用,但是应用技术水平很多事情都是靠人工去完成。当然遥感数据商业化发展还在缓慢进行中,我认为一些技术的革新商业化推动的比较快。
基于深度的学习的遥感的数据分析,另外地块识别,道路识别,秸秆焚烧识别都是通过的通过对遥感数据的分析来的,这些技术你还能通过通过arcgis,envi去搞吗。
未来遥感数据分析肯定是各种深度学习技术,数据挖掘技术来完成的,理论人眼可以识别的东西的,用计算机都可以完成的,遥感大数据有待进一步发展,从而真正的应用到农业,环境,国土等相关领域。
同时海量的遥感数据分析挖掘单机是不能够处理,利用hadoop,spark去分析处理遥感数据在国内没有几家吧。
我司基于遥感数据,气象数据,地面传感器监测的数据综合分析的一些结果,在对遥感卫星数据采用深度学习技术信息提取已有很多大突破具体进展不宜过多讲述。
                  基于遥感数据分析技术秸秆焚烧着火点结果图

雾霾预测图

                                        从气象角度对地块进行综合分析

农作物生长监控
近两年来基于GIS的时空数据分析已经开始大众化,应用在我们的日常生活中,然而基于遥感数据分析应用还没有真正的商业化大众化,这也需要我广大GIS专业学习努力推动啊。
数据可视化

这里可是可视化主要讲的web前端的可视化的。Web前端可视化比我们在数据分析中可视化化中有更高的难度,需要考虑到大量数据的时时传输,还要去实现用户交互。
做web可视化必须有前端基础,html,css,JavaScript,是必须需要掌握的。作为GIS背景的可视化工作更多的是去展现的海量的空间数据,数据以地图为载体进行展示。可视化同时需要较高的审美,配色对可视化至关重要。
说一下这些开源可视化工具,
http://leafletjs.com/leaflet,D3.js - Data-Driven Documents d3

数据可视化用GIS的技术:海量的数据的可视化,需要解决的最大问题解决数据量的如何以最少量的数据做出最好效果的可视化。

对于重交互的方法可视化我们采用对数据进行抽稀,具有GIS基础我们知道影像金字塔,地图瓦片,空间分层,平面分块,基于这些原理我们我可以做到对每个层级进行基于像素聚合压缩。相比这些没有这些GIS基础的他们估计想到仅仅的是随机取样了。对于线状数据和面状数据就可以利用道格拉斯普克法进行抽稀。
矢量瓦片技术,动态矢量瓦片
对于数据量巨大,抽稀也不能够解决,我们就需要考虑后端进行地图渲染了,后端渲染包括一次性渲染和时时渲染,这有涉及的数据存储技术和空间查询技术。
后端渲染我们可以mapnik,node-canvas 
现在做可视化的没有地图形式的展示的都不好意思说自己是搞可视化的。
同样空间的少量的数据像空间插值方法,
有时候前端也可以进行空间运算, 
Turf.js 提供大量的空间算法

  1. svg d3.js,leaflet都是采用svg进行图形可视化,使用svg可视化可交互性好,对于大量数据而言需要创建和操作大量dom效率较低。

  2. canvas 基于像素的绘制的技术,在大数据量可视化渲染速度较快,不用进行大量dom,但同时又有一些弊端,同时canvas的事件也是基于像素触发我们很难确定鼠标滑过了那些要素。canvas是二维平面坐标,我们GIS的地图一般也是而我平面。我们对canvas上面绘制的图形建立二维索引就可以快速找到鼠标经过要素,解决canvas对海量数据可视化的交互问题。这就用GIS所擅长的空间索引知识 geohash,R-tree.

  3. webgl 三维可视化是未来发展的一个趋势,VR要带来更好的体验也离不开三维的交互和展示。three.js是个能够让我们更加方便创建三维应用的js库

强调一点可视化不是仅仅对数据展示,更多是可视分析,同一个可视化不同的受众讲出不同的故事。
上几幅可视化作品图,点击看全图效果更好:

想问下一了为什么朝鲜是黑的?

做前端可视化很有必要学习一下nodejs,mapbox开源了很多空间地图的相关的库,无论自在数据可视化和数据处理上都很便捷。
其实题主下面的说的游戏也好VR也好,可视化都是都是重要一环的,用到的技术也是基本一致,而且也离不开地图。所以建议题主好好打好GIS基础,有了这些基础任何你一个行业,方向任你选择。

不要说GIS只是工具,其实计算机才是各行各业的具的,现在文科都开始写代码了,不会的代码的GISer真的不能称为一个GISer。做时空数据分析我们学GIS用自己优势,现在虽然很多时空数据分析的大多是计算机机出生的人在做,但是做的更多是位置,位置,位置!完全没有把地理学的因素考虑进去。
总体来说我觉得GIS的学生向数据科学方向走更有机会
GIS学生在校期间地理信息系统原理,地理信息信息算法,遥感原理,遥感图像处理等基础课程。具体方向就按自兴趣去选择了大数据的四个方向也是我们GIS的四个方向。编程语言建议学习一下python,地图可视化就要学习javascipt。



看了这么多干货,你真正能用到的有哪些?好文章是值得重读并分享哒~




喜欢我们的内容吗?
长按扫描二维码关注我们


GIS慧








相关问题推荐