Select to view content in your preferred language

Calculation of drag curves/ swept paths truck transportation

293
3
08-05-2025 10:41 PM
JohannesBierer
Frequent Contributor

Hello,

I would like to calculate drag curves/ swept paths for a very long truck which transports rotor blades of a wind turbine. Is there a possibility to do this in arcgispro in a simplified manner for a line feature class?

0 Kudos
3 Replies
BobBooth1
Esri Regular Contributor

I don't know of a tool that would do this for you out of the box.

You could write something in Python.

You can iterate over features in a feature class using a search cursor, and you can iterate over parts of a geometry to get the individual vertices of a line.  With this, you could iterate over the line, get each vertex, draw a line segment starting and ending at the appropriate length between that vertex  in the direction of the previous one.

iterate-features-vertices.png

 

import arcpy

# Set the path to your line feature class
line_feature_class = r"C:\Users\myusername\Documents\ArcGIS\Projects\MyProject6\MyProject6.gdb\Streets_feat"

# Create a SearchCursor to access the geometry
# The SHAPE@ token returns the geometry object for each feature
with arcpy.da.SearchCursor(line_feature_class, ["OID@", "SHAPE@"]) as cursor:
    # Iterate through each row (feature) in the feature class
    for row in cursor:
        object_id = row[0]
        geometry = row[1]

        print(f"Processing Feature OID: {object_id}")

        # Polylines can have multiple parts (e.g., multipart lines)
        # Iterate through each part of the geometry
        for part_num, part in enumerate(geometry):
            print(f"  Part: {part_num}")

            # Iterate through each point (vertex) in the current part
            for pnt_num, pnt in enumerate(part):
                # Check if the point is not None (handles interior rings in polygons, though not applicable to simple lines)
                if pnt:
                    print(f"    Vertex {pnt_num}: X={pnt.X}, Y={pnt.Y}")
                else:
                    # This case would generally indicate an interior ring in a polygon,
                    # but for simple lines, it signifies the end of a segment within a part.
                    print("    Segment break within part (not a vertex)")

print("Vertex iteration complete.")
JohannesBierer
Frequent Contributor

Thank you for the code and explanation. But I think the further steps exceed my python possibilities. There's specialized commercial software like autoturn or heavyGoods:

https://autoturnonline.com/?gad_source=1&gad_campaignid=910989046&gclid=EAIaIQobChMIp_vNkPH3jgMVR4KD...

https://heavygoods.net/de/apps/swept-paths

 

0 Kudos
TylerT
by
Frequent Contributor

Autodesk's Vehicle Tracking, a swept path analysis and design software, might be worth looking at.