Radiating Lines and Points

Geometric Tools · geoprocessing tool · by Jeff Jenness
Works at every ArcGIS Pro license level

Summary

Generates evenly spaced lines radiating outward from every input point, and/or a point feature class of the origins and line endpoints — regularly spaced sampling locations around points of interest. Give the number of lines or the bearing interval, and a line length in real units; the first bearing points north or is randomized (seed-reproducible), the rest follow clockwise. Lines can be blocked by any number of barrier polyline and polygon feature classes — a line stops at its first crossing of a barrier line or polygon boundary (an origin inside a barrier polygon still radiates), with a Blocked flag. A modernized port of Jeff Jenness's classic ArcView Radiating Lines and Points extension, originally written for the study published as Ekebom, Laihonen and Suominen (2003).

A fan of lines from every point

Many field designs begin the same way: stand at a point and look outward in every direction, at regular angles. A ring of vegetation plots at a fixed distance around each station; transect start-lines laid out around a colony or a nest; exposure rays cast from a shoreline site to ask how much open water faces it in each direction; distance-to-edge measured from a den site along every bearing of the compass. All of these reduce to the same geometry — a fan of evenly spaced lines of known length radiating from every input point — and building that fan by hand, at dozens of stations, is exactly the kind of tedium a tool should absorb.

That is what this tool has done since its first life as an ArcView 3.x extension, which Jeff Jenness originally wrote for Jan Ekebom, Pasi Laihonen and Tapio Suominen at the University of Turku, for their assessment of physical wave exposure across Finland's fragmented Baltic archipelagos (published as Ekebom, Laihonen and Suominen 2003). Their problem was the exposure-ray version: from each shore site, how far does open water extend along each bearing before an island intervenes? Twenty years later the same fan, now with true geodesic distances and built-in barriers, answers the same family of questions in ArcGIS Pro.

A forested hillside in aerial imagery with fifty yellow lines radiating from a blue origin point, each ending at an orange endpoint dot, beside the Radiating Lines and Points geoprocessing pane filled with 50 lines, a 7.2 degree interval, a 100 meter length, and Survey_Lines and Survey_Endpoints as the outputs
The fan in the field: a spotted owl prey survey station with fifty 100 m transects to walk, one every 7.2°, each endpoint marked. Notice in the dialog that typing 50 lines filled in the 7.2° interval automatically — the two boxes are two views of one choice.

The classic design, kept intact

Give either the number of lines or the bearing interval — they are two views of one choice, and typing either fills in the other (13 lines means one every 27.6923°). The interval is snapped so the lines divide the circle evenly. The first line points due north unless Randomize the first bearing spins the fan by a random fraction of the interval — each point's fan gets its own independent spin, so no bearing is systematically favored across the study area, and the optional seed makes the spins exactly reproducible. The remaining lines follow clockwise at the regular interval. A layer selection on the input points is honored.

Modernized distances

The original extension worked in raw map units and advised projecting your data first. Here the line length is given in real units — meters, kilometers, feet or miles — and geographic (latitude–longitude) points each get their own azimuthal-equidistant working projection, so every radial distance is a true geodesic and every bearing a true azimuth, at any latitude. Output length fields are always in meters.

Barriers

Any number of barrier polyline and polygon feature classes can stop the lines: a radiating line ends at its first crossing of a barrier line or polygon boundary, its Length_m records the truncated distance, and Blocked = 1 marks it. Shorelines, roads, fences and habitat edges all serve — barriers turn a plain fan into a line-of-open-passage analysis, using the same ray casting that powers the Longest Line in Polygon (Fetch) tool's directional mode.

One semantic is worth stating precisely: it is the polygon boundary that blocks, not the polygon's interior. An origin point sitting inside a barrier polygon still gets its full fan of lines, each one stopping where it reaches the boundary from the inside — which is exactly what you want when the “barrier polygons” are the habitat patches or islands the stations themselves sit on. By the same rule, a line that merely starts on a barrier is not blocked until it actually crosses it. Selections on the barrier layers are honored, the barriers may be in any mix of coordinate systems, and true-curve boundaries (geodatabase circles and arcs) are densified automatically.

A point on the dark water of Lake Powell with 36 yellow lines radiating outward across the lake, each stopping with an orange endpoint where it reaches the winding canyon shoreline, beside the geoprocessing pane showing the Lake Powell polygon supplied as a barrier polygon and a 5000 meter line length with the first bearing randomized
The rule from the inside: an origin on the water of Lake Powell, with the lake polygon itself as the barrier. The origin sits inside the barrier polygon and still gets its full fan of 36 lines — each one running until it reaches the bank from the water side, however near or far that is. Note the randomized first bearing spinning the fan off due north.
A point on bare desert ground beside Lake Powell with 36 yellow radiating lines: the lines heading west stop almost immediately at the near shoreline with a tight cluster of orange endpoints, while the lines heading east and south run much farther across open ground, several ending where they meet a winding river channel
The same rule from the outside: a station on land beside the lake. Lines heading toward the near bank stop almost at once; lines over open ground run until they either reach their full 5,000 m or meet the winding channel farther away. One boundary, blocking from both sides.

