尝试使用 ArcGIS API for Python 进行“更新插入”时出现未知错误

问题描述 投票:0回答:1

我正在尝试通过 ArcGIS API for Python 对要素图层执行“upsert”(更新 + 插入)操作。我的输入数据是一个 geojson 文件,根据可用的 guides:

上传
data_item = gis.content.add(
    item_properties={
        'title': 'My Data File',
        'type': 'GeoJson',  
        'overwrite': True,
    },
    data="myfile.geojson"
)

然后我尝试追加操作:

my_layer.append(
    item_id=data_item.id,
    upload_format='geojson', 
    upsert=True,
    upsert_matching_field='an_unique_field',
    update_geometry=True,
)

这将返回

Exception: Unknown Error (Error Code: 500)
。 geojson 文件有效(在 geojson.io 中检查)。尝试使用较小的文件(原始文件有约 4000 个多边形)或附加 featureCollection 而不是 geojson 会失败并出现相同的错误。通过 ArcGIS Online 手动更新数据可以很好地处理完全相同的文件。这里有线索吗?

我已成功使用

edit_features()
而不是
append()
执行了操作,但它需要查询图层,将 OBJECTID 映射到
an_unique_field
,创建单独的
adds
updates
集合,然后将集合拆分为250 个特征块。如果可能的话,我想通过一次
append
调用来跳过所有这些。

python arcgis
1个回答
0
投票

结果是由于

upsert_matching_field
中缺少值。我在其他属性中也缺少值(配置为允许空值)。更正这些问题后,就消除了
unknown error
,但该功能仍然无法完成(它运行了 2 小时,然后出现错误,并显示权限被拒绝的消息)。

有点愚蠢,但这可以更好地记录下来,并且错误应该提供更多信息。我假设该函数会跳过空白/虚假值。关于需要

source_table_name
的部分似乎也是一个文档缺陷。

© www.soinside.com 2019 - 2024. All rights reserved.