VScode在Ubuntu上可以安装和使用SuperMap Python的相关模块,将各种Python库(如GDAL、Proj以及各种科学计算python库等)结合起来使用。通过同时调用iClient Python和iObjects Python,与SuperMap iServer及在线服务进行互访,将本地应用与在线服务实现无缝的整合。
1、GIS Python库
SuperMap的Python支持包括:
- 基础模块
- iClient Python,用于访问iServer及在线服务的Python库。
- iObjects Python,基于iObjects Java的原生GIS支持库的Python接口。
- 使用环境
- Python console,python的原生console。
- iPython console,ipython的原生console。
- Jupyter Notebook,支持Notebook格式。
- JupyterHub,支持基于多用户的Notebook环境。
- JupyterHub for K8s,支持运行于Kubernetes集群上的基于多用户的Notebook环境。
- iDesktop Python Console,在桌面GIS环境中的python原生console。
- iServer with Jupyter Notebook,集成到iServer的Notebook服务。
- iDataInsight,集成到"数据洞察"WebApp的python支持。
- iPortal,集成到"GIS门户"WebApp的python支持。
- SuperMap Online,集成到"在线服务"WebApp的python支持。
2、安装组件和支持库
需要同时安装iObjects Java和iObjects Python库。
- 如果需要访问在线服务,需要安装iClient Python。
- CUDA toolkit
- PyTorch
- pip3 install torch torchvision
- https://pytorch.org/get-started/locally/
2.1 下载iObjects Java组件
iObjects Python需要该组件来执行空间计算操作。
- 默认安装路径:/opt/SuperMap
由于文件较大,使用wget -c实现断点续传。如下:
wget -c http://download.supermap.com.cn/2019/SuperMap9D/9.1.1/iObjects_911_release_20190129/supermap-iobjectsjava-9.1.1-16827-70590-linux64-all-Bin.tar.gz
- 解压后复制所有文件到JupyterHub安装的根目录下的目录resources/Bin,这是我这里的默认目录。
- 这是使用共享存储的目录,如果想要放到其它目录,需要同时修改下面的脚本文件。
- 同时需要相应的license文件(可以在线申请获得),如resources/supermap_any_2019.lic9d,
- 如果在Docker中使用:
- 在Build过程放入 ./SuperMap/supermap_any_2019.lic9d。
- 然后再复制到Docker image的/opt/SuperMap目录下。
- 如果在Docker中使用:
2.2 下载libpng支持库,用于Ubuntu 18.04
iObjects Java需要用到libpng12-0_1.2.54-1ubuntu1.1_amd64.deb,但是我这个Docker镜像用的Ubuntu 18.04里没有默认安装,需要先下载下来,在Docker Build过程中安装进去。
- 下载libpng支持库的相关链接如下:
- 将下载的libpng12-0_1.2.54-1ubuntu1.1_amd64.deb复制到目录 resources/Bin。
2.3 安装iobjects-python
# 添加 iObjects-python 软件包。
RUN pip install iobjectspy==9.1.1
其它版本,相应指定安装即可。
2.4 安装iclient-python
# 添加 iclient-python 软件包。
RUN pip install iclientpy
其它版本,相应指定安装即可。
3、使用GIS库
打开VSCode,输入代码:
#导入iobjectspy的python库。
from iobjectspy import *
#获得工作空间对象。
ws=workspace()
#获得数据源集合对象。
ds=ws.datasources
#遍历数据源集合,输出相关信息。
for i in ds:
print(i)
#遍历数据源集合,输出每个数据集的别名。
>>> for i in ds:
>>> print(i.alias)
>>>
SuperMapCloud
ChinaRS
查看工作空间对象ws的帮助信息,输入:
help(ws)
具体语法请参考iObjectPy,在iDesktop里也是完全一样的。
更多参考: