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

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