GeoNotebook初识

2019-01-07  本文已影响0人  VickyShen

概述:

GeoNotebook是基于jupter notebook的扩展,提供了交互式的可视化界面和基于python的地理数据的分析。它是基于开源工具。

架构

GeoNoteBook在jupter notebook的界面右侧添加了一个openstreet map样式的地图。
提供了python API,使得用户在地图上可视化栅格和矢量数据
也提供了数据区域选择的工具。

安装

最推荐用docker方式安装,这样就不用管环境了。
docker for beginnings: https://docker-curriculum.com/
方式一:拉最新镜像:

docker pull geonotebook/geonotebook

方式二:建立容器
首先git clone https://github.com/OpenGeoscience/geonotebook.git
然后在Dockerfile所在的路径在建立容器

docker build -t geonotebook .

https://github.com/OpenGeoscience/geonotebook/tree/master/devops/docker
完成上述步骤后,即可运行容器

docker run -p 8888:8888 -v /path/to/your/notebooks:/notebooks  -it --rm geonotebook

可能会遇到的问题
如果打开了notebook以后,运行会卡住,原因是pymzq的版本冲突,应该调整至17.0.0
一些解释
First it maps the docker container's 8888 port to your system's 8888 port. This makes the container available to your host systems web browser.
首先是端口映射,将容器的8888端口映射到主机的8888端口,这样就可以用主机浏览器访问容器。

Second, it maps a host system path /path/to/your/notebooks to the docker containers /notebooks directory. This ensures that the notebooks you create, edit, and save are available on your host system, and are not destroyed when the you exit the container.
其次是路径映射,保证在容器中的创建更新在主机系统中也存在
Third, the notebook starts in an interactive terminal and is accessible through http://localhost:8888.
第三,你可以用 [http://localhost:8888]访问notebook
Finally, we include the --rm option to clean up the notebook after you exit the process.
最后,--rm表示当退出进程清空notebook

学习Example1

geonotebook object

M是geonotebook的内置对象,提供了大量用于与地图交互的方法。
比如M.set_center(120,30,6);
M.set_center是一个Python语句,使用远端的进程调用来改变javascript地图的位置

标准的jupyter notebook有三个部分组成。
(1)笔记本web应用程序:用于交互编写和运行代码以及编写笔记本文档
(2)内核:笔记本web应用程序启动的独立进程,它以给定语言运行用户代码,并将输出返回给笔记本Web应用程序。
(2)笔记本文档,自包含文档,其中包含笔记本Web应用程序中可见的所有内容的表示,包括计算的输入和输出,叙述性文本,方程式,图像以及对象的富媒体表示。每个笔记本文档都有自己的内核。

image.png
当您执行code M.set_center(120,30,6);时,字符串code M.set_center(120,30,6);通过WebSocket传输到Web服务器,然后通过ZeroMQ代理到IPykernel,在那里它被评估为Python表达式。 这是Jupyter笔记本从Web浏览器获取代码并在交互式shell(内核)中执行代码的标准方式。 M是内核中的一个对象,它有一个函数set_center。 该函数执行并返回一个promise(异步对象),这就是为什么你在单元格输出中看到的东西,比如<promise.promise.Promise at 0x7f567dd8f290>,并且该函数使用自定义jupyter通信通道(或“Comm”)告诉地图更改其视口,使中心位于(在这种情况下)30纬度,120经度,缩放级别为6。

利用小组件

geonotebook可以一些组件来与地图交互

annotation

除了支持利用python语言与地图进行通信以外,Geonotebook还允许地图上的对象和事时间反作用于python 内核对象。一种主要方式是使用geonotebook注释,可以用来画图形,以及获取图形的地理位置。

调研过程中遇到的未解决的问题

栅格地图无法正常加载,运行example2会遇到。
link:http://114.115.255.52:8888

上一篇下一篇

猜你喜欢

热点阅读