① basemap库地图来源
高德地图
basemap库地图来源于高德地图,其高德地图的质量和性能都是不错的,使用率比较高Basemap类创建。地图是由Basemap类创建的,这个类包含很多属性。则使用普通圆柱投影模式显示地图。如果设置了属性,我们就能根据需要创建地图。工具简介
Basemap: Basemap是 python 可视化库 Matplotlib 下的一个工具包,主要功能是绘制二维地图,是Python空间数据可视化的重要手段。
GMT:即Generic Mapping Tools,是地球科学最广泛使用的制图软件之一。目前GMT主要有三大版本:GMT4、GMT5和GMT6,GMT4已不再更新维护;GMT5已进入维护期,不再增加新功能,仅修复已知BUG;GMT6是GMT目前的最新版本,也是开发者在着重维护和更新的版本。GMT6几乎完全兼容GMT5的语法,且提供了一种更为简洁易用的新写法。除此之外,GMT 还为其他常用的编程语言提供了方便的接口,如gmtmex(matlab 接口)、GMT.jl(Julia接口)、pygmt(Python接口)。
Matlab:Matlab是一个强大的数学软件,可以用于数据分析、图像处理、模拟仿真等各种领域,是工科非常常用的软件。
其他:如Grads、NCL(NCAR Command Language)等,更多用于气象界,没研究不了解。
basemap与其他软件比较
优势
Python语法更加简介易懂,容易上手。比较起来,GMT语法跟鬼一样……
安装简单,占用空间小,启动迅速。Matlab我电脑没两分钟启动不起来……
可以和Python的各种库,如matplotlib、geopandas、shapely、arcpy等协同使用,一站式解决数据处理、绘图等问题
Python使用人数多,社区活跃,遇到问题更好解决
劣势
Matlab是工科编程最常使用的工具,大量的算法都能直接找到Matlab源代码,与此相比,Python还需更多积累
GMT是地球科学最常使用的绘图软件,绘制出的图形能比较容易满足期刊的要求。
basemap安装
由于basemap既不在conda中,也无法使用pip直接安装,所以安装较为复杂。我的环境是Windows7+Python3.8.3+Anaconda3_4.8.3,以下安装仅适用于我的环境。此外,因为我的电脑上同时装有Python2与Python3,因此,pip命令使用pip3,以防止混淆。
安装geos模块,直接使用pip安装即可
pip3 install geos
安装pyproj模块,直接使用pip安装即可
pip3 install pyproj
从官网中下载对应版本的basemap .whl安装文件,我下载的版本为"basemap‑1.2.2‑cp38‑cp38‑win_amd64.whl",如下图
使用下载好的whl文件安装
② python画图要用图形库吗
matplotlib,是最经典的Python可视化绘图库。matplotlib就是MATLAB Plot Library,即模仿Matlab的绘图库,其绘图风格与Matlab类似。
seaborn,是基于matplotlib的,纯粹由Python开发的图形可视化库,在matplotlib的基础上进行了更高级的API封装,从而使得作图更加容易。"make a well-defined set of hard things easy",“默认情况下就能创建赏心悦目的图表”。
basemap,Python的basemap库负责实现地理信息可视化,其功能之强大较GMT有过之而无不及。其底图数据库与GMT相同,封装了大量常用的地图投影、坐标转换功能,利用简洁的Python语法支持绘出多种多样的地理地图。
③ basemap适合哪个版本的numpy
pyhton3.7版本,电脑64位系统进行下载,但是我的64位机只能用32位的安装包,上传这个是给能够用到的朋友,比外网方便下载,版本分别为:basemap-1.2.0-cp37-cp37m-win_amd64 , pyproj-1.9.5.1-cp37cp37win_amd64。
Basemap库需要基于Matplotlib、NumPy、pyproj、geos四个库,前两个库一般python自带,后两个库需要自行安装。
④ 如何在Anaconda——python中安装第三方库basemap
使用pip install geos (python的basemap这个库是建立在geos中的)。下载pyproj和basemap两个包,下载地址http://www.lfd.uci.e/~gohlke/pythonlibs/(请下载合适的版本)。 使用pip先后安装pyproj和basemap即可。
⑤ python basemap画地图急求救
可以看一下hiredis库的接口设计,hiredis中的Reader有两个接口,分别是feed和gets,feed每次送入一部分数据,不需要保证是正确分片的;
gets则返回已经得到的完整的结果,如果返回False,表示已经没有新的结果。基本上所有的TCP的socket编程都是遵循这样的方法:
读入新数据;判断有没有完整的新消息;处理新消息,或者等待更多数据。
⑥ 如何系统地自学 Python
是否非常想学好 Python,一方面被琐事纠缠,一直没能动手,另一方面,担心学习成本太高,心里默默敲着退堂鼓?
幸运的是,Python 是一门初学者友好的编程语言,想要完全掌握它,你不必花上太多的时间和精力。
Python 的设计哲学之一就是简单易学,体现在两个方面:
语法简洁明了:相对 Ruby 和 Perl,它的语法特性不多不少,大多数都很简单直接,不玩儿玄学。
切入点很多:Python 可以让你可以做很多事情,科学计算和数据分析、爬虫、Web 网站、游戏、命令行实用工具等等等等,总有一个是你感兴趣并且愿意投入时间的。
废话不多说,学会一门语言的捷径只有一个: Getting Started
¶ 起步阶段
任何一种编程语言都包含两个部分:硬知识和软知识,起步阶段的主要任务是掌握硬知识。
硬知识
“硬知识”指的是编程语言的语法、算法和数据结构、编程范式等,例如:变量和类型、循环语句、分支、函数、类。这部分知识也是具有普适性的,看上去是掌握了一种语法,实际是建立了一种思维。例如:让一个 java 程序员去学习 Python,他可以很快的将 Java 中的学到的面向对象的知识 map 到 Python 中来,因此能够快速掌握 Python 中面向对象的特性。
如果你是刚开始学习编程的新手,一本可靠的语法书是非常重要的。它看上去可能非常枯燥乏味,但对于建立稳固的编程思维是必不可少。
下面列出了一些适合初学者入门的教学材料:
廖雪峰的 Python 教程 Python 中文教程的翘楚,专为刚刚步入程序世界的小白打造。
笨方法学 Python 这本书在讲解 Python 的语法成分时,还附带大量可实践的例子,非常适合快速起步。
The Hitchhiker’s Guide to Python! 这本指南着重于 Python 的最佳实践,不管你是 Python 专家还是新手,都能获得极大的帮助。
Python 的哲学:
学习也是一样,虽然推荐了多种学习资料,但实际学习的时候,最好只选择其中的一个,坚持看完。
必要的时候,可能需要阅读讲解数据结构和算法的书,这些知识对于理解和使用 Python 中的对象模型有着很大的帮助。
软知识
“软知识”则是特定语言环境下的语法技巧、类库的使用、IDE的选择等等。这一部分,即使完全不了解不会使用,也不会妨碍你去编程,只不过写出的程序,看上去显得“傻”了些。
对这些知识的学习,取决于你尝试解决的问题的领域和深度。对初学者而言,起步阶段极易走火,或者在选择 Python 版本时徘徊不决,一会儿看 2.7 一会儿又转到 3.0,或者徜徉在类库的大海中无法自拔,Scrapy,Numpy,Django 什么都要试试,或者参与编辑器圣战、大括号缩进探究、操作系统辩论赛等无意义活动,或者整天跪舔语法糖,老想着怎么一行代码把所有的事情做完,或者去构想圣洁的性能安全通用性健壮性全部满分的解决方案。
很多“大牛”都会告诫初学者,用这个用那个,少走弯路,这样反而把初学者推向了真正的弯路。
还不如告诉初学者,学习本来就是个需要你去走弯路出 Bug,只能脚踏实地,没有奇迹只有狗屎的过程。
选择一个方向先走下去,哪怕脏丑差,走不动了再看看有没有更好的解决途径。
自己走了弯路,你才知道这么做的好处,才能理解为什么人们可以手写状态机去匹配却偏要发明正则表达式,为什么面向过程可以解决却偏要面向对象,为什么我可以操纵每一根指针却偏要自动管理内存,为什么我可以嵌套回调却偏要用 Promise...
更重要的是,你会明白,高层次的解决方法都是对低层次的封装,并不是任何情况下都是最有效最合适的。
技术涌进就像波浪一样,那些陈旧的封存已久的技术,消退了迟早还会涌回的。就像现在移动端应用、手游和 HTML5 的火热,某些方面不正在重演过去 PC 的那些历史么?
因此,不要担心自己走错路误了终身,坚持并保持进步才是正道。
起步阶段的核心任务是掌握硬知识,软知识做适当了解,有了稳固的根,粗壮的枝干,才能长出浓密的叶子,结出甜美的果实。
¶ 发展阶段
完成了基础知识的学习,必定会感到一阵空虚,怀疑这些语法知识是不是真的有用。
没错,你的怀疑是非常正确的。要让 Python 发挥出它的价值,当然不能停留在语法层面。
发展阶段的核心任务,就是“跳出 Python,拥抱世界”。
在你面前会有多个分支:科学计算和数据分析、爬虫、Web 网站、游戏、命令行实用工具等等等等,这些都不是仅仅知道 Python 语法就能解决的问题。
拿爬虫举例,如果你对计算机网络,HTTP 协议,HTML,文本编码,JSON 一无所知,你能做好这部分的工作么?而你在起步阶段的基础知识也同样重要,如果你连循环递归怎么写都还要查文档,连 BFS 都不知道怎么实现,这就像工匠做石凳每次起锤都要思考锤子怎么使用一样,非常低效。
在这个阶段,不可避免要接触大量类库,阅读大量书籍的。
类库方面
“Awesome Python 项目”:vinta/awesome-python · GitHub
这里列出了你在尝试解决各种实际问题时,Python 社区已有的工具型类库,如下图所示:
vinta/awesome-python
你可以按照实际需求,寻找你需要的类库。
至于相关类库如何使用,必须掌握的技能便是阅读文档。由于开源社区大多数文档都是英文写成的,所以,英语不好的同学,需要恶补下。
书籍方面
这里我只列出一些我觉得比较有一些帮助的书籍,详细的请看豆瓣的书评:
科学和数据分析:
❖“集体智慧编程”:集体智慧编程 (豆瓣)
❖“数学之美”:数学之美 (豆瓣)
❖“统计学习方法”:统计学习方法 (豆瓣)
❖“Pattern Recognition And Machine Learning”:Pattern Recognition And Machine Learning (豆瓣)
❖“数据科学实战”:数据科学实战 (豆瓣)
❖“数据检索导论”:信息检索导论 (豆瓣)
爬虫:
❖“HTTP 权威指南”:HTTP权威指南 (豆瓣)
Web 网站:
❖“HTML & CSS 设计与构建网站”:HTML & CSS设计与构建网站 (豆瓣)
...
列到这里已经不需要继续了。
聪明的你一定会发现上面的大部分书籍,并不是讲 Python 的书,而更多的是专业知识。
事实上,这里所谓“跳出 Python,拥抱世界”,其实是发现 Python 和专业知识相结合,能够解决很多实际问题。这个阶段能走到什么程度,更多的取决于自己的专业知识。
¶ 深入阶段
这个阶段的你,对 Python 几乎了如指掌,那么你一定知道 Python 是用 C 语言实现的。
可是 Python 对象的“动态特征”是怎么用相对底层,连自动内存管理都没有的C语言实现的呢?这时候就不能停留在表面了,勇敢的拆开 Python 的黑盒子,深入到语言的内部,去看它的历史,读它的源码,才能真正理解它的设计思路。
这里推荐一本书:
“Python 源码剖析”:Python源码剖析 (豆瓣)
这本书把 Python 源码中最核心的部分,给出了详细的阐释,不过阅读此书需要对 C 语言内存模型和指针有着很好的理解。
另外,Python 本身是一门杂糅多种范式的动态语言,也就是说,相对于 C 的过程式、 Haskell 等的函数式、Java 基于类的面向对象而言,它都不够纯粹。换而言之,编程语言的“道学”,在 Python 中只能有限的体悟。学习某种编程范式时,从那些面向这种范式更加纯粹的语言出发,才能有更深刻的理解,也能了解到 Python 语言的根源。
这里推荐一门公开课
“编程范式”:斯坦福大学公开课:编程范式
讲师高屋建瓴,从各种编程范式的代表语言出发,给出了每种编程范式最核心的思想。
值得一提的是,这门课程对C语言有非常深入的讲解,例如C语言的范型和内存管理。这些知识,对阅读 Python 源码也有大有帮助。
Python 的许多最佳实践都隐藏在那些众所周知的框架和类库中,例如 Django、Tornado 等等。在它们的源代码中淘金,也是个不错的选择。
¶ 最后的话
每个人学编程的道路都是不一样的,其实大都殊途同归,没有迷路的人只有不能坚持的人!
希望想学 Python 想学编程的同学,不要犹豫了,看完这篇文章,
Just Getting Started !!!
⑦ 有哪些 GIS+Python 的开发经验值得分享
GIS 和 python 的结合有很多种可能性
Arcpy 参考ArcPy and ArcGIS (豆瓣), pyQGIS 参考PyQGIS Developer Cookbook
Geopython GIS相关库
GDAL 参考 Welcome to the Python GDAL/OGR Cookbook!
各种空间数据库,如 spatialite 参考 SpatiaLite Cookbook
基础库(抽象库)
GDAL 不多说,GIS万物本源
Proj.4 制图学投影转换库
geojson geojson数据处理,点线面
高级库
Shapley GIS的图像处理
Fiona GIS数据读入写出
Rtree Rtree空间索引
pyproj Proj.4的接口扩展
OWSLib WMS地图服务发放
basemap 画地图
超高级库
geopandas 整合了pandas,shapely,fiona,descartes,pyproj和rtrees可以直接用于数据处理
geodjango django出品,保护GDAL,GEOS等可以发送地图服务
参考 Python 笔记三:Geopython GIS相关库
而如今,javascript在互联网的地位也变得越来越重要,GIS+JS的项目也氤氲而生,所以问题来了。参考:有哪些GIS+JavaScript(node.js)的开发经验值得分享? - Node.js
或者关注我的博客,写得不是很好,希望各路大神多多留言指导。
Awesome GIS(GIS Tech Stack技术栈)
Geomatics专栏点此:Geomatics(GIS,GPS,RS,Surveying)
语言
Python 最好的快速开发语言,是一门API艺术
awesome-python
1简单的入门
2总结入门坑及基础资源
3Geopython GIS相关库
4Python的常用库入门
5Flask框架
6入门爬虫坑--网页数据压缩(python deflate gzip)
7Requests爬虫技巧
Node.js 最炙手可热的网络技术源泉,可用于WebGIS
awesome-javascript
1常用Global库
2入门及GeoNode.js GIS相关库
前段
Leaflet 兼容移动端,和现代的一些框架一样优先考虑移动端
1leaflet入门
2简单插件编写leaflet-pip-v2
3进阶插件编写geojsonFilter
Mapbox总有人讨论“Mapbox VS Leaflet?”这是个烂问题,Mapbox是Leaflet的超集,就像Typescript和Javascript之间的关系一样
Openlayer3扯淡大叔教程
Turf js层面做出简单的空间分析
后端
Geoserver 基于Java的地理信息服务的发布,使用简单
Mapserver 基于C语言的地理信息服务的发布,内存占用小
GDAL 数据格式转换
1GDAL命令行入门
2python for GDAL
3gdal CLI Cheat Sheet
数据格式
GeoJSON 开源地理信息JSON格式
awesome-geojson
geojson-js-utils 空间数据简单处理js实现
geojson-python-utils空间数据简单处理python实现
TopoJSON 开源地理信息JSON格式,大小要比GeoJSON小40%
TileJSON 瓦片数据包装的JSON格式,用的不多
WKT&WKB 文本标记语言表示矢量数据
WKT&WKB 笔记一:格式介绍
数据库
Spatialite 空间数据的查询等处理,小项目足矣
1简单的入门
2CLI Cheat Sheet
3python for Spatialite
4NET平台使用spatilite扩展
5Spatiliate2GeoJson数据的转换
Postgresql 大型空间数据项目
MBTILES 承载瓦片的数据,快速索引
1入门与简单应用
瓦片渲染
Global Mapper 专门用作已有栅格图像切片
Mapnik 专门用于矢量数据的切片
TileMill 在矢量数据渲染时,运用CartoCSS对矢量数据赋予样式
数据处理
QGIS 开源GIS数据处理桌面软件,其中包含Grass,SAGA两个学术界开源GIS平台
1简单的介绍
2地图综合
Mapsharper 数据综合神器
1地图综合神器
数据资料
地理空间数据云 没想到数据来的这么快
填坑
1网页端JS的缓存问题
2Angular遇到的一些坑
3SpatialiteSharp的使用坑
整个技术栈主要针对的是轻量或者小项目去考虑,运用一些流行的尽可能开源的工具去做,这是我的一些想法和笔记,详情参考从mapbox的开源工具看Web GIS的发展,希望能给您一点点帮助。PS:我在github上看到一个awesome gis,并非我主导的,希望各位GISer可以一起参与修改。
转载,请表明出处。总目录Awesome GIS