diff --git a/src/accessibility.cpp b/src/accessibility.cpp index ebc50931..4710c8f3 100644 --- a/src/accessibility.cpp +++ b/src/accessibility.cpp @@ -14,8 +14,16 @@ bool distance_node_pair_comparator(const distance_node_pair& l, const distance_node_pair& r) { return l.first < r.first; } -Accessibility::Accessibility(int numnodes) { - this->numnodes = numnodes; +Accessibility::Accessibility( + vector nodeids, vector< vector > nodexy, + vector< vector > edges, vector< vector > edgeweights, + bool twoway) { + for (int i = 0 ; i < edgeweights.size() ; i++) { + this->addGraphalg(new Graphalg( + nodeids, nodexy, edges, edgeweights[i], twoway)); + } + + this->numnodes = nodeids.size(); this->dmsradius = -1; } diff --git a/src/accessibility.h b/src/accessibility.h index 1b247d22..455d6a2e 100644 --- a/src/accessibility.h +++ b/src/accessibility.h @@ -14,9 +14,10 @@ using std::vector; class Accessibility { public: - explicit Accessibility(int numnodes = 0); - - void addGraphalg(MTC::accessibility::Graphalg *g); + Accessibility( + vector nodeids, vector< vector > nodexy, + vector< vector > edges, vector< vector > edgeweights, + bool twoway); // set how many POI categories there will be void initializePOIs( @@ -97,6 +98,8 @@ class Accessibility { DECAY_MAXVAL }; + void addGraphalg(MTC::accessibility::Graphalg *g); + vector findNearestPOIs( int srcnode, diff --git a/src/cyaccess.pyx b/src/cyaccess.pyx index 4a1e9510..75190713 100644 --- a/src/cyaccess.pyx +++ b/src/cyaccess.pyx @@ -9,17 +9,12 @@ cimport numpy as np # http://cython.readthedocs.io/en/latest/src/userguide/wrapping_CPlusPlus.html # http://www.birving.com/blog/2014/05/13/passing-numpy-arrays-between-python-and/ -cdef extern from "graphalg.h" namespace "MTC::accessibility": - cdef cppclass Graphalg: - Graphalg(vector[long], vector[vector[double]], vector[vector[long]], - vector[double], bool) except + - cdef extern from "accessibility.h" namespace "MTC::accessibility": cdef cppclass Accessibility: - Accessibility(int) except + - int numnodes - void addGraphalg(Graphalg*) + Accessibility( + vector[long], vector[vector[double]], vector[vector[long]], + vector[vector[double]], bool) except + void initializePOIs(int, double, int) void initializeCategory(int, vector[long]) vector[vector[double]] findAllNearestPOIs( @@ -68,11 +63,7 @@ cdef class cyaccess: twoway: whether the edges should all be two-way or whether they are directed from the first to the second node """ - self.access = new Accessibility(len(node_ids)) - - for i in range(edge_weights.shape[0]): - self.access.addGraphalg(new Graphalg( - node_ids, node_xys, edges, edge_weights[i], twoway)) + self.access = new Accessibility(node_ids, node_xys, edges, edge_weights, twoway) def __dealloc__(self): del self.access