Search code examples
rggplot2coordinatesextractsegment

Coordinates of a segment that I have drawn


I want to remove little segments (data = station_EVHOE) that are outside a zone. the map here

For this, I drew a black segment which demarcates the relevant zone (which is the region on the right). So I want to remove points which are in the left zone.

My code is made with ggplot :

 d <- ggplot() + 
  coord_map(xlim = c(-12,-1), ylim = c(43,52)) +
  geom_polygon(aes(x=longitude, y=latitude), data = coast_EVHOE) + 
  geom_segment(aes(x = longitude_début, y = latitude_début, xend = longitude_fin, yend = latitude_fin, colour = as.factor(annee)), data = station_EVHOE) + 
  geom_segment(aes(x = -4.374794, y = 47.7975, xend = -7.8694, yend = 43.773630))

So, is it possible to extract the coordinates of the black segment, in order to remove points outside of the right area ?


Solution

  • Here an idea based on this: https://math.stackexchange.com/questions/274712/calculate-on-which-side-of-a-straight-line-is-a-given-point-located

    #determine which station are on the right side of the line
    #I use only one point, you can adapt to check if the two point of the station are on the right side of the plot
    
    station_EVHOE$right_side = 
      ((station_EVHOE$longitude_début + 4.374794)*(43.773630 - 47.7975)) - 
      ((station_EVHOE$latitude_début - 47.7975)*(-7.8694 + 4.374794)) < 0
    
    d <- ggplot() + 
      coord_map(xlim = c(-12,-1), ylim = c(43,52)) +
      geom_polygon(aes(x=longitude, y=latitude), data = coast_EVHOE) + 
    
    # plot only the station at the right side of the line
      geom_segment(aes(x = longitude_début, y = latitude_début, xend = longitude_fin, yend = latitude_fin, colour = as.factor(annee)), data = station_EVHOE[station_EVHOE$right_side,]) + 
      geom_segment(aes(x = -4.374794, y = 47.7975, xend = -7.8694, yend = 43.773630))