Skip to content

Commit f136555

Browse files
authored
Add files via upload
1 parent 848f7e0 commit f136555

File tree

6 files changed

+556
-0
lines changed

6 files changed

+556
-0
lines changed

src/RcppExports.cpp

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,20 @@ BEGIN_RCPP
182182
return rcpp_result_gen;
183183
END_RCPP
184184
}
185+
// Remove_duplicate
186+
Rcpp::NumericMatrix Remove_duplicate(std::vector<int> gfrom, std::vector<int> gto, std::vector<double> gw, int NbNodes);
187+
RcppExport SEXP _cppRouting_Remove_duplicate(SEXP gfromSEXP, SEXP gtoSEXP, SEXP gwSEXP, SEXP NbNodesSEXP) {
188+
BEGIN_RCPP
189+
Rcpp::RObject rcpp_result_gen;
190+
Rcpp::RNGScope rcpp_rngScope_gen;
191+
Rcpp::traits::input_parameter< std::vector<int> >::type gfrom(gfromSEXP);
192+
Rcpp::traits::input_parameter< std::vector<int> >::type gto(gtoSEXP);
193+
Rcpp::traits::input_parameter< std::vector<double> >::type gw(gwSEXP);
194+
Rcpp::traits::input_parameter< int >::type NbNodes(NbNodesSEXP);
195+
rcpp_result_gen = Rcpp::wrap(Remove_duplicate(gfrom, gto, gw, NbNodes));
196+
return rcpp_result_gen;
197+
END_RCPP
198+
}
185199
// Isochrone
186200
Rcpp::List Isochrone(std::vector<int> gfrom, std::vector<int> gto, std::vector<double> gw, int NbNodes, std::vector<int> dep, double max_limit, std::vector<std::string> dict);
187201
RcppExport SEXP _cppRouting_Isochrone(SEXP gfromSEXP, SEXP gtoSEXP, SEXP gwSEXP, SEXP NbNodesSEXP, SEXP depSEXP, SEXP max_limitSEXP, SEXP dictSEXP) {
@@ -218,6 +232,23 @@ BEGIN_RCPP
218232
return rcpp_result_gen;
219233
END_RCPP
220234
}
235+
// Simplify2
236+
Rcpp::List Simplify2(std::vector<int> gfrom, std::vector<int> gto, std::vector<double> gw, int NbNodes, bool loop, std::vector<int> keep, std::vector<std::string> dict);
237+
RcppExport SEXP _cppRouting_Simplify2(SEXP gfromSEXP, SEXP gtoSEXP, SEXP gwSEXP, SEXP NbNodesSEXP, SEXP loopSEXP, SEXP keepSEXP, SEXP dictSEXP) {
238+
BEGIN_RCPP
239+
Rcpp::RObject rcpp_result_gen;
240+
Rcpp::RNGScope rcpp_rngScope_gen;
241+
Rcpp::traits::input_parameter< std::vector<int> >::type gfrom(gfromSEXP);
242+
Rcpp::traits::input_parameter< std::vector<int> >::type gto(gtoSEXP);
243+
Rcpp::traits::input_parameter< std::vector<double> >::type gw(gwSEXP);
244+
Rcpp::traits::input_parameter< int >::type NbNodes(NbNodesSEXP);
245+
Rcpp::traits::input_parameter< bool >::type loop(loopSEXP);
246+
Rcpp::traits::input_parameter< std::vector<int> >::type keep(keepSEXP);
247+
Rcpp::traits::input_parameter< std::vector<std::string> >::type dict(dictSEXP);
248+
rcpp_result_gen = Rcpp::wrap(Simplify2(gfrom, gto, gw, NbNodes, loop, keep, dict));
249+
return rcpp_result_gen;
250+
END_RCPP
251+
}
221252

222253
static const R_CallMethodDef CallEntries[] = {
223254
{"_cppRouting_Astar", (DL_FUNC) &_cppRouting_Astar, 9},
@@ -230,8 +261,10 @@ static const R_CallMethodDef CallEntries[] = {
230261
{"_cppRouting_Dijkstra_early_stop_path", (DL_FUNC) &_cppRouting_Dijkstra_early_stop_path, 7},
231262
{"_cppRouting_Dijkstra_mat", (DL_FUNC) &_cppRouting_Dijkstra_mat, 6},
232263
{"_cppRouting_Dijkstra_multi_path", (DL_FUNC) &_cppRouting_Dijkstra_multi_path, 7},
264+
{"_cppRouting_Remove_duplicate", (DL_FUNC) &_cppRouting_Remove_duplicate, 4},
233265
{"_cppRouting_Isochrone", (DL_FUNC) &_cppRouting_Isochrone, 7},
234266
{"_cppRouting_Isochrone_multi", (DL_FUNC) &_cppRouting_Isochrone_multi, 9},
267+
{"_cppRouting_Simplify2", (DL_FUNC) &_cppRouting_Simplify2, 7},
235268
{NULL, NULL, 0}
236269
};
237270

src/RcppExports.o

1.52 KB
Binary file not shown.

src/duplicated.cpp

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
#include <iostream>
2+
#include <queue>
3+
#include <vector>
4+
#include <fstream>
5+
#include <limits>
6+
#include <functional>
7+
#include <algorithm>
8+
#include <Rcpp.h>
9+
10+
11+
12+
13+
using namespace Rcpp;
14+
15+
// [[Rcpp::plugins(cpp11)]]
16+
// [[Rcpp::export]]
17+
18+
Rcpp::NumericMatrix Remove_duplicate(std::vector<int> gfrom,std::vector<int> gto,std::vector<double> gw,int NbNodes){
19+
20+
std::vector<std::vector<std::pair<int,double> > > Graph(NbNodes);
21+
//std::vector<std::vector<std::pair<int,double> > > Graphr(NbNodes);
22+
int count=0;
23+
for (unsigned int i = 0; i < gfrom.size(); ++i) {
24+
25+
count=0;
26+
if (Graph[gfrom[i]].size()==0){
27+
Graph[gfrom[i]].push_back(std::make_pair(gto[i],gw[i]));
28+
}
29+
else {
30+
31+
for (int j=0;j < Graph[gfrom[i]].size();++j){
32+
33+
if (Graph[gfrom[i]][j].first==gto[i]){
34+
if (Graph[gfrom[i]][j].second >= gw[i]){
35+
count=1;
36+
Graph[gfrom[i]][j].second=gw[i];
37+
}
38+
else {
39+
count=1;
40+
break;
41+
}
42+
43+
}
44+
45+
}
46+
47+
if (count==0){
48+
Graph[gfrom[i]].push_back(std::make_pair(gto[i],gw[i]));
49+
}
50+
}
51+
52+
}
53+
54+
std::vector<int> From;
55+
std::vector<int> To;
56+
std::vector<double> W;
57+
58+
for (int i=0; i < Graph.size(); ++i){
59+
for (int j=0; j < Graph[i].size(); ++j){
60+
From.push_back(i);
61+
To.push_back(Graph[i][j].first);
62+
W.push_back(Graph[i][j].second);
63+
}
64+
65+
}
66+
67+
Rcpp::NumericMatrix final(From.size(),3);
68+
69+
70+
Rcpp::IntegerVector temp=wrap(From);
71+
final( _ ,0)=temp;
72+
Rcpp::IntegerVector temp2=wrap(To);
73+
final( _ ,1)=temp2;
74+
Rcpp::NumericVector temp3=wrap(W);
75+
final( _ ,2)=temp3;
76+
77+
return final;
78+
79+
80+
81+
}

src/duplicated.o

79 KB
Binary file not shown.

0 commit comments

Comments
 (0)