Trajectory Outlier Detection Library
 All Classes Functions Variables Pages
DistanceOutlier.h
1 #pragma once
2 
3 //#include "TraOutlierDoc.h"
4 #include "TrajData.h"
5 #include "Trajectory.h"
6 #include "Outlier.h"
7 
8 #include <set>
9 #include <map>
10 #include <vector>
11 #include <string>
12 using namespace std;
13 
14 
15 // CDistanceOutlier
16 
17 typedef pair<int,int> IntIntPair;
18 typedef vector<IntIntPair> IntIntPairArray;
19 typedef vector<float> FloatArray;
20 typedef vector<FloatArray> FloatMatrix;
21 typedef vector<vector<IntIntPair>> IntIntPairMatrix;
22 
23 #define DISTANCE_MATRIX(_x,_y) ((*m_distanceIndex)[_x])[(_y)]
24 #define LENGTH_ARRAY(_x) ((*m_lengthArray)[_x])
25 
34 {
35 public:
36  CDistanceOutlier(int nTrajectories, int nLineSegments, IntIntPairArray* idArray, FloatMatrix* distanceIndex);
37  virtual ~CDistanceOutlier();
38 public:
39  bool DetectOutlyingLineSegment(vector<bool>* result);
40  void SetFractionParameter(float fraction) { m_fractionParam = fraction; }
42  void SetDistanceParameter(float distance) { m_distanceParam = distance; }
44  void SetLengthArray(FloatArray* lengthArray) { m_lengthArray = lengthArray; }
46  void SetCloseTrajectoryPartition(map<IntIntPair,int>* indexMap, IntIntPairMatrix* partitionMatrix)
47  { m_closePartitionArrayIndexMap = indexMap; m_closePartitionArray = partitionMatrix; }
49  void SetFinePartitionLength(map<IntIntPair,float>* lengthMap) { m_finePartitionLengthMap = lengthMap; }
51  void SetCoarsePartitionId(map<IntIntPair,int>* idMap) { m_coarsePartitionIdMap = idMap; }
53  void SetDensityFilePath(string filePath) { m_densityFilePath = filePath; }
55 private:
56  int GetNumOfNearTrajectories(int index);
57  bool IsTrajectoryNear(int lineSegmentId, int trajectoryId);
58  void ConstructRangeOfTrajectory();
59  void MeasureDensityOfLineSegment();
60  float MeasureDistanceFromPointToPoint(CMDPoint* point1, CMDPoint* point2);
61 #if defined(__VISUALIZE_DEBUG_INFO__)
62  void GetLineSegmentPoint(int lineSegmentId, CPoint* start, CPoint* end);
63  void GetLineSegmentPoint(int trajectoryId, int index, CPoint* start, CPoint *end);
64 #endif
65 public:
66  TrajData* m_data;
67 private:
68  int m_nTrajectories;
69  int m_nLineSegments;
70  IntIntPairArray* m_idArray;
71  FloatMatrix* m_distanceIndex;
72  FloatArray* m_lengthArray; // array of partition lengths
73  float m_fractionParam;
74  float m_distanceParam;
75  int m_nNearTrajectories;
76  IntIntPairArray m_trajectoryRange;
77  FloatArray m_densityArray;
78  string m_densityFilePath;
79 private:
80  map<IntIntPair,int>* m_closePartitionArrayIndexMap;
81  IntIntPairMatrix* m_closePartitionArray;
82  map<IntIntPair,float>* m_finePartitionLengthMap;
83  map<IntIntPair,int>* m_coarsePartitionIdMap;
84 };
A simple point class.
Definition: MDPoint.h:10
void SetDistanceParameter(float distance)
Setter for the distance parameter D.
Definition: DistanceOutlier.h:42
void SetDensityFilePath(string filePath)
Set file path for precomputed density file.
Definition: DistanceOutlier.h:53
void SetFractionParameter(float fraction)
Setter for the fraction of trajectories that must be far to be called an outlier (in the paper...
Definition: DistanceOutlier.h:40
void SetCoarsePartitionId(map< IntIntPair, int > *idMap)
Setter for mapping of coarse partition IDs.
Definition: DistanceOutlier.h:51
void SetCloseTrajectoryPartition(map< IntIntPair, int > *indexMap, IntIntPairMatrix *partitionMatrix)
Setter for mappings required for partition pruning optimization.
Definition: DistanceOutlier.h:46
Handles partition outlier computation.
Definition: DistanceOutlier.h:33
The main class, and handler for all of the trajectory data.
Definition: TrajData.h:22
void SetFinePartitionLength(map< IntIntPair, float > *lengthMap)
Setter for lengths of fine level partitions.
Definition: DistanceOutlier.h:49
void SetLengthArray(FloatArray *lengthArray)
Setter for the array of partition lengths.
Definition: DistanceOutlier.h:44