当你的组织变得越发成熟,不同用户将各种类型和属性的内容项,这些内容项之前的关系错综复杂。作为管理者,你需要定期的整理不同用户组的、属于不同的用户的内容项。这里将会讲述如何使用Python API来管理它们。
内容项的属性
一个Item
有多种属性,可以在jupyter notebook中使用dir(<item instance>)
查看它的属性,常用的属性有:
- id
- title
- tags
更新内容向属性
可使用Item
的update
方法来更新内容向的属性信息,其参数与上一篇博客的add
方法的参数一致。
jiaoxn_item = gis.content.get("1f295683dc174b0788bb57264048b20b")
jiaoxn_item.tags
jiaoxn_item.update(item_properties={"tags": "python, jiaoxn"})
jiaoxn_item.tags
下载内容项
通过Python API可下载多种内容项的信息,例如:缩略图、数据或者元数据。
下载内容项数据
Item
类实例的get_data
方法将会读取与内容项关联二进制或者文本数据,然后以byte array的方式返回。
- 如果文本数据为JSON,则将其数据转为Python的字典返回;如果是其他类型的文本数据,将以字符串的方式返回
- 如果数据不是文本类型,返回二进制文件以及下载数据的路径
ports_csv_item = gis.content.get("a0b157b9ce2440a39551967c7c789835")
ports_csv_item.get_data()
下载元数据
Python API将会以XML文件的方式下载元数据,其使用方法名称为download_metadata
。
ports_csv_item.download_metadata(save_folder=r'\pathway\to\download\the\metadata\')
下载缩略图
Python API支持使用download_thumbnail
方法下载缩略图。
ports_csv_item.download_thumbnail(save_folder= r'pathway\to\your\directory\')
删除内容项
Python API使用Item
对象实例的delete
方法删除内容项。当删除托管图层时,该函数还将删除支持该项的托管服务。
item_for_deletion = gis.content.get('a1752743422b45f791b7eb4dbc5a8010')
item_for_deletion.delete()
删除保护
可使用Item
对象实例的protect
方法包括内容项不被删除。
ports_csv_item.protect(enable = True)
查找内容项之间的关系
你可在你的Web GIS中添加任何类型的内容。不同类型的内容,对应着不同的操作。一旦添加了一个内容项,它很少是单独存在的,更多的时候与其他内容项存在的联系。例如:可能基于某个内容项发布一个新的内容项来创建新的服务,又或者添加一个或多个图层到一个WebMap或者WebScene中。当你执行上述操作时,GIS将构建了这些内容项的关系。根据设计的内容项,GIS支持不同的关系类型。这个关系表示了,内容项是如何与另一个内容项关联的。
Item
类有3个方法可以用来查询这个关系:
-
dependent_upon()
:返回当前内容项所依赖的内容项 -
dependent_to()
:返回哪些内容项依赖此内容项 -
related_items()
:返回当前内容项相关的内容项
related_items()
有两个参数,一个是rel_type
,表示关系类型,可选值有Map2Service
、WMA2Code
、Map2FeatureCollection
、MobileApp2Code
、Service2Data
和Service2Service
;另一个参数是direction
,可选值有forward
和reverse
。
例如::
# 若要查询和上传的CSV文件相关的服务有哪些
ports_csv_item.related_items('Service2Data', 'reverse')
# 查询和当前服务相关的数据有哪些
ports_feature_layer.related_items('Service2Data', 'forward')
添加关系
你可以使用add_relationship()
方法来添加两个内容之间的关系。
webmap_related_item = gis.content.get('77561ef541054730af5597ff4d1a3d98')
webmap_item.add_relationship(rel_item= webmap_related_item, rel_type= 'Map2Service')
删除关系
可调用delete_relationship()
方法删除内容项直接关联的消息,该方法需要传入rel_item
和rel_type
。