Ubuntu上SuperMap iDesktop的Python扩展使用

SuperMap iDesktop的多平台版(支持Linux,包括Ubuntu分发版)可使用python进行数据的交互操做。能够打开一个控制台交互访问当前环境的工做空间、数据源、地图等,也能够将python片断挂载到工具箱中,基于GUI进行交互操做,以及将python代码放入处处理流程之中,实现一系列的自动化数据处理。python

  • 支持anaconda进行python环境的管理,方便多个python环境的切换。
  • 支持安装其它的标准python库,如GDAL、proj等等。
  • 支持本地其它的计算能力调用,如GPU、AI等。
  • 支持iClient python与iServer和Online服务交互。

一、打开python窗口

打开菜单栏,进入“开始”菜单项,选择“python”,便可打开python console窗口。数据库

python窗口分为两个部分,上部为输出区域,下部为输入区域。jvm

  • 输入窗口支持自动完成,按tab键便可弹出提示。

二、建立和切换python运行环境

经过左侧的工具栏,能够打开python文件来运行,或者进行python运行环境的设置。工具

  • 几个强大的特性:
    • 支持anaconda,能够在多个环境间切换。
    • 支持导入/导出python运行环境,方便再配置和迁移环境,在工做组内的共享。

三、处理流程中的python算子

能够将运行成功的python代码挂载到桌面的工具箱中,从而经过图形界面进行快速调用。ui

也能够将python代码加入处理流程中,经过构建一个处理流程来实现更复杂的数据处理和分析的自动化调用。spa

四、交互运行python代码

在python窗口的下半部分,输入并实验:.net

#导入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的帮助信息,输入:code

help(ws)

提示信息输出以下:xml

>>> help(ws)
Help on Workspace in module iobjectspy._jsuperpy.data.ws object:

