[R] Connecting a midpoint of a segment at a 90 degree angle to the next nearest point of a neighboring segment
Chosid, David (FWE)
d@v|d@cho@|d @end|ng |rom m@@@@gov
Wed Aug 27 17:13:41 CEST 2025
I am working with start and end coordinate points and I have generated midpoints between the two. Each start, end, midpoint, and connecting segments are visualized using the plot function. Five segments (groups of points) are plotted side-by-side in near-parallel arrangements. I could use some help performing three functions:
1: Determine the 90-degree angle of each segment,
2: generate a line from the midpoint of each segment to the intersecting point of the next segment (for instance, 90-degrees from the midpoint of segment 1 to anywhere on segment 2),
3: and report the distance of the generated line
data3<-data2 #cannot have two sets of coordinates in one dataframe; create another
# need two sets of coordinates to plot line segments connecting
# haul start and haul end coordinates command is necessary. It converts the dataframe to "Spatial Points Dataframe"
# so that SetLon and SetLat are gone, replaced by one column
coordinates(data2)<-~LonOD+LatOD # Defines point coordinates and converts the dataframe
coordinates(data3)<-~LonTrap+LatTrap # repeat for end coordinates
data2 using proj4string<-CRS('+init=epsg:4326') # DEFINE PROJECTION AS LATLON
data3 using proj4string<-CRS('+init=epsg:4326') # DITTO
plot(bathy.arc.tr,col="gray80" #bathy.arc using data$color<mailto:#bathy.arc using data$color>
,xlim=c(-70.9065,-70.905),ylim=c(41.4715,41.4748)) # bathy comes first so data points aren't covered up
polygon(c(-71,-71,-70,-70)
,c( 41, 42, 42, 41), col=rgb(0.44, 1, 1, .2)) # this is rgb; last # is transparency so bathymetry is seen (if present)
# plot points
plot(data2,pch=18,col=c("red"), add=T, border="transparent") # Start coordinates
points(LatTrap~LonTrap, data2, pch=18, col="green2") # End coordinates
segments(data2 using coords[,1], data2 using coords[,2], data3 using coords[,1], data3 using coords[,2],col=c("black")) # plot segments (start to end coordinates)
Included is an example of the groups of 5 near-parallel segments. Each group of 5 segments are uniquely identified (such as group1:pair1, group1:pair2, etc.). Again, looking for the 90-degree distance from midpoint of group1:pair1 to intersection of group1:pair2.
David M. Chosid
Conservation Solutions
MA Division of Marine Fisheries
836 S. Rodney French Blvd.
Mobile: 857-393-4026
David.chosid using mass.gov<mailto:David.chosid using mass.gov>
More information about the R-help
mailing list