我有一个web地图,我希望与一组在ArcGIS企业共享。使用Portal,我可以将地图分享给群组:
但是,如果我尝试使用Python API与同一组共享相同的映射,则无法与组共享该映射:
cbmt.分享(org=真正的,组=basemaps_group.标题){“notSharedWith”:[Basemaps / Cartes de base],“itemId”:“21 e8f2ab90904f4ba38e44386f03851c”}
请注意,我能够在同一脚本中成功地与该组共享其他地图(例如,Esri basemaps)。
为什么我不能使用Python API与组共享地图?
解决了!进入解决方案。
你好,乔纳森,
我正在尝试使用您推荐的方法与用户共享内容,但无法找到它。
这是我写的一个函数。函数完成了,但实际上并没有显示共享了任何内容。
我也有同样的问题帕蒂Charlotteson.文档说您可以传入组ID字符串列表或相同的CSV。对我来说都不奏效。他们没有坠毁,但也没有按照我的要求去做。任何人在ESRI地理信息系统关注论坛上的bug ?
如Patty所示,您可以创建一个组对象并将其传递给Item。作为组参数共享。请注意,医生说你应该通过一个列表我就这么做了,效果很好。我只需要一个组,所以我只尝试了一个单元素列表。
这就是我的情况。您可以使用Update Capabilities向组共享,但是您需要向share方法传递一个额外的参数(allow_members_to_edit = True)。
如。
map_item_id = 'c42004226e264f5389dbaf7d6fea60ae' group_id = '591520ab3f2f421b83e271e1d40b74f3' # a Update Capable Group map_item = gis.content.get(map_item_id)如果map_item: share_map = map_item。分享(组=group_id, allow_members_to_edit=True) if share_map: print(share_map) # ------------- {'results': [{'itemId': 'c42004226e264f5389dbaf7d6fea60ae', 'success': True, 'notSharedWith': []}]}
我也有这个问题。必须传递组ID而不是组本身。
还遇到了一个意想不到的情况,当试图将项目共享到一个组时,将该项目从“组织”或“公共”设置回共享级别“所有者”。
这可能是因为我没有阅读足够的Python API文档,但我发现,虽然我只是试图用这个方法将一个项目添加到一个组中,因为我没有为everyone和org参数指定一个值,它也将它们应用到项目中,但使用默认值。所以项目被添加到预期的组中,并将它的everyone和org值设置为False,这将它的共享切换回“所有者”,破坏了该项目所属的应用程序和地图。
为了避免这种情况,首先使用与物品的财产共享来收集当前的共享设置,并将这些设置与您在使用时添加的任何共享添加项一起使用分享方法。否则,您可能会以编程方式无意中更改组织中许多项目的共享设置而告终,并且突然在不知道原因的情况下破坏了许多面向公众的资源。
我假设share方法将允许您更改指定的共享设置,但是我发现,如果我没有指定每个参数(即使是那些没有更改且是可选的参数),该方法无论如何都会将它们更改为默认值。在我看来不是很好,也许ESRI可以弥补这一点。
这是我得到的,我可以传入三个不同的组,它们都是我创建的,它会添加其中一个。没有什么关系,我传递单个id,或者传递一个id列表,或者传递一个组对象列表(如这里所示)——总是相同的——它将与一些组共享,而不是与其他组共享。一定有什么我看不见的神奇的"别和这个人分享"的标志。这是jupyter笔记本上的一个片段。
Service_id = "e5b7345b622040f096fa923a807f55d0" group_manager = gis。Groups gg = group_manager。search(query='GIS Team')[0] print("group id", gg.id) gc = group_manager.search(query='Cartographers')[0] print("group id", gc.id) ge = group_manager. id . 'search(query='应急管理')[0]print("组id", ge.id) content_manager = gis. id。内容服务= content_manager.get(service_id) print("service", service) #rval = gis.content。分享_items([service_id], groups=['Cartographers']) rval = service.share(groups=[gg,gc,ge]) print("rval =", rval) print('shared with', service.shared_with)
下面是输出。一切都“成功”,它总是返回“success=True”和“notSharedWith”的一些输入。
group id 53378c27d6b34383bc4fc2aa87fc630d group id 8b6bd8ec1a4142f988119e6290af51d7 group id 0682bb6881ab41b691bedafd2f2740b2 service <项目标题:"Surveys_MIL"类型:地图图像层所有者:bwilson@CLATSOP> rval = {'results': [{'itemId': 'e5b7345b622040f096fa923a807f55d0', 'success': True, 'notSharedWith': [", ' 53378c27d6b34383bc4fc287fc630d ', '8b6bd8ec1a4142f988119e6290af51d7']}]}与{'everyone': False, 'org': False, 'groups':[<组标题:“应急管理”所有者:bwilson@CLATSOP>]}