當你的組織變得越發成熟,不同用戶將各種類型和屬性的內容項,這些內容項之前的關係錯綜複雜。作爲管理者,你需要定期的整理不同用戶組的、屬於不同的用戶的內容項。這裏將會講述如何使用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
。