← Terug naar homepage

MTB-routes De Holterberg

Deze mountainbikekaart is nog in ontwikkeling. De achtergrondkaart is nu geladen via ArcGIS Online.

Styling van de basemap en gereed maken van de routes

Via de Vector Style Editor zijn de kleuren van de basemap aangepast. Momenteel worden de routes voorbereid in ArcGIS Pro. Met behulp van de Batch GPX To Features zijn de routes als feature class opgeslagen. Aangezien ik berekeningen ga uitvoeren, wordt via de Project tool, de spatial reference omgezet van WGS 1984 naar RD New. Via de Create Routes tool heb ik lengte-data aan de lijn gehangen, vervolgens is met de Create Points Along Lines tool op elke kilometer langs de route een puntsymbool toegevoegd.

Stijgingspercentage van de routes berekenen

De mountainbikeroutes ga ik opknippen in kleine stukjes en daarvan de helling berekenen. Hiervoor moet in een Python script schrijven. Hieronder worden de parameters alvast ingesteld. En wordt een feature class gemaakt bebaseerd op de al bestaande route feature class:

    import arcpy

    # parameters
    input_fc = r"C:\Users\nieks\Documents\ArcGIS\Projects\MTBRoutesHolterberg\MTBRoutesHolterberg.gdb\Project_OutDataset_Features_hellendoorn_21_m"
    out_path = r"C:\Users\nieks\Documents\ArcGIS\Projects\MTBRoutesHolterberg\MTBRoutesHolterberg.gdb"
    out_name = "hellendoorn_split"
    split_distance = 100
    desc = arcpy.Describe(input_fc)
    
    # setup automatisch overschrijven feature class 
    arcpy.env.overwriteOutput = True
    
    # Nieuwe feature class maken met dezelfde instellingen als de input class
    arcpy.management.CreateFeatureclass(
        out_path=out_path,
        out_name=out_name,
        geometry_type="Polyline",
        template=input_fc,
        spatial_reference=desc.spatialReference,
        has_m="SAME_AS_TEMPLATE",
        has_z="SAME_AS_TEMPLATE"
    )
    
    # Toegang tot de polyline in de Feature Class, en de knip de lijn in stukken
    with arcpy.da.SearchCursor(input_fc, ["SHAPE@"]) as cursor:
        #Selecteer de (enige) lijn
        for row in cursor:
            polyline = row[0]
            print(polyline.length)
            total_length = polyline.length
            
            #Lege lijst waarin we de segmenten en de hellingshoek in opslaan
            segments = []
            #De startpositie van de lijn
            position = 0
            
            #Zolang de totale lengte van de lijn niet wordt overschreden herhaal de volgende code
            while position < total_length:
                start = position
                end = min(position + split_distance, total_length)
                
                segment = polyline.segmentAlongLine(start, end)
                
                z_start = segment.firstPoint.Z
                z_end = segment.lastPoint.Z
                
                length = segment.length
                if length > 0:
                    slope = ((z_end - z_start) / length) * 100
                else:
                    slope = 0
                    
                segments.append((segment, slope))
                
                position += split_distance
    
            for segment in segments:
                print(segment)
    
    
Gebruikte software en tools voor deze kaart:
ArcGIS Online ArcGIS Pro Python ArcPy