Deze mountainbikekaart is nog in ontwikkeling. De achtergrondkaart is nu geladen via ArcGIS Online.
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.
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)