I'm trying to add features through the edit_features function from the ArcGIS api for python. Every time I try this I get an error and I can't find what is causing it.
Trying
vogels_fs_add_test = [{"attributes":
{"waarschijnlijkheid": 0.88,
"datum_observatie": 1669977330000,
"x_coordinaat": 136605.4818658833,
"y_coordinaat": 441738.7799215694},
"geometry":
{"x": 136605.4818658833, "y": 441738.7799215694}}]
vogel_fs.layers.edit_features(adds=vogels_fs_add_test)
gives me the following error:
---------------------------------------------------------------------------
JSONDecodeError Traceback (most recent call last)
~\AppData\Local\ESRI\conda\envs\machine_learning\lib\site-packages\requests\models.py in json(self, **kwargs)
970 try:
--> 971 return complexjson.loads(self.text, **kwargs)
972 except JSONDecodeError as e:
~\AppData\Local\ESRI\conda\envs\machine_learning\lib\json\__init__.py in loads(s, cls, object_hook, parse_float, parse_int, parse_constant, object_pairs_hook, **kw)
345 parse_constant is None and object_pairs_hook is None and not kw):
--> 346 return _default_decoder.decode(s)
347 if cls is None:
~\AppData\Local\ESRI\conda\envs\machine_learning\lib\json\decoder.py in decode(self, s, _w)
336 """
--> 337 obj, end = self.raw_decode(s, idx=_w(s, 0).end())
338 end = _w(s, end).end()
~\AppData\Local\ESRI\conda\envs\machine_learning\lib\json\decoder.py in raw_decode(self, s, idx)
354 except StopIteration as err:
--> 355 raise JSONDecodeError("Expecting value", s, err.value) from None
356 return obj, end
JSONDecodeError: Expecting value: line 1 column 1 (char 0)
During handling of the above exception, another exception occurred:
JSONDecodeError Traceback (most recent call last)
~\AppData\Local\ESRI\conda\envs\machine_learning\lib\site-packages\arcgis\gis\_impl\_con\_connection.py in _handle_response(self, resp, file_name, out_path, try_json, force_bytes, ignore_error_key)
884 try:
--> 885 data = resp.json()
886 except JSONDecodeError:
~\AppData\Local\ESRI\conda\envs\machine_learning\lib\site-packages\requests\models.py in json(self, **kwargs)
974 # This aliases json.JSONDecodeError and simplejson.JSONDecodeError
--> 975 raise RequestsJSONDecodeError(e.msg, e.doc, e.pos)
976
JSONDecodeError: Expecting value: line 1 column 1 (char 0)
During handling of the above exception, another exception occurred:
Exception Traceback (most recent call last)
<ipython-input-31-1212c54b9759> in <module>
----> 1 vogel_fs_origin.edit_features(adds=vogels_fs_add_test)
~\AppData\Local\ESRI\conda\envs\machine_learning\lib\site-packages\arcgis\features\layer.py in edit_features(self, adds, updates, deletes, gdb_version, use_global_ids, rollback_on_failure, return_edit_moment, attachments, true_curve_client, session_id, use_previous_moment, datum_transformation, future)
2958 return EditFeatureJob(future, self._con)
2959 # return future
-> 2960 return self._con.post_multipart(path=edit_url, postdata=params)
2961 except Exception as e:
2962 if str(e).lower().find("Invalid Token".lower()) > -1:
~\AppData\Local\ESRI\conda\envs\machine_learning\lib\site-packages\arcgis\gis\_impl\_con\_connection.py in post_multipart(self, path, params, files, **kwargs)
1160 if return_raw_response:
1161 return resp
-> 1162 return self._handle_response(
1163 resp=resp,
1164 out_path=out_path,
~\AppData\Local\ESRI\conda\envs\machine_learning\lib\site-packages\arcgis\gis\_impl\_con\_connection.py in _handle_response(self, resp, file_name, out_path, try_json, force_bytes, ignore_error_key)
886 except JSONDecodeError:
887 if resp.text:
--> 888 raise Exception(resp.text)
889 else:
890 raise
Exception: <html lang="en">
<head>
<title>Apply Edits: Locaties weidevogels (ID: 0)</title>
<link href="/arcgis/rest/static/main.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<table width="100%" class="userTable">
<tr>
<td class="titlecell">
ArcGIS REST Services Directory
</td>
<td align="right">
Logged in user : portaladmin |
<a href="https://geo.rudutrecht.nl/arcgis/login?cmd=logout&returnUrl=https://geo.rudutrecht.nl/arcgis/rest/services">Logout</a> |
</td>
</tr>
</table>
<table width="100%" class="navTable">
<tr valign="top">
<td class="breadcrumbs">
<a href="/arcgis/rest/services">Home</a>
> <a href="/arcgis/rest/services">services</a>
> <a href="/arcgis/rest/services/Hosted">Hosted</a>
> <a href="/arcgis/rest/services/Hosted/Weidevogel_locaties/FeatureServer">Weidevogel_locaties (FeatureServer)</a>
> <a href="/arcgis/rest/services/Hosted/Weidevogel_locaties/FeatureServer/0">Locaties weidevogels</a>
> <a href="/arcgis/rest/services/Hosted/Weidevogel_locaties/FeatureServer/0/applyEdits"><i>applyEdits</i></a>
</td>
<td align="right">
<a href="https://geo.rudutrecht.nl/arcgis/sdk/rest/02ss/02ss00000057000000.htm" target="_blank">Help</a> | <a href="https://geo.rudutrecht.nl/arcgis/rest/services/Hosted/Weidevogel_locaties/FeatureServer/0/applyEdits?f=help" target="_blank">API Reference</a>
</td>
</tr>
</table><h2>Apply Edits: Locaties weidevogels (ID: 0)</h2>
<div class="rbody">
<i>Note: This operation is only supported via POST</i><br/><br/>
<div style="color:#ff6666">
Cannot perform operation. Invalid operation parameters.<br/>
</div><form name="sdform" action="/arcgis/rest/services/Hosted/Weidevogel_locaties/FeatureServer/0/applyEdits" method="post">
<table class="formTable">
<tr valign="top">
<td><label for="adds">Adds:</label></td>
<td>
<textarea id="adds" name="adds" rows="10" cols="55"></textarea>
</td>
</tr>
<tr valign="top">
<td><label for="updates">Updates:</label></td>
<td>
<textarea id="updates" name="updates" rows="10" cols="55"></textarea>
</td>
</tr>
<tr valign="top">
<td><label for="deletes">Deletes:</label></td>
<td><input type="text" id="deletes" name="deletes" value="" size="75"/></td>
</tr>
<tr valign="top">
<td><label for="gdbVersion">Geodatabase Version Name:</label></td>
<td><input type="text" id="gdbVersion" name="gdbVersion" value="" /></td>
</tr>
<tr valign="top">
<td>Rollback on Failure:</td>
<td>
<label><input type="radio" name="rollbackOnFailure" value="true" checked="true" /> True </label>
<label><input type="radio" name="rollbackOnFailure" value="false" /> False</label>
</td>
</tr>
<tr valign="top">
<td>Use Global Ids:</td>
<td>
<label><input type="radio" name="useGlobalIds" value="true" /> True </label>
<label><input type="radio" name="useGlobalIds" value="false" checked="true" /> False</label>
</td>
</tr>
<tr>
<td>Return Edit Moment:</td>
<td>
<label><input type="radio" name="returnEditMoment" value="true" /> True </label>
<label><input type="radio" name="returnEditMoment" value="false" checked="true" /> False</label>
</td>
</tr>
<tr>
<td>True Curve Client:</td>
<td>
<label><input type="radio" name="trueCurveClient" value="true" checked="true" /> True </label>
<label><input type="radio" name="trueCurveClient" value="false" /> False</label>
</td>
</tr>
<tr valign="top">
<td><label for="attachments">Attachments:</label></td>
<td>
<textarea name="attachments" id="attachments" rows="10" cols="55"></textarea>
</td>
</tr>
<tr>
<td>Time Reference UnknownClient :</td>
<td>
<label><input type="radio" name="timeReferenceUnknownClient" value="true" /> True </label>
<label><input type="radio" name="timeReferenceUnknownClient" value="false" checked="true" /> False</label>
</td>
</tr>
<tr valign="top">
<td>Datum Transformation:</td>
<td><input type="text" name="datumTransformation" value="" /></td>
</tr>
<tr>
<td>Async:</td>
<td>
<label><input type="radio" name="async" value="true" /> True </label>
<label><input type="radio" name="async" value="false" checked="true" /> False</label>
</td>
</tr>
<tr>
<td><label for="f">Format:</label></td>
<td>
<select id="f" name="f">
<option value="html">HTML</option>
<option value="pjson">JSON</option>
</select>
</td>
</tr>
<tr>
<td colspan="2" align="left">
<input type="submit" value="Apply Edits" />
</td>
</tr>
</table>
</form>
<script type="text/javascript">
document.forms.sdform.adds.focus();
</script>
</div>
<br/><br/>
</body>
</html>
The logs of the ArcGIS server manager contain the following entry when I try to use this function.
Hosted/Weidevogel_locaties/FeatureServer: Cannot perform operation. Invalid operation parameters.
I also tried to delete a feature by its object id.
vogel_fs_origin.edit_features(deletes=[12])
I then get the same error.
Anyone who can give me a hint to solve this? 🙂