『壹』 arcgis 可以用python開發嗎
當然可以。 ArcGIS自帶了 Python 環境,一般使用不要嘗試用別的來代替它。 使用Python,可以完成很多數據處理、自動化制圖的任務。
『貳』 有哪些 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演算法庫
『叄』 學習網路GIS的開發都需要學習哪些基本的東西
GISer入門指南電子書第一季分享版.pptx免費下載
鏈接:https://pan..com/s/1aq2HNC5YgVGHuc8rNoVUTw
ArcGIS入門級教程,詳細介紹了ArcGIS產品族及成員產品 1、GIS 的概念和需求 2、什麼是ArcGIS 3、Geodatabase中的GIS數據概念 4、桌面GIS產品:ArcView, ArcEditor和ArcInfo等
『肆』 有人用python開發GIS用戶程序么
例子取自<<Learning Geospatial Analysis with Python>>
代碼由兩部分組成。第一部分是數據模型,第二部分是繪制數據(地圖渲染)。
一、數據模型:使用python內置的列表(list),用來存儲空間數據。
[python]view plain
#DATAMODEL
#Alllayerswillhaveaname,1+points,andpopulationcount
NAME=0
POINTS=1
POP=2
#Createthestatelayer
state=["COLORADO",[[-109,37],[-109,41],[-102,41],[-102,37]],5187582]
#Citieslayerlist
#city=[name,[point],population]
cities=[]
#AddDenver
cities.append(["DENVER",[-104.98,39.74],634265])
#AddBoulder
cities.append(["BOULDER",[-105.27,40.02],98889])
#AddDurango
cities.append(["DURANGO",[-107.88,37.28],17069])
二、地圖渲染
使用python Turtle 繪圖模塊來渲染地圖。其中有一個函數用來將世界坐標轉換為像素坐標。
1、首先計算地圖的顯示範圍及設定屏幕的繪制范圍
[python]view plain
#MAPGRAPHICSRENDERING
map_width=800
map_height=500
#StateBoundingBox
#UsePythonmin/maxfunctiontogetboundingbox
minx=180
maxx=-180
miny=90
maxy=-90
forx,yinstate[POINTS]:
ifx<minx:minx=x
elifx>maxx:maxx=x
ify<miny:miny=y
elify>maxy:maxy=y
#Getearthdistanceoneachaxis
dist_x=maxx-minx
dist_y=maxy-miny
#Scalingratioeachaxis
#tomappointsfromworldtoscreen
x_ratio=map_width/dist_x
y_ratio=map_height/dist_y
2、世界坐標到屏幕坐標的轉換
[python]view plain
#Functiontoconvertlat/lontoscreencoordinates
defconvert(point):
lon=point[0]
lat=point[1]
x=map_width-((maxx-lon)*x_ratio)
y=map_height-((maxy-lat)*y_ratio)
#
#
x=x-(map_width/2)
y=y-(map_height/2)
return[x,y]
3、繪制地圖:標注和要素圖形
[python]view plain
#Drawthestate
t.up()
first_pixel=None
forpointinstate[POINTS]:
pixel=convert(point)
printpixel
ifnotfirst_pixel:
first_pixel=pixel
t.goto(pixel)
t.down()
#Gobacktothefirstpoint
t.goto(first_pixel)
#Labelthestate
t.up()
t.goto([0,0])
t.write(state[NAME],align="center",font=("Arial",16,"bold"))
#Drawthecities
forcityincities:
pixel=convert(city[POINTS])
t.up()
t.goto(pixel)
#Placeapointforthecity
t.dot(10)
#Labelthecity
t.write(city[NAME]+",Pop.:"+str(city[POP]),align="left")
t.up()
#Performanattributequery
#Question:?
#Writetheresultbutmakesureit'sunderthemap
biggest_city=max(cities,key=lambdacity:city[POP])
t.goto(0,-1*((map_height/2)+20))
t.write("Thebiggestcityis:"+biggest_city[NAME])
#Performaspatialquery
#Question:Whichisthewesternmostcity?
#Writetheresultbutmakesureit'sundertheotherquestion
western_city=min(cities,key=lambdacity:city[POINTS])
t.goto(0,-1*((map_height/2)+40))
t.write("Thewestern-mostcityis:"+western_city[NAME])
#Hideourmappen
t.pen(shown=False)
t.done()
三、結果
『伍』 有哪些 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
『陸』 有哪些 GIS+Python 的開發經驗值得分享
AngularJS 與 jQuery 等傳統操作 DOM 的思想有所不同,
對於 jQuery 等,一般是先有完整 DOM 然後在這些 DOM 的基礎上進行二次調教。
而 AngularJS 等框架則是 根據 數據模型 以及其對應的 DOM 模版,然後通過模版像搭積木那樣組合頁面。
顯然的,前者在 SEO 上有天然優勢;而後者,搜索引擎還只能拿到某個模版,而無內容。
暫時沒想到有什麼特別好的解決方案,或許,對於內容頁,可以繼續使用傳統方式,而只在需要更多交互的地方應用 AngularJS,特別是在移動端應用上。
同理適用於各種 前端的 MVC 框架,後端只要為前端提供數據介面,而不再需要為其拼接 HTML.
## 模塊化
AngularJS 也是遵循 AMD 的。(AMD 是啥,參考:使用 AMD、CommonJS 及 ES Harmony 編寫模塊化的 JavaScript)
雖然它也可以按照傳統代碼方式來寫(其首頁介紹的用法 AngularJS — Superheroic JavaScript MVW Framework),但是,既然都提供了這么一種模塊的方法,為何不用上呢
angular.mole('app', [
'moleA',
'moleB',
])
.controller('MainCtrl', [
'$scope',
function ($scope) {
}]);
而且,這種寫法還可以方便做代碼的合並與壓縮,在後面 Grunt 自動化 一節中,就會提到使用 Nodejs/Grunt 來自動的做這些事情。
## 可復用模版 or 業務邏輯模版
今年 Google 開發者大會中 提到的 Polymer(Welcome - Polymer)
這貨讓人感覺像是 Angular Directives 的進化。
而 Directives 做的事,就是把一堆 DOM 封裝為一條或者一組 自定義的 HTML標簽,作為可復用的模版,以供組裝業務調用。 Demos 可參看:Angular directives for Twitter's Bootstrap
當然,為了方便修改,很多時候在做 directive 的時候需要將 template 用 templateUrl 代替,
不用擔心文件的碎片化,不利於前端載入 Grunt 自動化 一節 會提到如何合並這些碎片化的 模版。
Directives 是作為可復用的模版,
而業務邏輯則是一般是一個業務對應一個 html 及其的 controller.
『柒』 有哪些 GIS+Python 的開發經驗值得分享
AngularJS 與 jQuery 等傳統操作 DOM 的思想有所不同,
對於 jQuery 等,一般是先有完整 DOM 然後在這些 DOM 的基礎上進行二次調教。
而 AngularJS 等框架則是 根據 數據模型 以及其對應的 DOM 模版,然後通過模版像搭積木那樣組合頁面。
顯然的,前者在 SEO 上有天然優勢;而後者,搜索引擎還只能拿到某個模版,而無內容。
暫時沒想到有什麼特別好的解決方案,或許,對於內容頁,可以繼續使用傳統方式,而只在需要更多交互的地方應用 AngularJS,特別是在移動端應用上。
同理適用於各種 前端的 MVC 框架,後端只要為前端提供數據介面,而不再需要為其拼接 HTML.
## 模塊化
AngularJS 也是遵循 AMD 的。(AMD 是啥,參考:使用 AMD、CommonJS 及 ES Harmony 編寫模塊化的 JavaScript)
雖然它也可以按照傳統代碼方式來寫(其首頁介紹的用法 AngularJS — Superheroic JavaScript MVW Framework),但是,既然都提供了這么一種模塊的方法,為何不用上呢
angular.mole('app', [
'moleA',
'moleB',
])
.controller('MainCtrl', [
'$scope',
function ($scope) {
}]);
而且,這種寫法還可以方便做代碼的合並與壓縮,在後面 Grunt 自動化 一節中,就會提到使用 Nodejs/Grunt 來自動的做這些事情。
## 可復用模版 or 業務邏輯模版
今年 Google 開發者大會中 提到的 Polymer(Welcome - Polymer)
這貨讓人感覺像是 Angular Directives 的進化。
而 Directives 做的事,就是把一堆 DOM 封裝為一條或者一組 自定義的 HTML標簽,作為可復用的模版,以供組裝業務調用。 Demos 可參看:Angular directives for Twitter's Bootstrap
當然,為了方便修改,很多時候在做 directive 的時候需要將 template 用 templateUrl 代替,
不用擔心文件的碎片化,不利於前端載入 Grunt 自動化 一節 會提到如何合並這些碎片化的 模版。
Directives 是作為可復用的模版,
而業務邏輯則是一般是一個業務對應一個 html 及其的 controller.
『捌』 有哪些 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演算法庫