GIScript2016是支持Python3的地理空间数据处理和分析工具包,支持Jupyter和Spark,能够运行在单机以及大规模集群之上。GIScript with Jupyter+Spark on Docker这一技术栈很是强大,经过conda包管理程序还能够安装大量的科学计算包,如NumPy、Scikit、Pandas以及OpenCV、NLTK、Tensorflow、Keras等机器学习软件包,实在是大数据处理、分析和深刻研究的神器。docker
在前篇博文【GIScript2016-Docker上的Jupyter Notebook部署】中,介绍了将GIScript部署到Docker中的方法。而后咱们能够将这个容器镜像推送到DockerHub上,就能够在联网的其它计算机中使用了。浏览器
首先,提交一个本身DockerHub帐号下的镜像(若是尚未帐号,就在hub.docker.com上注册一个),而后将当前的镜像提交为该帐号的版本。以下所示:机器学习
docker commit GISpark openthings/gispark
首先,登录到Docker帐号,以下:工具
docker login
根据提示输入在DockerHub上注册的帐号和密码。学习
开始将Docker镜像推送到DockerHub云存储,以下。大数据
docker push openthings/gispark
上面的openthings为本身在Dockerhub上的注册用户名,须要改成本身的。下同。spa
而后再去其它计算机上,拉取该镜像下来:.net
docker pull openthings/gispark
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
按照控制台窗口的提示,按Ctrl+C而后选y或者连按两次Ctrl+C,便可退出运行状态。code
使用docker start 容器ID
启动中止的实例(使用docker ps -a查看列表)。 使用docker restart 容器ID
能够重启运行中的实例。
打开浏览器,输入:http://localhost:9000 ,便可看到:
点取“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,便可运行上面的代码。