Line 152... |
Line 152... |
152 |
$rd = array();
|
152 |
$rd = array();
|
153 |
for($ii = $index_insertion_point_debut+1; $ii <= $index_insertion_point_fin; $ii++) {
|
153 |
for($ii = $index_insertion_point_debut+1; $ii <= $index_insertion_point_fin; $ii++) {
|
154 |
$rd[] = $element['geometry'][$ii];
|
154 |
$rd[] = $element['geometry'][$ii];
|
155 |
}
|
155 |
}
|
Line -... |
Line 156... |
- |
|
156 |
|
- |
|
157 |
$proj_debut = $infos_debut;
|
- |
|
158 |
$proj_fin = $infos_fin;
|
156 |
|
159 |
|
157 |
// Insertion des points utilisateurs en début et fin de tableau
|
160 |
// Insertion des points utilisateurs en début et fin de tableau
|
158 |
array_unshift($rd, $proj_debut);
|
161 |
array_unshift($rd, $proj_debut);
|
Line 159... |
Line 162... |
159 |
array_push($rd, $proj_fin);
|
162 |
array_push($rd, $proj_fin);
|
Line 172... |
Line 175... |
172 |
asort($distances_fin);
|
175 |
asort($distances_fin);
|
173 |
reset($distances_fin);
|
176 |
reset($distances_fin);
|
174 |
$cle_plus_courte_fin = key($distances_fin);
|
177 |
$cle_plus_courte_fin = key($distances_fin);
|
175 |
}
|
178 |
}
|
Line -... |
Line 179... |
- |
|
179 |
|
176 |
|
180 |
if(!empty($distances_fin)) {
|
177 |
$cle_choisie = $this->choisirIndexRuePlusProchePourDebutEtFin($cle_plus_courte_debut, $cle_plus_courte_fin, $distances_debut, $distances_fin);
|
181 |
$cle_choisie = $this->choisirIndexRuePlusProchePourDebutEtFin($cle_plus_courte_debut, $cle_plus_courte_fin, $distances_debut, $distances_fin);
|
178 |
$rue_plus_proche = $distances_fin[$cle_choisie];
|
182 |
$rue_plus_proche = $distances_fin[$cle_choisie];
|
179 |
unset($distances_fin[$cle_choisie]);
|
183 |
unset($distances_fin[$cle_choisie]);
|
- |
|
184 |
$distances_fin = array($cle_choisie => $rue_plus_proche) + $distances_fin;
|
Line 180... |
Line 185... |
180 |
$distances_fin = array($cle_choisie => $rue_plus_proche) + $distances_fin;
|
185 |
}
|
181 |
|
186 |
|
182 |
$elements_fmt = array();
|
187 |
$elements_fmt = array();
|
183 |
foreach($distances_fin as $index => $distance) {
|
188 |
foreach($distances_fin as $index => $distance) {
|
Line 217... |
Line 222... |
217 |
|
222 |
|
218 |
return $cle_choisie;
|
223 |
return $cle_choisie;
|
Line 219... |
Line 224... |
219 |
}
|
224 |
}
|
220 |
|
225 |
|
221 |
function getIndexInsertionDebut($element, $index_min, $debut) {
|
226 |
function getIndexInsertionDebut($element, $index_min, $debut) {
|
222 |
// le point de début est situé entre $index_debut et $index_debut + 1
|
227 |
// le point de début est situé entre $index_min et $index_min + 1
|
223 |
$proj_debut = $this->getOrthoPoint($element['geometry'][$index_min], $element['geometry'][$index_min+1], $debut);
|
228 |
$proj_debut = $this->getOrthoPoint($element['geometry'][$index_min], $element['geometry'][$index_min+1], $debut);
|
224 |
$point_deb = $element['geometry'][$index_min];
|
229 |
$point_deb = $element['geometry'][$index_min];
|
225 |
$point_deb_plus_un = $element['geometry'][$index_min+1];
|
230 |
$point_deb_plus_un = $element['geometry'][$index_min+1];
|
Line 242... |
Line 247... |
242 |
$distance_point_fin_moins_un_proj = self::haversineGreatCircleDistance($point_fin_moins_un['lat'], $point_fin_moins_un['lon'], $proj_fin['lat'], $proj_fin['lon']);
|
247 |
$distance_point_fin_moins_un_proj = self::haversineGreatCircleDistance($point_fin_moins_un['lat'], $point_fin_moins_un['lon'], $proj_fin['lat'], $proj_fin['lon']);
|
243 |
$distance_point_fin_fin_moins_un = self::haversineGreatCircleDistance($point_fin['lat'], $point_fin['lon'], $point_fin_moins_un['lat'], $point_fin_moins_un['lon']);
|
248 |
$distance_point_fin_fin_moins_un = self::haversineGreatCircleDistance($point_fin['lat'], $point_fin['lon'], $point_fin_moins_un['lat'], $point_fin_moins_un['lon']);
|
Line 244... |
Line 249... |
244 |
|
249 |
|
245 |
if($distance_point_fin_moins_un_proj < $distance_point_fin_fin_moins_un) {
|
250 |
if($distance_point_fin_moins_un_proj < $distance_point_fin_fin_moins_un) {
|
246 |
// le point le plus proche doit être éliminé
|
251 |
// le point le plus proche doit être éliminé
|
247 |
return $index_max;
|
252 |
return $index_max - 1;
|
248 |
} else {
|
253 |
} else {
|
249 |
// il doit être gardé
|
254 |
// il doit être gardé
|
250 |
return $index_max + 1;
|
255 |
return $index_max;
|
251 |
}
|
256 |
}
|
Line 252... |
Line 257... |
252 |
}
|
257 |
}
|
253 |
|
258 |
|