class Workspace(iobjectspy._jsuperpy.data._jvm.JVMBase)
 |  工做空间是用户的工做环境,主要完成数据的组织和管理,包括打开、关闭、建立、保存工做空间文件。工做空间(Workspace)是 SuperMap 中的一个重要的
 |  概念,工做空间存储了一个工程项目(同一个事务过程)中全部的数据源,地图的组织关系。经过工做空间对象能够管理数据源和地图。工做空间中只存储数据源的
 |  链接信息和位置等,实际的数据源都是存储在数据库或者 UDB 中。工做空间只存储地图的一些配置信息,如地图包含图层的个数,图层引用的数据集,地图范围,
 |  背景风格等。在当前版本中,一个程序只能存在一个工做空间对象,若是用户没有打开特定的工做空间,程序将默认建立一个工做空间对象。用户若是须要打开新的
 |  工做空间对象,须要先将当前工做空间保存和关闭,不然,存储在工做空间中的一些信息可能会丢失。
 |  
 |  例如,建立数据源对象::
 |  
 |      >>> ws = Workspace()
 |      >>> ws.create_datasource(':memory:')
 |      >>> print(len(ws.datasources))
 |      1
 |      >>> ws_a = Workspace()
 |      >>> ws_a.create_datasource(':memory:')
 |      >>> ws == ws_a
 |      True
 |      >>> print(len(ws_a.datasources))
 |      2
 |      >>> ws.close()
 |  
 |  Method resolution order:
 |      Workspace
 |      iobjectspy._jsuperpy.data._jvm.JVMBase
 |      builtins.object
 |  
 |  Methods defined here:
 |  
 |  __init__(self)
 |      Initialize self.  See help(type(self)) for accurate signature.
 |  
 |  add_map(self, map_name, map_or_xml)
 |      添加 Map 到当前工做空间中
 |      
 |      :param str map_name: 地图名称
 |      :param map_or_xml: 地图对象或地图的 XML 描述
 |      :type map_or_xml: Map or str
 |      :return: 新添加的地图在此地图集合对象中的序号。
 |      :rtype: int
 |  
 |  clear_maps(self)
 |      删除此地图集合对象中的全部地图,即工做空间保存的全部地图。
 |      
 |      :return: Workspace 对象自身
 |      :rtype: Workspace
 |  
 |  close_all_datasources(self)
 |      关闭全部的数据源
 |  
 |  close_datasource(self, item)
 |      关闭指定的数据源。
 |      
 |      :param item: 数据源的别名或序号
 |      :type item: str or int
 |      :return: 关闭成功返回 True,不然返回 False
 |      :rtype: bool
 |  
 |  create_datasource(self, conn_info)
 |      根据指定的数据源链接信息,建立新的数据源。
 |      
 |      :param conn_info: udb文件路径或数据源链接信息:
 |                        - 数据源链接信息。具体能够参考 :py:meth:`DatasourceConnectionInfo.make`
 |                        - 若是 conn_info 为 str 时,能够为 ':memory:', udb 文件路径,udd 文件路径,dcf 文件路径,数据源链接信息的 xml 字符串
 |                        - 若是 conn_info 为 dict,为  :py:meth:`DatasourceConnectionInfo.to_dict` 的返回结果。
 |      :type conn_info: str or dict or DatasourceConnectionInfo
 |      :return: 数据源对象
 |      :rtype: Datasource
 |  
 |  get_datasource(self, item)
 |      获取指定的数据源对象。
 |      
 |      :param item: 数据源的别名或序号
 |      :type item:  str or int
 |      :return: 数据源对象
 |      :rtype: Datasource
 |  
 |  get_map(self, index_or_name)
 |      获取指定名称或序号的地图对象
 |      
 |      :param name_or_index: 指定的地图名称或序号
 |      :type name_or_index: int or str
 |      :return: 地图对象
 |      :rtype: Map
 |  
 |  get_map_xml(self, index_or_name)
 |      返回指定名称或序号的地图的 XML 描述
 |      
 |      :param index_or_name: 指定的地图名称或序号
 |      :type index_or_name: int or str
 |      :return: 地图的 XML 描述
 |      :rtype: str
 |  
 |  get_maps(self)
 |      返回全部的Map
 |      
 |      :return: 当前工做空间中的全部 Map
 |      :rtype: list[Map]
 |  
 |  index_of_datasource(self, alias)
 |      查找指定的数据源别名所在序号。不存在将抛出异常。
 |      
 |      :param str alias: 数据源别名
 |      :return: 数据源所在的序号
 |      :rtype: int
 |      :raise ValueError: 不存在指定的数据源别名时抛出异常。
 |  
 |  insert_map(self, index, map_name, map_or_xml)
 |      在指定序号的位置处添加一个地图,地图的内容由 XML 字符串来肯定。
 |      
 |      :param int index: 指定的序号。
 |      :param str map_name: 指定的地图名称。该名称不区分大小写。
 |      :param map_or_xml: 用来表示待插入地图或地图的 XML 字符串。
 |      :type map_or_xml: Map or str
 |      :return: 若是插入地图成功,返回 true;不然返回 false。
 |      :rtype: bool
 |  
 |  is_contains_datasource(self, item)
 |      是否存在指定序号或者数据源别名的数据源
 |      
 |      :param item: 数据源的别名或序号
 |      :type item:  str or int
 |      :return:  存在返回 True,不然返回 False
 |      :rtype: bool
 |  
 |  is_modified(self)
 |      返回工做空间的内容是否有改动,若是对工做空间的内容进行了一些修改,则返回 True,不然返回 False。工做空间负责管理数据源、地图,其中任何
 |      一项内容发生变更,此属性都会返回 True,在关闭整个应用程序时,先用此属性判断工做空间是否已有改动,可用于提示用户是否须要存盘。
 |      
 |      :return: 对工做空间的内容进行了一些修改,则返回 True,不然返回 False
 |      :rtype: bool
 |  
 |  modify_datasource_alias(self, old_alias, new_alias)
 |      修改数据源的别名。数据源别名不区分大小写
 |      
 |      :param str old_alias: 待修改的数据源别名
 |      :param str new_alias: 数据源的新别名
 |      :return: 若是对数据源修改别名成功,则返回 True,不然返回 False
 |      :rtype: bool
 |  
 |  open_datasource(self, conn_info, is_get_existed=True)
 |      根据数据源链接信息打开数据源。若是设置的链接信息是UDB类型数据源,或者 is_get_existed 为 True,若是工做空间中已经存在对应的数据源,则
 |      会直接返回。不支持直接打开内存数据源,要使用内存数据源,须要使用 :py:meth:`create_datasource` 建立内存数据源。
 |      
 |      :param conn_info: udb文件路径或数据源链接信息:
 |                        - 数据源链接信息。具体能够参考 :py:meth:`DatasourceConnectionInfo.make`
 |                        - 若是 conn_info 为 str 时,能够为 ':memory:', udb 文件路径,udd 文件路径,dcf 文件路径,数据源链接信息的 xml 字符串
 |                        - 若是 conn_info 为 dict,为  :py:meth:`DatasourceConnectionInfo.to_dict` 的返回结果。
 |      :type conn_info: str or dict or DatasourceConnectionInfo
 |      :param bool is_get_existed: is_get_existed 为 True,若是工做空间中已经存在对应的数据源,则会直接返回。为 false 时,则会打开新的数据源。对于 UDB 类型数据源,不管 is_get_existed 为 True 仍是 False,都会优先返回工做空间中的数据源。判断 DatasourceConnectionInfo 是否与工做空间中的数据源是同一个数据源,能够查看 :py:meth:`DatasourceConnectionInfo.is_same`
 |      :return: 数据源对象
 |      :rtype: Datasource
 |      
 |      
 |      >>> ws = Workspace()
 |      >>> ds = ws.open_datasource('E:/data.udb')
 |      >>> print(ds.type)
 |      EngineType.UDB
 |  
 |  remove_map(self, index_or_name)
 |      删除此地图集合对象中指定序号或名称的地图
 |      
 |      :param index_or_name: 待删除地图的序号或名称
 |      :type index_or_name: str or int
 |      :return: 删除成功,返回 true;不然返回 false。
 |      :rtype: bool
 |  
 |  rename_map(self, old_name, new_name)
 |      修改地图对象的名称
 |      
 |      :param str old_name: 地图对象当前的名称
 |      :param str new_name: 指定的新的地图名称
 |      :return: 修改为功返回 True,不然返回  False
 |      :rtype: bool
 |  
 |  set_caption(self, caption)
 |      设置工做空间显示名称。
 |      
 |      :param str caption: 工做空间显示名称
 |  
 |  set_description(self, description)
 |      设置用户加入的对当前工做空间的描述或说明性信息
 |      
 |      :param str description: 用户加入的对当前工做空间的描述或说明性信息
 |  
 |  set_map(self, index_or_name, map_or_xml)
 |      将指定地图或地图的 XML 字符串表示的地图替换地图集合对象中指定序号的地图。
 |      
 |      :param index_or_name: 指定的序号或地图名称
 |      :type index_or_name: int or str
 |      :param map_or_xml: 用来替换指定地图的新地图的 XML 字符串表示。
 |      :type map_or_xml: Map or str
 |      :return: 若是操做成功,返回 true;不然返回 false。
 |      :rtype: bool
 |  
 |  ----------------------------------------------------------------------
 |  Class methods defined here:
 |  
 |  close() from builtins.type
 |      关闭工做空间,关闭工做空间将会销毁当前工做空间的实例对象。工做空间的关闭以前确保使用的该工做空间的地图等内容关闭或断开连接。
 |      若是工做空间是在 Java 端注册的,将不会实际关闭工做空间对象,只会解除对 Java 工做空间对象的绑定关系,后续将不能继续操做 Java
 |      的工做空间对象,除非使用 Workspace() 构造新的实例。
 |  
 |  create(conn_info, save_existed=True, saved_connection_info=None) from builtins.type
 |      建立一个新的工做空间对象。在建立新的工做空间前,用户能够经过设定 save_existed 为 True 先保存当前工做空间对象,也能够设定
 |      saved_connection_info 将当前工做空间另存为指定的位置。
 |      
 |      :param WorkspaceConnectionInfo conn_info: 工做空间的链接信息
 |      :param bool save_existed:  是否保存当前的工做空间工做。若是设置为 True,则会先将当前工做空间保存而后再关闭当前工做空间,不然会直接关闭当前工做空间,而后再打开新的工做空间对象。save_existed 只适合用于当前工做空间不在内存中的情形。默认为 True。
 |      :param WorkspaceConnectionInfo saved_connection_info: 选择将当前工做另存到 saved_connection_info 指定的工做空间中。 默认为 None。
 |      :return:  新的工做空间对象
 |      :rtype: Workspace
 |  
 |  open(conn_info, save_existed=True, saved_connection_info=None) from builtins.type
 |      打开一个新的工做空间对象。在打开新的工做空间前,用户能够经过设定 save_existed 为 True 先保存当前工做空间对象,也能够设定
 |      saved_connection_info 将当前工做空间另存为指定的位置。
 |      
 |      :param WorkspaceConnectionInfo conn_info: 工做空间的链接信息
 |      :param bool save_existed:  是否保存当前的工做空间工做。若是设置为 True,则会先将当前工做空间保存而后再关闭当前工做空间,不然会直接关闭当前工做空间,而后再打开新的工做空间对象。save_existed 只适合用于当前工做空间不在内存中的情形。默认为 True。
 |      :param WorkspaceConnectionInfo saved_connection_info: 选择将当前工做另存到 saved_connection_info 指定的工做空间中。 默认为 None。
 |      :return:  新的工做空间对象
 |      :rtype: Workspace
 |  
 |  save() from builtins.type
 |      用于将现存的工做空间存盘,不改变原有的名称
 |      
 |      :return:  保存成功返回 True,不然返回 False
 |      :rtype: bool
 |  
 |  save_as(conn_info) from builtins.type
 |      用指定的工做空间链接信息对象来保存工做空间文件。
 |      
 |      :param WorkspaceConnectionInfo conn_info: 工做空间链接信息对象
 |      :return: 另存成功返回 True,不然返回 False
 |      :rtype: bool
 |  
 |  ----------------------------------------------------------------------
 |  Static methods defined here:
 |  
 |  __new__(cls)
 |      Create and return a new object.  See help(type) for accurate signature.
 |  
 |  ----------------------------------------------------------------------
 |  Data descriptors defined here:
 |  
 |  caption
 |      str: 工做空间显示名称,便于用户作一些标识。
 |  
 |  connection_info
 |      WorkspaceConnectionInfo: 工做空间的链接信息
 |  
 |  datasources
 |      list[Datasource]: 当前工做空间下的全部数据源对象。
 |  
 |  description
 |      str: 用户加入的对当前工做空间的描述或说明性信息
 |  
 |  ----------------------------------------------------------------------
 |  Data descriptors inherited from iobjectspy._jsuperpy.data._jvm.JVMBase:
 |  
 |  __dict__
 |      dictionary for instance variables (if defined)
 |  
 |  __weakref__
 |      list of weak references to the object (if defined)

得到其它对象的帮助能够照上面输入便可。对象

五、更多参考

还可使用iClient Python和GDAL等其它的python库,只须要在对应的python环境中安装便可。

相关文章
相关标签/搜索