ArcGIS API For Python 05 - 管理内容

当你的组织变得越发成熟,不同用户将各种类型和属性的内容项,这些内容项之前的关系错综复杂。作为管理者,你需要定期的整理不同用户组的、属于不同的用户的内容项。这里将会讲述如何使用Python API来管理它们。

内容项的属性

一个Item有多种属性,可以在jupyter notebook中使用dir(<item instance>)查看它的属性,常用的属性有:

  • id
  • title
  • tags

更新内容向属性

可使用Itemupdate方法来更新内容向的属性信息,其参数与上一篇博客的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,表示关系类型,可选值有Map2ServiceWMA2CodeMap2FeatureCollectionMobileApp2CodeService2DataService2Service;另一个参数是direction,可选值有forwardreverse

例如::

# 若要查询和上传的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_itemrel_type

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章