GIScript2015是一個通用的GIS腳本庫,能夠幫助進行地理空間數據的處理和分析,提升數據處理的效率,幫助進行地理科學的研究。GIScript2015是一個開源工程,已創建Git版本庫和虛擬Team、微信羣(兩個:GIScript語言、GIScript開發者)。css
GIScript2015與GIScript的區別是2015版徹底採用SIP進行封裝,與Qt和PyQt具備較好的相容性,接口能夠與C++保持一致,從而減小了封裝維護資源和增長了易用性。GIScript2015現已完成Windows/Linux的64位基礎版本,可運行於UbuntuKylin15.04。python
GIScript2015能夠支持Python並行框架Celery(本人已測試經過),從而實現分佈式的數據處理調度操做。這個跟Hadoop和Spark應該也能夠掛接上去運行的,有興趣的同窗能夠試試。另外,這個裏面的UGC基礎庫能夠支持MongoDB,這個對大數據的存儲和處理但是個利器。
git
如今,咱們開始一個簡單的例程,感覺一下GIScript運行的過程,體驗一下使用腳本的「懶人模式」。
shell
GIScript徹底是綠色軟件、拷貝即用,不須要特殊的複雜安裝,使用Python3。微信
可是呢,UGC的SIP封裝因爲所有開放源碼出來了,若是是獲取的原始工程,須要本身先進Linux64-gcc4.9/SIP/UGC這個目錄運行make/make install進行編譯和安裝(若是是編好的特定操做系統的版本,那麼拷貝就能夠用的)。因爲使用sip封裝,所以須要先編譯安裝sip才行的哦。框架
SIP和PyQt的安裝參考http://my.oschina.net/u/2306127/blog/484061。須要瞭解SIP封裝的詳細的內容能夠看這裏:http://my.oschina.net/u/2306127/blog/470102。這是一個開放的支持庫模式,本身也能夠寫一個C++的庫,參考這個封裝過程作成Python來使用,把不一樣的功能集成到一塊兒。分佈式
進系統目錄。oop
#運行gis.sh,進入Python3 ./gis.sh
或者,直接運行一個測試。測試
./gisrun.sh /testbed/test.py
下面咱們先看一下gisrun.sh的內容。大數據
#!/bin/sh echo "========================================================" echo "*GIScript---Scripting The World. *" echo "********************************************************" echo "*GIScript Starting... *" echo "*Project: https://git.oschina.net/supergis/GIScript2015*" echo "*DevTeam: https://team.oschina.net/GIScript/tweet *" echo "========================================================" #set the enviroment-variable. export SUPERMAP_HOME=/home/supermap/GIScript/GIScript2015/Linux64-gcc4.9 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$SUPERMAP_HOME/Bin #start run python script. if [ x$1 != x ] then echo "Run file:" $1 python3 $1 else echo "Usage: gisrun.sh myprocess.py" fi
這個腳本將設置環境變量,而後啓動python3去運行一個Python文件。
若是GIScript2015的安裝路徑與上面的SUPERMAP_HOME不一樣,修改改路徑便可。
咱們再來看看test.py裏面的內容:
#!/usr/bin/python # -*- coding: UTF-8 -*- import sys import os import PyUGC from PyUGC import UGC from PyUGC import OGDC if __name__=='__main__': ds = UGC.UGDataSourceManager.CreateDataSource(UGC.UDB) con = ds.GetConnectionInfo() strTemp = OGDC.OgdcMBString("/home/supermap/GIScript/GIScript2015/data/world.udb") OGDC.MBString2Unicode(strTemp, con.m_strServer) bOpen = ds.Open() if bOpen[0] == 1: print("打開數據源成功!!") else: print("打開數據源失敗!!") strFileName = OGDC.OgdcUnicodeString() strTemp = OGDC.OgdcMBString("/home/supermap/GIScript/GIScript2015/data/grid_Int32.grd") OGDC.MBString2Unicode(strTemp, strFileName) importParams = UGC.UGExchangeParamsManager.MakeImportParams(UGC.UGFileType.AIASCIIGrid) importParams.SetImportMode(UGC.UGImportParams.ModeGrid) importParams.SetFilePathName(strFileName) dataExchange = UGC.UGDataExchange() dataExchange.AttachDataSource(ds) bIsSuccss = dataExchange.Import(importParams) if bIsSuccss == 1: print("數據導入成功!!") else: print("數據導入失敗!!") pass del importParams ds.Close() del ds pass
這個例程打開一個數據源,而後將一個柵格文件導入其中。
照着這個例子,能夠編寫一個批量數據導入的腳本,實現數據的快速導入。