有哪些 GIS+Python 的开发经验值得分享

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有哪些 GIS+Python 的开发经验值得分享相关的知识,希望对你有一定的参考价值。

python之于GIS与python之于IT类似
GISer采用python的原因也在于“人生苦短,我用python”
python在gis中的应用非常之广
1. desktop GIS:
ArcGIS从版本10开始不再支持原来的VBA,而改用python
QGIS本身大部分的代码特别是插件部分可以采用python进行开发
2. 地图引擎
mapnik—基于C++引擎的顶级地图引擎库,和python结合比较紧密
mapfish—支持部分专题地图在线制作
3. webgis
python+geodjango 是最常用也最庞大的后台框架

GISer使用python一定要充分发挥python语言的特性
如ArcGIS集成phthon是利用了python的脚本语言特性
后台webgis等服务,可以发挥python作为语言黏合剂的特性,充分利用已有的GIS算法库
参考技术A 当前的GIS和javascript的主要作用还是空间的数据的动态的展现,大数据是时代需要除了的对大数据的获取,存储,分析之外,我们迫切需要的是基于地图的的海量数据可交互的展现在技术。
基于地图的可视化是当前可视化技术发展的重大的趋势,因此具有GIS背景的前端的工程师将来会有很大缺口(利益相关)。
Gdal 一个功能的强大的空间数据处理工具,在空间数据分析处理经常使用的工具,特别是对栅格数据的分析处理。作为前端工程师不想用python,c的话,可以使用node-gdal gdal - node-gdal。
基于的node的后端地图渲染有很多成熟的解决方案,mapnik,作为前端工程师熟悉canvas绘图的化技术,那么对于 node-canvas应该就不陌生了, GitHub - Automattic/node-canvas: Node canvas is a Cairo backed Canvas implementation for NodeJS. 可用于后端绘制海量的点线面数据,可以自己写一套后端地图渲染服务器。百度个性化地图就基于此开发的 node-canvas实现百度地图个性化底图绘制同样前端leaflet-canvas 实现数据的地图上展示。
处理空间数据空间索引必不可少的 GitHub - leaflet-extras/RTree: R-Tree Library for Javascript, optimized for maps. RTree和canvas的结合的可以解决canvas交互事件的弊端。
Voronoi图,又叫泰森多边形GitHub - gorhill/Javascript-Voronoi: A Javascript implementation of Fortune's algorithm to compute Voronoi cells狄洛尼三角网 一种曲面数据结构GitHub - ironwallaby/delaunay: Fast Delaunay Triangulation in JavaScript.

有哪些值得推荐的 Python 开发工具

推荐5个非常适合Python小白的开发工具:

1、Python Tutor

Python Tutor是由Philip
Guo开发的一个免费教育工具,可帮助开发者攻克编程学习中的基础障碍,理解每一行源代码在程序执行时在计算机中的过程。通过这个工具,开发者可以直接在Web浏览器中编写Python代码,并逐步可视化地运行程序。如果你不知道代码在内存中是如何运行的,不妨把它拷贝到Tutor里可视化执行一遍,加深理解。

2、IPython

IPython是一个for Humans的Python交互式shell,用了它之后你就不想再用自带的Python
shell了,IPython支持变量自动补全,自动缩进,支持bash
shell命令,内置了许多实用功能和函数,同时它也是科学计算和交互可视化的最佳平台。

3、Jupyter Notebook

Jupyter
Notebook就像一个草稿本,能将文本注释、数学方程、代码和可视化内容全部组合到一个易于共享的文档中,以Web页面的方式展示。它是数据分析、机器学习的必备工具。

4、Anaconda

Python虽好,可总是会遇到各种包管理和Python版本问题,特别是Windows平台很多包无法正常安装,为了解决这些问题,Anaconda出现了,Anaconda包含了一个包管理工具和一个Python管理环境,同时附带了一大批常用数据科学包,也是数据分析的标配。

5、Skulpt

Skulpt是一个用JavaScript实现的在线Python执行环境,它可以让你轻松在浏览器中运行Python代码。使用Skulpt结合CodeMirror编辑器即可实现一个基本的在线Python编辑和运行环境。

参考技术A 前提:用来做数据处理和相关的系统开发
刚学python时,面对简陋的官方版idle和一大堆开发平台和发行版,不知道究竟如何下手。在进行多方尝试后,我最后的选择是Anaconda + Pycharm,用anaconda集成的ipython做工作台,做一些分析和小段程序调试的工作,用Pycharm写相应脚本和程序包的开发。这两个工具都是跨平台的,也都有免费版本。
具体来说Anaconda集成了几乎所有我需要的包库,包含了我整个工作流程,做数据分析的pandas\scipy\numpy、绘图的matplotlib、读写Excel文档的xlrd/xlwt,链接SQL数据库的SQLalchemy、机器学习框架sklearn等。对于Anaconda集成的两个工作平台,Spyder——一个类似于Matlab和Rstudio的IDE,是专注于面向数据的分析的,因为其特点也主要是数据区的存在,可以即时知道变量值的变化;Ipython——一个基于cell的shell界面,可以理解为python自带shell的增强版,它将程序分成一块一块的cell,每个cell可以包含多条语句,可以单独调试运行,并将结果保存在内存中,cell之间可以相互调用,并保持一定的相互独立。
可以说有了anaconda自带的这两个工具,足够做数据处理相关的工作了(本身anaconda就是一个为了数据科学而诞生的发行版),但如果涉及到脚本程序和包的开发,感觉spyder还是有点弱,在试过IDE,代码编辑器(比如visual code、sublime等)+插件,这两种方案后,我最后选择了集成度更高的成熟IDE——Pycharm替换spyder作为主要的开发平台,看我头像也可以知道我是一个喷气大脑的死忠,他们家的IDE真的很好用~理由如下:
1、首先作为学生,可以通过edu邮箱申请到Jetbrains全家桶,即便无法获取授权,pycharm的community版本免费并且功能足够
2、对于pycharm,可以方便快捷地切换python不同版本的解释器,甚至可以安装相同版本的python解释器配置不同的开发环境,这可以解决有些包之间冲突的情况,也可以针对有些框架按需装包;并且pycharm内置包管理,可以免去pip或者conda方式管理包。
3、pycharm这个IDE的颜色方案、拼写补全、函数联想、函数跳转源代码、断点调试及debug等功能都让我用的十分顺手。
总之我现在的工作流程就是,先用对我需要的功能进行设计,而后在ipython界面下设计调试每个功能模块,调试成功后放到pycharm中组合起来,写成脚本文件,最后用pycharm做调试形成成品。本回答被提问者采纳

以上是关于有哪些 GIS+Python 的开发经验值得分享的主要内容,如果未能解决你的问题,请参考以下文章

关于AngularJS 框架的使用都有哪些经验值得分享

关于AngularJS 框架的使用都有哪些经验值得分享

经验分享丨大学计算机专业有哪些值得推荐的竞赛?

python软件开发的案例都有哪些,可用于哪些开发

第1779期使用TypeScript两年后,值得吗?

有哪些值得推荐的 Python 开发工具