GISer应该学会用Python的N个理由

Python,一种简单易用的脚本编程语言

零基础的GISer想要开始学习编程,不妨从Python入手。相比其他编程语言,Python不论是语法还是操作方式,都非常容易上手。正在使用Java、JavaScript或其他编程语言的GISer,相信你在了解Python后,将会爱不释手。

Python的语法很简单,输出100的约数,Java的编写方式是:

而Python则一行搞定:

再来看个例子,通过HTTP协议上传文件,Java使用Apache HttpClient:

Python使用requests:

通过上面两个例子对比可以看出,Python的语法要比Java简单不少。但只语法简单自然是不够的,我们在Jupyter Notebook里写下几行内容:

在上图中,In [1]到In [4]是输入的Python代码,其中1、2没有运算结果,所以没有输出。3和4有结果输出,3输出的是地图名称,4则是展示一个地图。这并不是在输入完所有语句后点执行得到的结果,In [3]中输入maps,shift+回车,下面的输出就直接出来了。

Jupyter Notebook是一个交互式笔记本,不仅能写代码,还能写Markdown,能显示地图。用Jupyter Notebook所编写的代码会立即执行,并把执行结果展示出来。比如上文的地图,还有数据表格、数据可视化结果专题图等。如此,程序员不是在写代码,而是在写文章,不过文章里的内容有一部分是代码及其执行结果,写完了还可以保存为网页或者PDF。

Python,数据分析首选

同样是写代码,那么做数据分析和软件开发有什么不同?

举个例子:我们从豆瓣电影上抓几万部电影的用户评分和评论数据下来,想查看评分分布,我们写几行代码;执行代码后发现,很多电影评分数量很少,不属于有效评分,我们修改代码、重新启动程序,去掉这部分电影,得到新的评分统计;在评分一样的情况下,如何区分好电影和坏电影?我们修改代码、重新启动程序,查看评分两极化的电影,得出标准差值最大、争议最大的电影;为什么这些电影会得到两极分化的评论?改代码、重新启动程序,分析观众的评价找出端倪……

上面是使用传统软件开发的方法写代码来做数据分析的过程,需要好多次修改代码、重启程序、在控制台里查看运行结果。现在结合Jupyter Notebook的交互特性,我们可以始终在同一个界面输入代码执行计算,进而查看计算结果,进行新的数据处理。不必再反复改代码、重启程序,简化了数据分析的过程,提高了工作效率。Jupyter Notebook简直就是为数据分析量身定制的工具。分析完还可用Markdown写下自己的分析结论,导出为网页或者PDF。

Jupyter Notebook可以让工作变得高效快捷,那么它和Python有什么关系?答案是,Python是交互式编程语言,交互式笔记本中的“交互式”是Python语言的特性。

Python提供丰富的GIS库

如果Python只是适合数据分析,无法处理地理信息数据的话,那跟GISer的关系也不大。所幸的是,Python还提供了丰富的GIS库。

除了上述列表中提到的这些内容,超图还将于近期发布SuperMap iClient Python。

SuperMap iClient Python全新推出

SuperMap将Python应用于GIS,全新推出SuperMap iClient Python,简称iClientPy,是超图云GIS客户端 Python SDK。使用iClientPy,可以在 Python 脚本里轻松调用超图云GIS四驾马车和SuperMap Online的REST API。比如,把Shape、GeoJSON文件中的地理要素对象导入到SuperMap iServer发布的rest-data服务中,上传地理要素对象到SuperMap Online或SuperMap iPortal上,并创建和分享地图。

iClientPy与Jupyter Notebook深度结合,自然少不了在Jupyter NoteBook中进行数据可视化,可将可视化结果保存下来,嵌入到任意HTML网页中;当然还少不了大数据分析服务,以点聚合分析为例,点聚合分析的API应该是下面这种?

aggregate_points(earthquakes, bin_size=1, bin_size_unit='Kilometers', output_name='EQAgg_5mi_hex’)

事实并非如此。iClientPy 不仅是API,更是Coding UI。如上面的API,在实际使用时,bin_size_unit到底是Kilometer还是Kilometers,首字母是大写还是小写,单位米到底是英式写法还是美式写法,还需要去查API文档。

下面,我们用一张图来查看iClientPy Coding UI做点聚合分析的情况:

如图所示,使用iClient Python做点聚合分析,无需查阅文档来获取数据集及数据集字段,只需根据提示进行选择即可。

了解了Python的几个特性后,你是不是已经跃跃欲试了呢?那就一起操练起来吧!访问:

作者 | 超图研究院 云产品研发中心 谷永权

责编 | 王宇卫

【近期回顾】

欢迎转载~

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180612B1DGRA00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券