① 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