溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

GIScript2016-Docker上的Jupyter Notebook部署是怎樣的

發(fā)布時間:2021-12-04 14:43:15 來源:億速云 閱讀:137 作者:柒染 欄目:云計算

這篇文章給大家介紹GIScript2016-Docker上的Jupyter Notebook部署是怎樣的,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

GIScript2016是支持Python3的地理空間數據處理和分析工具包。

GIScript2016支持Jupyter和Spark,可以運行在單機以及大規(guī)模集群之上。GIScript with Jupyter+Spark on Docker這一技術棧非常強大,通過conda包管理程序還可以安裝大量的科學計算包,如NumPy、Scikit、Pandas以及OpenCV、NLTK、Tensorflow、Keras等機器學習軟件包,實在是大數據處理、分析和深入研究的神器。

GIScript2016-Docker上的Jupyter Notebook部署是怎樣的

GIScript2016將C++系統庫封裝為Python的過程全部開源了出來,方便研究者使用C++編寫自己的專業(yè)算法庫,然后添加到這個框架中來,是編寫高性能的Python擴展模塊的極佳參考。

下面我們在Docker中進行部署GIScript2016的方法,然后使用Jupyter Notebook進行基于瀏覽器的訪問。一旦環(huán)境設置完畢,就可以在很多環(huán)境下部署Docker容器,使用非常方便。Jupyter Notebook是基于瀏覽器的編程“筆記本”,非常適合進行數據探索類的研究。

1.安裝支持環(huán)境

1.1 安裝Docker容器支持環(huán)境

我用的Mac OS X,現在的Docker已經原生支持了,不用像以前要安裝VirtualBox,再使用Vagrant了。
到這里http://www.docker.io下載相應的版本,然后運行安裝程序,就可以了。

如果使用Ubuntu,建議使用 http://get.docker.io下載的腳本進行安裝,官方的安裝方法貌似與Ubuntu內置的lxd有沖突,經常出問題。方法如下:

wget http://get.docker.io -O docker-setup.sh
sudo chmod +x docker-setup.sh
./docker-setup.sh

1.2 安裝Jupyter Notebook容器

采用Jupyter的官方Docker技術棧。

docker run -it --name GISpark 
    -p 9000:8888 
    --user root -e GRANT_SUDO=yes 
    -v /本地目錄/GISpark:/home/jovyan/work/GISpark 
    jupyter/all-spark-notebook
  • 如果Docker下載太慢,嘗試加入這個鏡像庫:https://pee6w651.mirror.aliyuncs.com

1.3 安裝和更新容器內軟件

打開瀏覽器,輸入:http://localhost:9000。

在里面打開一個終端窗口,運行升級程序,安裝需要的軟件:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install python3-dev

2. 下載和編譯GIScript2016

2.1 下載源代碼

git clone https://git.oschina.net/GIScript/GIScript2016.git

2.2 安裝SIP

進入SIP目錄,首先進入3dParty,運行:

python3 configure.py
make 
sudo make install

2.3 編譯GIScript代碼

返回上級目錄,運行:

python3 configure.py

進入Build目錄,運行:

sudo make install

2.4 編譯問題解決

  • 嗯,<sip.h>沒找到?

進去SIP/Build目錄,打開GNUmake.opt文件,按照下面修改:

# Set python.  If you don't
#PY_LIB     = "/usr/lib/python3"
#PY_INCLUDE = "/usr/include/python3.5m"
PY_LIB     = "/opt/conda/lib/python3.5"
PY_INCLUDE = "/opt/conda/include/python3.5m"

再次運行make,又出現fatal error: X11/Xlib.h: No such file or directory,估計是缺少x11的支持庫了。
安裝x11的開發(fā)庫:

sudo apt-get install libx11-dev

再次運行make,編譯通過。

3. 運行測試

運行python3,輸入:

from GIScript import GISCore

顯示找不到啊,到/opt/conda/lib/python3.5/dist-packages下去看,文件全都在呢!

3.1 安裝Python的GIScript庫

估計是權限吶、路徑吶啥的沒有找到。換個目錄試試:

cp GIScript ../site-packages

再次運行,這次成功了,不過又提示libSuBase.so: cannot open shared object file: No such file or directory。有一些基礎動態(tài)庫沒有找到,下面還需要設置一下UGC基礎庫的路徑。

3.2 設置UGC動態(tài)庫的訪問路徑

這里需要修改start.sh這個文件,在啟動Jupyter是設置,這個文件/usr/local/bin/目錄下。 首先拷貝過來,修改,再拷貝回去。在前面添加內容:

# Add GIScript Library Path of UGC.
export SUPERMAP_HOME=/home/jovyan/work/supermap/GIScript2016
export LD_LIBRARY_PATH=$SUPERMAP_HOME/Bin64_Linux_gcc4_9:$LD_LIBRARY_PATH

然后重新啟動docker。

docker stop GISpark
docker start GISpark

參考這里設置動態(tài)庫的路徑。除了上面的路徑之外,因為Ubuntu14.04有點老了,還有一些系統庫的版本需要更新。

cd /opt/conda/lib    #運行環(huán)境的系統庫目錄,根據版本不同。
mv libstdc++.so libstdc++.so.x
mv libstdc++.so.6 libstdc++.so.6.x
mv libsqlite3.so.0 libsqlite3.so.0.x
mv libsqlite3.so libsqlite3.so.x
mv libgomp.so.1.0.0 libgomp.so.1.0.0.x
mv libgomp.so.1 libgomp.so.1.x
mv libgomp.so libgomp.so.x

3.3 運行例程

3.3.1 Jupyter Notebook

from GIScript import GISCore
print(GISCore)

將顯示GISCore的幫助信息,系統配置成功。

3.3.2 Spark Shell

from GIScript import GISCore
from GIScript import Data
from pyspark import SparkConf, SparkContext

APP_NAME = "GeoTest For Spark"
 
def main(sc):
    pnt = GISCore.Point2D(12.0,32.0)
    geo = Data.GeoPoint()
    b = geo.Make(pnt)
    br = sc.broadcast(geo)
    c = sc.parallelize(range(0,1000),10).map(lambda x:br.value.GetPoint()).collect()
    for i in c:
        print(i)

    sc.stop()

if __name__ == "__main__":
    # Configure Spark
    conf = SparkConf().setMaster("spark://master:7077")
    conf = conf.setAppName(APP_NAME)
    sc   = SparkContext(conf=conf)

    main(sc)

3.3.3 獲取文件信息

?# 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(" 塊大?。?quot;,nBlockSize)
            print(" 是否是塊存儲數據:",rasterInfo.GetIsTile())
            print(" Bound范圍(左上右下):(", rc2Bounds.left, ","\
                    ,rc2Bounds.top,  ",", rc2Bounds.right, ",", rc2Bounds.bottom, ")")

            print(" X、Y分辨率:", dXRatio, dYRatio)
            print(" 顏色表大?。?quot; , 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

關于GIScript2016-Docker上的Jupyter Notebook部署是怎樣的就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI