I can't use the Bearing Distance to Line tool because I only have one point with a known location. Each additional point will be created sequentially by taking the bearing and distance from the last one. There has to be a way to do this in ArcMap 10.5 right?
Depending on the amount of data you have you should either choose doing this manually in an edit session as Dan suggests of doing this with some python. To give you some additional help on using the Python option see the script below:
def main(): import random import arcpy # settings input and output data tbl = r'C:\GeoNet\BearingDistance\data.gdb\BrearingDistanceData' fld_bear = 'Bearing' fld_dist = 'Distance' fc_out = r'C:\GeoNet\BearingDistance\data.gdb\BrearingDistanceLine' # start point and projected coordinate system start_x = -8413550 start_y = 696897 sr = arcpy.SpatialReference(3857) # create start point pntg = arcpy.PointGeometry(arcpy.Point(start_x, start_y), sr) # create sequential points points = [pntg.firstPoint] pntg_prev = pntg with arcpy.da.SearchCursor(tbl, (fld_bear, fld_dist)) as curs: for row in curs: angle = row distance = row pntg_new = pntg_prev.pointFromAngleAndDistance(angle, distance) pntg_prev = pntg_new points.append(pntg_new.firstPoint) # create polyline and store result polyline = arcpy.Polyline(arcpy.Array(points), sr) arcpy.CopyFeatures_management([polyline], fc_out) if __name__ == '__main__': main()
It takes a table with two fields (Bearing and Distance, see settings on line 7 and 8) and an initial point (see lines 12 and 13) and traces a line. See the result below:
To create the table data I used a random function. See code below:
def main(): import random import arcpy tbl = r'C:\GeoNet\BearingDistance\data.gdb\BrearingDistanceData' fld_bear = 'Bearing' fld_dist = 'Distance' with arcpy.da.InsertCursor(tbl, (fld_bear, fld_dist)) as curs: for i in range(100): sector = divmod(i, 25) # 0 to 3 angle = random.randrange(sector * 90, (sector+1)*90) distance = random.randrange(1000, 1050+i*50) print i, sector, angle, distance curs.insertRow((angle, distance, )) if __name__ == '__main__': main()
If you have any questions, just post them back here.
Sounds a bit like COGO (Coordinate Geometry). There is a tool available with Standard or Advanced license. An overview of COGO
When surveyors or civil engineers need to record the location of human-made features, such as land parcels, road centerlines, utility easements containing transmission lines, and oil and gas leases, they typically provide the results on a survey plan that describes the location of features relative to each other.