Bij 160319: Fout bij het stoppen van een bewerksessie met opslaan van bewerkingen—ArcGIS Pro | Documentatie wordt hulp gevraagd van iedereen die deze fout tegenkomt.
Tijdens het onderzoeken van LRS Line Networks ben ik op een procedure gestuit die elke keer dat deze voor de tweede keer wordt uitgevoerd binnen een ArcGIS Pro 3.0.0 sessie, deze fout veroorzaakt.
De code staat hieronder en ik voer het uit als een Python Script tool zonder parameters.
Als de tool eenmaal wordt uitgevoerd werkt het. Als het daarna nogmaals wordt uitgevoerd, verschijnt de volgende fout:
arcgisscripting.ExecuteError: FOUT 160319: Fout bij het stoppen van een bewerksessie met opslaan van bewerkingen
Fout bij het stoppen van een bewerksessie met opslaan van bewerkingen [TestLRSNetwork]
Uitvoering mislukt (AppendRoutes).
# Dit script is bedoeld om een leeg LRS-dataset te maken en
# de geometrieën van een test polyline feature class te laden met route-ID's (TEXT),
# Route Namen (TEXT) en from/to maten (DOUBLE) erin zodat een
# LRS Line Network met die routes kan worden gemaakt
import arcpy,uuid
def print_message(msg):
print(msg)
arcpy.AddMessage(msg)
arcpy.env.overwriteOutput = True
# Stel coördinatensysteem en geodatabase in die gebruikt gaan worden
srWGS84 = arcpy.SpatialReference("GCS_WGS_1984")
workingFolder = r"C:\temp"
gdbName = "test"
gdb = r"{0}\{1}.gdb".format(workingFolder,gdbName)
lrsName = "TestLRS"
lrsFD = r"{0}\{1}".format(gdb,lrsName)
testFCName = "testFC"
testFC = r"{0}\{1}".format(lrsFD,testFCName)
testStatsTableName = "testStats"
testStatsTable = r"{0}\{1}".format(gdb,testStatsTableName)
testDissolvedFC = r"{0}{1}".format(testFC,"_Dissolve")
calibrationFC = r"{0}\{1}".format(lrsFD,"Calibration_Point")
centerlineFC = r"{0}\{1}".format(lrsFD,"Centerline")
lrsNetworkName = "testLRSNetwork"
lrsNetworkFC = r"{0}\{1}".format(lrsFD,lrsNetworkName)
redlineFC = r"{0}\{1}".format(lrsFD,"Redline")
centerlineSequenceTable = r"{0}\{1}".format(gdb,"Centerline_Sequence")
newCalibrationPointsFCName = "NewCalibrationPoints"
newCalibrationPointsFC = r"{0}\{1}".format(lrsFD,newCalibrationPointsFCName)
newCalibrationPointsFCTempName = newCalibrationPointsFCName+"Temp"
newCalibrationPointsFCtemp = r"{0}\{1}".format(lrsFD,newCalibrationPointsFCTempName)
uniqueCalibrationPointsFCName = "UniqueCalibrationPoints"
uniqueCalibrationPointsFC = r"{0}\{1}".format(lrsFD,uniqueCalibrationPointsFCName)
# Maak lege geodatabase voor testen
arcpy.management.CreateFileGDB(workingFolder,gdbName)
# Maak lege TestLRS dataset met standaardnamen voor drie feature classes
# (Calibration_Point,Centerline,Redline) en een LRS Hiërarchie (TestLRS)
# daarin, en drie tabellen (Centerline_Sequence, Lrs_Edit_Log,Lrs_Locks)
print_message("LRS dataset genaamd {0} aanmaken in {1}".format(lrsName,gdb))
arcpy.locref.CreateLRS(gdb,lrsName,"Centerline","Calibration_Point",
"Redline","Centerline_Sequence",srWGS84)
# Bereid feature class voor waarvan routes later aan het LRS Network worden toegevoegd
# Maak lege feature class en schema
print_message('Maak "route-klaar" polyline feature class ({0}) in LRS dataset ({1})'.format(testFC,lrsFD))
arcpy.management.CreateFeatureclass(lrsFD,"testFC","POLYLINE")
arcpy.management.AddField(testFC,"RouteID","TEXT", None, None, 10)
arcpy.management.AddField(testFC,"RouteName","TEXT", None, None, 10)
arcpy.management.AddField(testFC,"FromMeasure","DOUBLE")
arcpy.management.AddField(testFC,"ToMeasure","DOUBLE")
arcpy.management.AddField(testFC,"FromDate","DATE")
arcpy.management.AddField(testFC,"ToDate","DATE")
# Schrijf drie polylijnen en hun route-attributen naar de feature class
cursor = arcpy.da.InsertCursor(testFC,["SHAPE@","RouteID","RouteName","FromMeasure","ToMeasure"])
array = arcpy.Array([arcpy.Point(0.0,0.0),
arcpy.Point(0.0,1.0)])
polyline = arcpy.Polyline(array,srWGS84)
cursor.insertRow([polyline,"Route1","Route 1",0.0,750.0])
array = arcpy.Array([arcpy.Point(0.0,1.0),
arcpy.Point(1.0,1.0)])
polyline = arcpy.Polyline(array,srWGS84)
cursor.insertRow([polyline,"Route1","Route 1",750.0,2000.0])
array = arcpy.Array([arcpy.Point(1.0,1.0),
arcpy.Point(1.0,0.0)])
polyline = arcpy.Polyline(array,srWGS84)
cursor.insertRow([polyline,"Route2","Route 2",0.0,999.0])
del cursor
arcpy.management.CalculateField(testFC, "FromDate", "datetime.datetime.now()", "PYTHON3", '', "TEXT", "NO_ENFORCE_DOMAINS")
print_message('Statistieken schrijven van polyline feature class ({0}) naar tabel ({1})'.format(testFC,testStatsTable))
arcpy.analysis.Statistics(testFC,testStatsTable,"FromMeasure MIN;ToMeasure MAX","RouteID")
# Los testFC op zodat er slechts één polyline per route is
print_message("Los {0} hoofdzakelijk op basis van RouteID om {1} te maken".format(testFC,testDissolvedFC))
arcpy.management.Dissolve(testFC,testDissolvedFC,
"RouteID;RouteName;FromDate;ToDate",
None, "SINGLE_PART", "UNSPLIT_LINES")
# Voeg velden toe en vul ze om lijnen in LRS Network te ondersteunen
print_message("Velden toevoegen en vullen ter ondersteuning van lijnen op 'route-klaar' polylijnen in {1}".format(testFC,testDissolvedFC))
arcpy.management.AddField(testDissolvedFC,"Line_GUID","Text",None,None,255)
arcpy.management.AddField(testDissolvedFC,"LineName","Text",None,None,10)
arcpy.management.AddField(testDissolvedFC,"LineOrder","LONG")
# Slechts één lijn in deze test
lineGUID = "{0}".format('{'+str(uuid.uuid4())+'}')
lineOrder = 100
with arcpy.da.UpdateCursor(testDissolvedFC,["Line_GUID","LineName","LineOrder"]) as cursor:
for row in cursor:
cursor.updateRow([lineGUID,"Lijn 1",lineOrder])
lineOrder+=100
arcpy.management.JoinField(testDissolvedFC,"RouteID",testStatsTable,"RouteID","MIN_FromMeasure;MAX_ToMeasure")
# Maak lege TestLRSNetwork in TestLRS dataset
print_message("Maak LRS Network ({0}) in LRS dataset ({1})".format("TestLRSNetwork","TestLRS"))
arcpy.locref.CreateLRSNetwork(gdb, "TestLRS", "TestLRSNetwork",
"RouteID", "RouteName", "FromDate", "ToDate", "DO_NOT_DERIVE", '',
"INCLUDE", "LineId", "LineName", "LineOrder", "METERS")
# "DO_NOT_INCLUDE", "LineId", "LineName", "LineOrder", "METERS")
lrsNetworkFC = r"{0}\{1}".format(lrsFD,"TestLRSNetwork")
# Voeg routes toe vanuit testFC aan TestLRSNetwork wat ze tegelijkertijd toevoegt aan Centerline feature class
print_message("Routes toevoegen van {1} aan LRS Network ({1}) in LRS dataset ({2})".format(testFC,"TestLRSNetwork","TestLRS"))
arcpy.locref.AppendRoutes(testDissolvedFC,lrsNetworkFC, "RouteID", "RouteName", "FromDate", "ToDate",
"Line_GUID","LineName","LineOrder", None, "ADD")
# Genereer calibratiepunten en kalibreer routes hiermee
arcpy.locref.GenerateCalibrationPoints(testDissolvedFC,"RouteID","FromDate","ToDate",calibrationFC,
lrsNetworkName, "DIGITIZED_DIRECTION","ATTRIBUTE_FIELDS","MIN_FromMeasure","MAX_ToMeasure")
# lrsNetworkName, "MEASURE_DIRECTION", "GEOMETRY_LENGTH")
arcpy.locref.GenerateRoutes(lrsNetworkFC, "NO_RECORD_CALIBRATION_CHANGES")
Als ik ArcGIS Pro sluit en de tool opnieuw uitvoer werkt het wel, maar als ik probeer het nogmaals uit te voeren krijg ik weer dezelfde fout.