Ahoj všichni,
Při pokusu o použití funkce addCalibrationPoints pomocí REST API applyEdits služby Linear Referencing dostávám následující chybu:
{'error': {'code': 500, 'message': 'Nelze dokončit operaci.', 'details': []}}
- Toto spouštím z nástroje Python skriptu v ArcGIS Pro.
- Enterprise verze je 11.3.
- Verze ArcGIS Pro je 3.3 (ale myslím, že to není podstatné, protože volám applyEdits z Pythonu).
Kalibrační bod mohu ručně přidat v Pro pomocí nástroje Location Referencing Add Calibration Point; stejná služba, stejná verze.
Takto vypadá payload pro applyEdits:
https://MyServer/server/rest/services/MyService/MapServer/exts/LRServer/applyEdits
?f=json
&token=MyToken
&gdbVersion=MY.NAME@MY.ORG.AR_250212b
&sessionId={51777728-f672-4805-9831-b1800715f796}
&edits=
[
{"id": 1, "addCalibrationPoints":
[
{
"networkLayerId": 3,
"routeId": "LOC103431P",
"fromDate": 1522972800000,
"geometry": { "x": 441393.9140999997, "y": 3626705.8938999996}, "measure": 0.26968174 }
]
}
]
Id vrstvy CalibrationPoints je 1 a id vrstvy Network služby je 3.
Myslím, že geometry nepotřebuje spatialReference, protože spatialReference vstupní geometrie odpovídá spatialReference CalibrationPoints, ale i tak jsem to zkoušel se stejným výsledkem.
Myslím, že recalibrateRouteDownstream ani retire nejsou povinné, ale i tak jsem je zkoušel se stejným výsledkem.
Úspěšně jsem provedl applyEdits pro aktualizaci polí Event (applyEdits/updates) a pro ukončení trasy (applyEdits/retireRoute), takže se zdá, že vše nastavují správně. Základní postup je:
- Získat sessionId a versionGuid
- startReading
- startEditing
- získat zámek na trase
- applyEdits (odpověď je 'Nelze dokončit operaci.')
- uvolnit zámek
- stopEditing
- stopReading
Tento postup velmi přesně odpovídá prezentaci na Developer Summitu 2021 o přidání kalibračního bodu:
https://www.youtube.com/watch?app=desktop&v=VQzW-EZCEKc
Děkuji za jakoukoli pomoc!