What you get

Ask for the lines, the points, or both. The lines feature class carries Src_FID (the origin point's Object ID), Origin_N (the line's number around its origin, 1..k clockwise), Bearing, Length_m, Blocked, and both ends' coordinates (Org_X/Org_Y/End_X/End_Y), plus any transferred attribute fields (reserved names arrive under a Src_ prefix). The points feature class holds every origin (Location = “Origin”, with null distance and bearing — written as −999 in shapefiles, the classic convention) and every line endpoint (Location = “End Point”, with its distance and bearing), plus the same transferred fields — ready-made sampling stations on a ring around every input point.

A tour of the dialog

The Geometric Tools gallery open on the ribbon, with the Radiating Lines and Points button, in the Geometry on Geometry row, outlined in blue
Where to find it: Radiating Lines and Points is in the Geometry on Geometry row of the Geometric Tools gallery, in the Geometric Tools group of the Wildlife and Forestry tab.

A basic run needs the points, a line count or bearing interval, a line length with its units, and at least one output. The barrier parameters each accept any number of feature classes. The filled pane appears beside each of the runs pictured above: the spotted owl survey shows the simplest case — a count, a length, both outputs, and a transferred Station field — while the Lake Powell runs add the lake polygon in the barrier-polygons box and the randomized first bearing.

ModelBuilder

Both outputs chain onward in a model. The endpoint feature class is the natural handoff when the fan is a sampling design — feed the “End Point” rows to an extraction or summary tool to sample rasters on a ring around every station — while the lines themselves, with Length_m and Blocked, feed openness and exposure summaries directly.

A ModelBuilder diagram: the Spotted Owl Prey Transect layer feeding the Radiating Lines and Points tool, which outputs both Survey_Lines and Survey_Endpoints
The tool in a model: the survey station in, both outputs — the transect lines and their endpoints — available onward.

Parameters

LabelExplanationData type
Input pointsRequired · points The origin points the lines radiate from. A layer selection is honored. Feature Layer
Attribute fields to transferOptional · transfer_fields Fields whose values ride along onto every line and point, next to the automatic Src_FID; reserved names arrive under a Src_ prefix. Field (multiple)
Number of radiating linesOptional · n_lines How many lines radiate from each point, evenly spaced around the compass. Typing a count fills in the interval below, and vice versa — give either. Long
Bearing interval between linesOptional · bearing_interval The angle between successive lines, in degrees; snapped so the lines divide the circle evenly. Double
Line lengthRequired · line_length Every line's length, in the units below — true geodesic distances even for latitude–longitude points. Barriers can shorten individual lines. Double
Units for the line lengthOptional · linear_units Meters, Kilometers, Feet or Miles. Output length fields are always meters. String
Randomize the first bearingOptional · randomize_first Spin each point's whole fan by a random fraction of the interval instead of starting due north. Boolean
Random seedOptional · random_seed The same seed with the same inputs reproduces the same randomized bearings exactly. Long
Barrier polylinesOptional · block_lines One or more polyline feature classes that stop the lines — shorelines, roads, fences. Selections honored. Feature Layer (multiple)
Barrier polygonsOptional · block_polygons One or more polygon feature classes whose boundaries stop the lines; an origin inside still gets its full fan. Selections honored. Feature Layer (multiple)
Output radiating linesOptional · out_lines Src_FID, Origin_N, Bearing, Length_m, Blocked, both ends' coordinates, plus transferred fields. Give this, the points, or both. Feature Class
Output origin and end pointsOptional · out_points Every origin and every endpoint, told apart by Location, with distance and bearing on the endpoints. Feature Class

Python

Sixteen 500 m sampling rays around each station, blocked at the shoreline, with both outputs:

import arcpy
arcpy.ImportToolbox(r"C:\path\to\JennessEnterprisesTools.pyt")  # your install path
# linear_units: "Meters" / "Kilometers" / "Feet" / "Miles"
arcpy.jenness.RadiatingLines(
    points=r"D:\data\survey.gdb\stations",
    transfer_fields="Station_Name",
    n_lines=16,
    line_length=500.0, linear_units="Meters",
    randomize_first=True, random_seed=42,
    block_lines=r"D:\data\survey.gdb\shoreline",
    out_lines=r"D:\data\survey.gdb\station_rays",
    out_points=r"D:\data\survey.gdb\station_ray_points")

Recommended citation

Jenness, J. 2026. Radiating Lines and Points. Wildlife and Forestry Tools add-in for ArcGIS Pro, v. 1.98 (September 2026). Jenness Enterprises. Available at: https://github.com/JeffJenness/Wildlife_Tools.

Credits and references

By Jeff Jenness, Jenness Enterprises (www.jennessent.com). A modernized port of the author's ArcView 3.x Radiating Lines and Points extension (rad_lines.avx), originally developed for Jan Ekebom, Pasi Laihonen and Tapio Suominen (University of Turku) and cited in their study of physical exposure in Finland's archipelagos.

Licensing information

Works at every ArcGIS Pro license level (Basic, Standard, Advanced). No extension licenses are required.