【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>
GIScript2016是支持Python3的地理空间数据处理和分析工具包,支持Jupyter和Spark,可以运行在单机以及大规模集群之上。GIScript with Jupyter+Spark on Docker这一技术栈非常强大,通过conda包管理程序还可以安装大量的科学计算包,如NumPy、Scikit、Pandas以及OpenCV、NLTK、Tensorflow、Keras等机器学习软件包,实在是大数据处理、分析和深入研究的神器。
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上的注册用户名,需要改为自己的。下同。
1.3 拉取镜像到本机
然后再去其它计算机上,拉取该镜像下来:
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,可以看到当前运行的所有容器的列表。
2.2 关闭容器实例
按照控制台窗口的提示,按Ctrl+C然后选y或者连按两次Ctrl+C,即可退出运行状态。
2.3 重启容器实例
使用docker start 容器ID
启动停止的实例(使用docker ps -a查看列表)。
使用docker restart 容器ID
可以重启运行中的实例。
2.4 开始使用
打开浏览器,输入:http://localhost:9000 ,即可看到:
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,即可运行上面的代码。
来源:oschina
链接:https://my.oschina.net/u/2306127/blog/755743