Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 12 additions & 9 deletions src/ssoss/dynamic_road_object.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,8 @@
import numpy as np
import pandas as pd

from ssoss.static_road_object import Intersection, StaticRoadObject
from ssoss.static_road_object import Intersection
from ssoss.static_road_object import StaticRoadObject


class DynamicRoadObject:
Expand Down Expand Up @@ -253,12 +254,12 @@ def get_closest_approaching_intersection(self, as_list=False) -> Intersection:
if df is None:
return None
else:
mask = df['approaching'].values == True
mask = df['approaching'].values
if df[mask].empty:
return None
elif as_list:
return df[mask]
elif as_list == False:
elif not as_list:
return df[mask].iloc[0, 1]

def calc_bearing_diff(self, m: float) -> float:
Expand Down Expand Up @@ -563,10 +564,12 @@ def seek_sd(self, gpx_df, csv_out=True) -> pd.DataFrame:
(gpx_df.time_delta.iloc[i] * (gpx_df.spd.iloc[i] * self.MPHtoFTPS)):
print("heuristic filter")

if (gpx_df.approaching.iloc[i - 1]) == True and \
(gpx_df.approaching.iloc[i]) == True and \
(gpx_df.approaching.iloc[i + 1] == False) and \
(gpx_df.approaching.iloc[i + 2] == False):
if (
gpx_df.approaching.iloc[i - 1]
and gpx_df.approaching.iloc[i]
and not gpx_df.approaching.iloc[i + 1]
and not gpx_df.approaching.iloc[i + 2]
):

print("approach filter")

Expand Down Expand Up @@ -626,11 +629,11 @@ def seek_sb(self, gpx_df, csv_out=True) -> pd.DataFrame:
for i in range(1, (gpx_df.last_valid_index() - 3)):
if self.get_itrsxn_obj_by_id(gpx_df.id.iloc[i]).distance_from_sb(
gpx_df.location.iloc[i + 1], gpx_df.appr_dir.iloc[i + 1]) is None:
print(f'USING CENTER OF INTERSECTION LOCATION')
print('USING CENTER OF INTERSECTION LOCATION')
approach_distance = self.get_itrsxn_obj_by_id(
gpx_df.id.iloc[i]).get_sd(gpx_df.appr_dir.iloc[i + 1]) + 50
else:
print(f'USING STOP BAR LOCATION')
print('USING STOP BAR LOCATION')
approach_distance = self.get_itrsxn_obj_by_id(
gpx_df.id.iloc[i]).distance_from_sb(gpx_df.location.iloc[i + 1],
gpx_df.appr_dir.iloc[i + 1])
Expand Down
12 changes: 6 additions & 6 deletions src/ssoss/motion_road_object.py
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
# !/usr/bin/env python
# coding: utf-8
import math
from datetime import datetime, timezone
from datetime import timedelta
from operator import attrgetter, itemgetter
from pathlib import PurePath
from datetime import datetime
from datetime import timezone
from operator import itemgetter

import dateutil
import geopy
import gpxpy.geo as gpxgeo
import numpy as np
import pandas as pd

from ssoss.static_road_object import StaticRoadObject, Intersection
from ssoss.static_road_object import StaticRoadObject
from ssoss.static_road_object import Intersection



Expand Down Expand Up @@ -345,7 +345,7 @@ def backflow(self, sro_df: pd.DataFrame, so_type):
only_approaching_generic_so = filter(lambda x: x[2] is True, temp_sort_approaching) # filter out generic_so not approached
self.generic_so_approach_list = list(only_approaching_generic_so)

return;
return

def three_pt_approach(self,d0, d1, d2, approach_distance) -> bool:
""" check if d0 & d1 points are before approach distance and d2 is after"""
Expand Down
11 changes: 7 additions & 4 deletions src/ssoss/process_road_objects.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
# !/usr/bin/env python
# coding: utf-8

import csv, math
from datetime import datetime, timezone
import csv
from datetime import datetime
from datetime import timezone
from pathlib import Path

import geopy
from geopy.distance import geodesic, Distance
from geopy.distance import geodesic
from geopy.distance import Distance

import gpxpy
import gpxpy.gpx
Expand All @@ -16,7 +18,8 @@
from lxml import etree
from tqdm import tqdm

from ssoss.static_road_object import Intersection, GenericStaticObject
from ssoss.static_road_object import Intersection
from ssoss.static_road_object import GenericStaticObject
from ssoss.motion_road_object import GPXPoint


Expand Down
7 changes: 4 additions & 3 deletions src/ssoss/process_video.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,10 @@
# coding: utf-8
import glob
import os
import shutil
from pathlib import PurePath, Path
from datetime import timedelta, timezone, datetime
from pathlib import Path
from datetime import timedelta
from datetime import timezone
from datetime import datetime
import dateutil
import numpy as np
from tqdm import tqdm
Expand Down
5 changes: 2 additions & 3 deletions src/ssoss/ssoss_gui.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
import argparse
from gooey import Gooey, GooeyParser
from gooey import Gooey
from gooey import GooeyParser
from ssoss_cli import *

import process_road_objects
import process_video


@Gooey(program_name="Safe Sightings of Signs and Signals") # , tabbed_groups=True
Expand Down
5 changes: 3 additions & 2 deletions src/ssoss/static_road_object.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
# coding: utf-8

import math
import geopy, geopy.distance
import geopy
import geopy.distance
import numpy as np


Expand Down Expand Up @@ -68,7 +69,7 @@ def __init__(self, id_num: int, street_name: str, pt: geopy.Point, bearing, desc
"WB":270
}

if type(bearing) == str:
if isinstance(bearing, str):
self.bearing = compass[bearing]
else:
self.bearing = bearing
Expand Down
3 changes: 2 additions & 1 deletion tests/test_static_road_object.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import unittest
from ssoss.static_road_object import *
import geopy, geopy.distance
import geopy
import geopy.distance


class TestGetIDNumMethod(unittest.TestCase):
Expand Down