python - arcgis 附加托管要素图层。“作业失败”错误
问题描述
我正在尝试获取我生成的这个 zip 文件以更新数据-> 将数据附加到图层。如果我手动下载我生成的 zip 文件并手动进入并将数据附加到图层,它会完全按照我想要的方式工作。问题是我的python代码,我承认我是新手。
我想确保将数据附加到我的层,也就是我在 python 上手动执行的操作。我尝试根据我看过的教程编写代码,但我遇到了一个我无法弄清楚的错误。我不确定我所拥有的是否会完全替换图层或只是添加新数据(这是我想要完成的)
附件是我的代码和我得到的错误照片:
from arcgis.gis import GIS
from arcgis.features import FeatureLayerCollection
import requests
import urllib.request
from zipfile import ZipFile
import xarray as xr
import matplotlib
import matplotlib.pyplot as plt
import metpy.calc as mpcalc
from metpy.units import units
from shapely import geometry
import numpy as np
import fiona
#Load data
#urllib.request.urlretrieve('rap.t00z.awp130pgrbf00.grib2', 'a.grib2')
# Open data file & read data
ds = xr.open_dataset('rap.t23z.awp252pgrbf00.grib2', engine='cfgrib')
lon, lat = ds.longitude.values-360., ds.latitude.values
t2m = mpcalc.smooth_gaussian((ds.variables['t2m'].values*units('K')).to('degF').magnitude, 4)
# Plot
fig = plt.figure(figsize=(12,10))
ax = fig.add_subplot(111)
cs = ax.contourf(lon, lat, t2m, levels=[10,20,30,32,36]) ## EDIT CONTOUR LEVELS HERE
#plt.close()
#plt.show()
# Write contours to shapefile
lvl_lookup = dict(zip(cs.collections, cs.levels))
PolyList=[]
for col in cs.collections:
z = lvl_lookup[col] # the value of this level
for contour_path in col.get_paths():
# create the polygon for this level
for ncp,cp in enumerate(contour_path.to_polygons()):
lons = cp[:,0]
lats = cp[:,1]
new_shape = geometry.Polygon([(i[0], i[1]) for i in zip(lons,lats)])
if ncp == 0:
poly = new_shape # first shape
else:
poly = poly.difference(new_shape) # Remove the holes
PolyList.append({'poly':poly,'props':{'z': z}})
schema = {'geometry': 'Polygon','properties': {'z': 'float'}}
crs = {'no_defs': True, 'ellps': 'WGS84', 'datum': 'WGS84', 'proj': 'longlat'}
with fiona.collection('rap_temp.shp', 'w', driver='ESRI Shapefile', crs=crs, schema=schema) as output:
for p in PolyList:
output.write({'properties': p['props'],
'geometry': geometry.mapping(p['poly'])})
# create a ZipFile object
rap_temp = ZipFile('rap_temp2.zip', 'w')
# Add multiple files to the zip
rap_temp.write('rap_temp.cpg')
rap_temp.write('rap_temp.dbf')
rap_temp.write('rap_temp.prj')
rap_temp.write('rap_temp.shp')
rap_temp.write('rap_temp.shx')
#Close the zip file
rap_temp.close()
# ARC GIS
#Login
user = '****'
password = '****'
gis = GIS('https://rvhlcps.maps.arcgis.com', user, password)
un = gis.properties.user.username
print('Logged in as: {}'.format(un))
#overwrite layer with new data
itemid = '41b06ab534504b388c17b89c04bc0eef'
dataitem = gis.content.get(itemid)
print('1')
flayercol = FeatureLayerCollection.fromitem(dataitem)
print('2')
flayercol.manager.overwrite('rap_temp2.zip')
print('Layer Updated')
这是错误:
---------------------------------------------------------------------------
Exception Traceback (most recent call last)
<ipython-input-2-2dc8c4b4cf39> in <module>
14 flayercol = FeatureLayerCollection.fromitem(dataitem)
15 print('2')
---> 16 flayercol.manager.overwrite('rap_temp2.zip')
17 print('Layer Updated')
/opt/tljh/user/lib/python3.7/site-packages/arcgis/features/managers.py in overwrite(self, data_file)
2269 if related_data_item.update(item_properties=params, data=data_file):
2270 published_item = related_data_item.publish(
-> 2271 publish_parameters, overwrite=True
2272 )
2273 if published_item is not None:
/opt/tljh/user/lib/python3.7/site-packages/arcgis/gis/__init__.py in publish(self, publish_parameters, address_fields, output_type, overwrite, file_type, build_initial_cache, item_id, geocode_service)
12741 return Item(self._gis, ret[0]["serviceItemId"])
12742 else:
> 12743 serviceitem_id = self._check_publish_status(ret, folder)
12744 return Item(self._gis, serviceitem_id)
12745
/opt/tljh/user/lib/python3.7/site-packages/arcgis/gis/__init__.py in _check_publish_status(self, ret, folder)
13091 # print(str(job_response))
13092 if job_response.get("status") in ("esriJobFailed", "failed"):
> 13093 raise Exception("Job failed.")
13094 elif job_response.get("status") == "esriJobCancelled":
13095 raise Exception("Job cancelled.")
Exception: Job failed.
解决方案
推荐阅读
- javascript - 禁用“屏幕关闭”按钮
- vue.js - 如何在构建期间设置来自 package.json 的环境变量
- javascript - 如何使用 customvalidator 验证 2 个输入,客户端
- c# - 将图像 src 发布到 MVC 控制器
- powerbi - DAX - 根据日期值将行值拆分为新列
- c# - Emgucv 不释放资源
- python - 为什么 python 日志记录日志文件不按顺序排列?
- mqtt - 停止已在使用的 mosquitto 代理的命令是什么
- javascript - FabricJS中是否可以进行固定缩放
- python - nrf24l01 通信树莓派无法连接