GIScript2016-Docker 快速入門

GIScript2016是支持Python3的地理空間數據處理和分析工具包,支持Jupyter和Spark,能夠運行在單機以及大規模集羣之上。GIScript with Jupyter+Spark on Docker這一技術棧很是強大,經過conda包管理程序還能夠安裝大量的科學計算包,如NumPy、Scikit、Pandas以及OpenCV、NLTK、Tensorflow、Keras等機器學習軟件包,實在是大數據處理、分析和深刻研究的神器。docker

1. 建立Docker容器

在前篇博文【GIScript2016-Docker上的Jupyter Notebook部署】中,介紹了將GIScript部署到Docker中的方法。而後咱們能夠將這個容器鏡像推送到DockerHub上,就能夠在聯網的其它計算機中使用了。瀏覽器

1.1 提交容器鏡像

首先,提交一個本身DockerHub帳號下的鏡像(若是尚未帳號,就在hub.docker.com上註冊一個),而後將當前的鏡像提交爲該帳號的版本。以下所示:機器學習

docker commit GISpark openthings/gispark

1.2 推送鏡像到雲端

首先,登錄到Docker帳號,以下:工具

docker login

根據提示輸入在DockerHub上註冊的帳號和密碼。學習

開始將Docker鏡像推送到DockerHub雲存儲,以下。大數據

docker push openthings/gispark

上面的openthings爲本身在Dockerhub上的註冊用戶名,須要改成本身的。下同。spa

1.3 拉取鏡像到本機

而後再去其它計算機上,拉取該鏡像下來:.net

docker pull openthings/gispark

2. 運行Docker容器

2.1 運行GISript容器實例

docker run -it --name GISpark 
    -p 9000:8888 
    --user root -e GRANT_SUDO=yes 
    -v /本地目錄/GISpark:/home/jovyan/work/GISpark 
    openthings/gispark

其中本地目錄爲宿主機的目錄,用於存儲共享的數據。 輸入Docker ps,能夠看到當前運行的全部容器的列表。rest

2.2 關閉容器實例

按照控制檯窗口的提示,按Ctrl+C而後選y或者連按兩次Ctrl+C,便可退出運行狀態。code

2.3 重啓容器實例

使用docker start 容器ID啓動中止的實例(使用docker ps -a查看列表)。 使用docker restart 容器ID能夠重啓運行中的實例。

2.4 開始使用

打開瀏覽器,輸入:http://localhost:9000 ,便可看到: Jupyter的Web界面

3. 運行Python3例程

點取「New」按鈕,選取「Python3」,建立一個新的Notebook。而後將下面的代碼複製到Cell中。

以獲取文件信息爲例:

# coding: utf-8
import sys
from GIScript import GISCore,Conversion

'''
! \brief 文件路徑定義
'''
strTiffPath  = "Raster/astronaut(CMYK)_32.tif"

if __name__ == '__main__':    
    try:
        fileParser = Conversion.FileParser()
        bOpen = fileParser.Open(strTiffPath, "fileTIF")
        if bOpen:
            rasterInfo  = fileParser.GetRasterInfo()
            nWidth      = rasterInfo.GetWidth()
            nHeight     = rasterInfo.GetHeight()
            pixelFormat = rasterInfo.GetPixelFormat()
            rc2Bounds   = rasterInfo.GetBounds()
            nBandCount  = rasterInfo.GetBandCount()
            nBlockSize  = rasterInfo.GetBlockSize()
            strPrj      = rasterInfo.GetProjection()
            dXRatio     = rc2Bounds.Width()/nWidth
            dYRatio     = rc2Bounds.Height()/nHeight
            colorset    = rasterInfo.GetColorset()
            dMax        = rasterInfo.GetMax()
            dMin        = rasterInfo.GetMin()
            dNoValue    = rasterInfo.GetNoValue()

            print("=========文件基本信息=========")
            print(" 圖片寬:" , nWidth)
            print(" 圖片高:" , nHeight)
            print(" 像素格式:",pixelFormat)
            print(" 波段數:", nBandCount)
            print(" 塊大小:",nBlockSize)
            print(" 是不是塊存儲數據:",rasterInfo.GetIsTile())
            print(" Bound範圍(左上右下):(", rc2Bounds.left, ","\
                    ,rc2Bounds.top,  ",", rc2Bounds.right, ",", rc2Bounds.bottom, ")")

            print(" X、Y分辨率:", dXRatio, dYRatio)
            print(" 顏色表大小:" , len(colorset))
            print(" 極大值:" , dMax)
            print(" 極小值:" , dMin)
            print(" 無值:", dNoValue)

            if strPrj != "":
                print(" 投影:", strPrj)
            else:
                print(" 投影:平面座標系")

            print("=============================")

            fileParser.Close()

    except SystemExit:
        raise
    except:
        sys.stderr.write(
"""An internal error occured.
""")
        raise

按Shift+Enter,便可運行上面的代碼。

相關文章
相關標籤/搜索