Skip to content

Instantly share code, notes, and snippets.

@Koenvh1
Last active December 11, 2017 12:33
Show Gist options
  • Save Koenvh1/5ea54fcc3e7ee17aa2012e38c7b3613a to your computer and use it in GitHub Desktop.
Save Koenvh1/5ea54fcc3e7ee17aa2012e38c7b3613a to your computer and use it in GitHub Desktop.
The logic behind Flitsmelder (https://koenvh.nl/flitsmelder), a system that notifies you when a mobile radar is on your route. This is just the logic to check whether a radar is in range.
<?php
/**
* Class FlitsLogic
*
* Class to get radars from flitsservice.nl, and parse the points to check whether they are within a certain distance.
*
* @author Koen van Hove
* @license MIT
* (Though it would be really nice if you left a message if you decided to use this, and perhaps even credited me)
*/
class FlitsLogic
{
var $client = null;
/**
* @var float Distance in kilometres, 50m in this case.
*/
var $distance = 0.05; //0.0008;
function __construct()
{
$this->client = new SoapClient("http://fcm.flitsservice.nl/FlitsNavV2.asmx?wsdl");
}
/**
* Get all mobile radars in NL and BE
* @param int $tries Amount of tries for getting the data, this in case the server malfunctions for a second
* @return array
*/
public function getRadars($tries = 1)
{
try {
$obj = [
"username" => "Misbruik?",
"password" => "Bedankt!",
"UniqueID" => "",
"lat" => "0.0",
"lon" => "0.0",
"snelheid" => "0",
"rijrichting" => "0",
"Versie" => "",
"OS" => ""
];
//Get FlitsNavNL object
$resultNL = $this->client->FlitsNavNL($obj);
//Parse XML and convert to array
$xmlNL = simplexml_load_string($resultNL->FlitsNavNLResult->any);
$jsonNL = json_encode($xmlNL);
$arrayNL = json_decode($jsonNL, true);
if (count($arrayNL) == 0) {
$arrayNL = [
"NewDataSet" => [
"stdTabel" => []
]
];
}
//Get FlitsNavBE object
$resultBE = $this->client->FlitsNavBE($obj);
//Parse XML and convert to array
$xmlBE = simplexml_load_string($resultBE->FlitsNavBEResult->any);
$jsonBE = json_encode($xmlBE);
$arrayBE = json_decode($jsonBE, true);
if (count($arrayBE) == 0) {
$arrayBE = [
"NewDataSet" => [
"stdTabel" => []
]
];
}
//var_dump($arrayNL);
//var_dump($arrayBE);
$radars = array_merge($arrayNL["NewDataSet"]["stdTabel"], $arrayBE["NewDataSet"]["stdTabel"]);
return $radars;
} catch (Exception $exception) {
if($tries == 5) {
return [];
} else {
return $this->getRadars($tries + 1);
}
}
}
/**
* Get all stationary cameras in NL and BE.
* @return array
*/
public function getStationaryRadars()
{
$obj = [
"username" => "Misbruik?",
"password" => "Bedankt!",
"UniqueID" => "",
"lat" => "0.0",
"lon" => "0.0",
"snelheid" => "0",
"rijrichting" => "0",
"Versie" => "",
"OS" => ""
];
$resultFlitspaal = $this->client->Flitspalen($obj);
$xmlFlitspaal = simplexml_load_string($resultFlitspaal->FlitspalenResult->any);
$jsonFlitspaal = json_encode($xmlFlitspaal);
$arrayFlitspaal = json_decode($jsonFlitspaal, true);
if (count($arrayFlitspaal) == 0) {
$arrayFlitspaal = [
"NewDataSet" => [
"stdTabel" => []
]
];
}
return array_map(function($item) {
return [
"Latitude" => $item["latitude"],
"Longitude" => $item["longitude"],
"melding" => "Vaste camera",
"type" => $item["type"],
"vmax" => array_key_exists("vmax", $item) ? $item["vmax"] : ""
];
}, $arrayFlitspaal["NewDataSet"]["stdTabel"]);
}
/**
* Get all traject controles (average speed limit cameras)
* @return array
*/
public function getTrajectControles()
{
$obj = [
"username" => "Misbruik?",
"password" => "Bedankt!",
"UniqueID" => "",
"lat" => "0.0",
"lon" => "0.0",
"snelheid" => "0",
"rijrichting" => "0",
"Versie" => "",
"OS" => ""
];
$resultTraject = $this->client->Trajectcontroles($obj);
$xmlTraject = simplexml_load_string($resultTraject->TrajectcontrolesResult->any);
$jsonTraject = json_encode($xmlTraject);
$arrayTraject = json_decode($jsonTraject, true);
if (count($arrayTraject) == 0) {
$arrayTraject = [
"NewDataSet" => [
"stdTabel" => []
]
];
}
$trajectControles = [];
foreach ($arrayTraject["NewDataSet"]["stdTabel"] as $item) {
$coordinates = explode(";", $item["portalen"]);
$coordinatesA = explode(",", $coordinates[0]);
$coordinatesB = explode(",", $coordinates[1]);
$trajectControles[] = [
"melding" => $item["naam"],
"Latitude" => $coordinatesA[0],
"Longitude" => $coordinatesA[1]
];
$trajectControles[] = [
"melding" => $item["naam"],
"Latitude" => $coordinatesB[0],
"Longitude" => $coordinatesB[1]
];
}
return $trajectControles;
}
/**
* Convert array of points to formulas
*/
public function convertWaypointsToFormulas($points)
{
/**
* Convert the waypoints into formulas
*
* lat = y, lon = x
*/
$formulas = [];
for ($i = 0; $i < count($points) - 1; $i++) {
$formulas[] = [
"lon1" => $points[$i]["lon"],
"lat1" => $points[$i]["lat"],
"lon2" => $points[$i + 1]["lon"],
"lat2" => $points[$i + 1]["lat"],
"boundaries" => [
"latLower" => min([$points[$i + 1]["lat"], $points[$i]["lat"]]),
"latUpper" => max([$points[$i + 1]["lat"], $points[$i]["lat"]]),
"lonLower" => min([$points[$i + 1]["lon"], $points[$i]["lon"]]),
"lonUpper" => max([$points[$i + 1]["lon"], $points[$i]["lon"]])
]
];
}
return $formulas;
}
public function findProjectionPointOnLineSegment($x, $y, $x1, $y1, $x2, $y2)
{
/**
* Calculate the vectors relative to the base (x1,y1), ie. make (x1,y1) (0,0)
*/
$a = $x - $x1;
$b = $y - $y1;
$c = $x2 - $x1;
$d = $y2 - $y1;
/**
* Calculate the dot product to find the point where the line from to (x,y) projects onto the line (x2,y2),
* because that point will be the point from where the distance from the line to (x,y) will be the shortest.
*/
$dot = $a * $c + $b * $d;
/**
* Calculate A² + B² = C², so the length of the line to (x2,y2) squared
*/
$len_sq = pow($c, 2) + pow($d, 2);
if ($len_sq != 0) {
/**
* The ratio between the dot projection and the length squared
*/
$param = $dot / $len_sq;
} else {
return -1;
}
$xx = null;
$yy = null;
if ($param < 0) {
/**
* It is smaller than 0, so the dot product must have been negative, so the angle must have been over 90 deg.
* The shortest distance is on a part of the line that is outside the line segment (on the left side), so
* in that case, the shortest distance to the line segment is just the distance between (x1,y1) and (x,y)
*/
$xx = $x1;
$yy = $y1;
} elseif ($param > 1) {
/**
* Similarly to above, only now it project to the line outside the line segment on the right side, in which
* case it is just the distance to the right outer most part.
*/
$xx = $x2;
$yy = $y2;
} else {
/**
* So it does project within our line segment, in that case it projects to the ratio times the length,
* plus the initial offset, which will yield the point where (x,y) projects on the line.
*/
$xx = $x1 + $param * $c;
$yy = $y1 + $param * $d;
}
return [
"lon" => $xx,
"lat" => $yy
];
}
function coordinatesToKilometres($lat1, $lon1, $lat2, $lon2)
{
$earthRadius = 6371;
$dLat = deg2rad($lat2 - $lat1);
$dLon = deg2rad($lon2 - $lon1);
$lat1 = deg2rad($lat1);
$lat2 = deg2rad($lat2);
$a = sin($dLat / 2) * sin($dLat / 2) + sin($dLon / 2) * sin($dLon / 2) * cos($lat1) * cos($lat2);
$c = 2 * atan2(sqrt($a), sqrt(1 - $a));
return abs($earthRadius * $c);
}
public function getRadarsOnRoute($formulas, $radars)
{
$radarsOnRoute = [];
$radarsMaybeOnRoute = []; //All radars within the rectangles
$distance = $this->distance;
$distanceCoordinates = $distance / 50; //Convert meters to coordinates, with margin (actual amount is 111.111km per coordinate)
foreach ($radars as $radar) {
/**
* Filter all points that are not in range, ie. their limits are not within range.
* Add the distance to the limits, because the point can be outside the box while still being smaller than the distance.
* It can never be outside the box + distance though (because the shortest route is perpendicular)
*/
$filteredPoints = array_filter($formulas, function($formula) use ($radar, $distanceCoordinates){
return (
(($radar["Latitude"]) > (($formula["boundaries"]["latLower"]) - $distanceCoordinates)) &&
(($radar["Latitude"]) < (($formula["boundaries"]["latUpper"]) + $distanceCoordinates)) &&
($radar["Longitude"] > ($formula["boundaries"]["lonLower"] - $distanceCoordinates)) &&
($radar["Longitude"] < ($formula["boundaries"]["lonUpper"] + $distanceCoordinates))
);
});
foreach ($filteredPoints as $filteredPoint) {
$projectionPoint = $this->findProjectionPointOnLineSegment(
$radar["Longitude"], $radar["Latitude"],
$filteredPoint["lon1"], $filteredPoint["lat1"],
$filteredPoint["lon2"], $filteredPoint["lat2"]
);
$distanceToPoint = $this->coordinatesToKilometres($projectionPoint["lat"], $projectionPoint["lon"],
$radar["Latitude"], $radar["Longitude"]);
if($distanceToPoint < $distance) {
$radarsOnRoute[] = $radar;
break;
} else {
//var_dump([$radar["melding"], $distanceToPoint]);
}
$radarsMaybeOnRoute[] = $radar;
}
}
//$radarsOnRoute = @array_diff($radarsMaybeOnRoute, $radarsOnRoute); //Radars *not* on route
return $radarsOnRoute;
}
/**
* Get mock data for radars to ease testing
* @return array
*/
public function getMockRadars()
{
return array (
0 =>
array (
'ID' => '247595',
'Soort' => 'Laser',
'melding' => 'laser nh in santpoort-noord op de santpoortse dreef bij parking station',
'Latitude' => '52.4327050006942',
'Longitude' => '4.63284230245335',
'snelweg' => 'OB1',
'hmp' => '0',
'regioweg' => 'OB2',
'Wegnummer' => '999',
'ReLi' => 'Li',
'plaats' => 'santpoort-noord',
'straat' => 'santpoortse dreef',
'tijd' => '16:16:00',
),
1 =>
array (
'ID' => '247594',
'Soort' => 'Radar',
'melding' => 'radar ov n765 ens ri kampen op de frieseweg thv hmp 15.2 bij nesweg',
'Latitude' => '52.5760164038448',
'Longitude' => '5.90216573013608',
'snelweg' => 'OB1',
'hmp' => '15.2',
'regioweg' => 'N765',
'Wegnummer' => '765',
'ReLi' => '<>',
'plaats' => 'kampen',
'straat' => 'frieseweg',
'tijd' => '16:37:41',
),
2 =>
array (
'ID' => '247593',
'Soort' => 'Radar',
'melding' => 'radar ge n812 babberich ri beek op de beekseweg thv hmp 1.6',
'Latitude' => '51.9055632391286',
'Longitude' => '6.14032395437207',
'snelweg' => 'OB1',
'hmp' => '1.6',
'regioweg' => 'N812',
'Wegnummer' => '812',
'ReLi' => '<>',
'plaats' => 'OB3',
'straat' => 'beekseweg',
'tijd' => '16:21:30',
),
3 =>
array (
'ID' => '247592',
'Soort' => 'Radar',
'melding' => 'radar ov a1 hengelo ri duitse grens thv hmp 168.1 bij viaduct',
'Latitude' => '52.2927975811381',
'Longitude' => '6.90467332162857',
'snelweg' => 'A1',
'hmp' => '168.1',
'regioweg' => 'OB2',
'Wegnummer' => '1',
'ReLi' => 'Re',
'plaats' => 'OB3',
'straat' => 'OB4',
'tijd' => '16:18:43',
),
4 =>
array (
'ID' => '247591',
'Soort' => 'Radar',
'melding' => 'radar nh s103 in amsterdam op de haarlemmerweg thv de molen',
'Latitude' => '52.3851477043836',
'Longitude' => '4.85978722572327',
'snelweg' => 'OB1',
'hmp' => '0',
'regioweg' => 'OB2',
'Wegnummer' => '999',
'ReLi' => '<>',
'plaats' => 'amsterdam',
'straat' => 'haarlemmerweg',
'tijd' => '15:52:00',
),
5 =>
array (
'ID' => '247590',
'Soort' => 'Laser',
'melding' => 'laser ge in uddel op de aardhuisweg',
'Latitude' => '52.2569592697414',
'Longitude' => '5.792316198349',
'snelweg' => 'OB1',
'hmp' => '0',
'regioweg' => 'OB2',
'Wegnummer' => '999',
'ReLi' => '<>',
'plaats' => 'uddel',
'straat' => 'aardhuisweg',
'tijd' => '15:58:27',
),
6 =>
array (
'ID' => '247589',
'Soort' => 'Radar',
'melding' => 'radar nh a27 utrecht ri almere thv hmp 91.7 na wildviaduct',
'Latitude' => '52.1890723512313',
'Longitude' => '5.18567497995356',
'snelweg' => 'A27',
'hmp' => '91.7',
'regioweg' => 'OB2',
'Wegnummer' => '27',
'ReLi' => 'Re',
'plaats' => 'OB3',
'straat' => 'OB4',
'tijd' => '15:49:24',
),
7 =>
array (
'ID' => '247588',
'Soort' => 'Radar',
'melding' => 'radar zh in rotterdam op de straatweg thv lommerrijk',
'Latitude' => '51.947681',
'Longitude' => '4.485459',
'snelweg' => 'OB1',
'hmp' => '0',
'regioweg' => 'OB2',
'Wegnummer' => '999',
'ReLi' => '<>',
'plaats' => 'rotterdam',
'straat' => 'straatweg',
'tijd' => '14:39:46',
),
8 =>
array (
'ID' => '247587',
'Soort' => 'Radar',
'melding' => 'radar nh s111 in amsterdam op de muntbergweg thv praxis',
'Latitude' => '52.297513',
'Longitude' => '4.94914',
'snelweg' => 'OB1',
'hmp' => '0',
'regioweg' => 'OB2',
'Wegnummer' => '999',
'ReLi' => '<>',
'plaats' => 'amsterdam',
'straat' => 'muntbergweg',
'tijd' => '14:45:00',
),
9 =>
array (
'ID' => '247586',
'Soort' => 'Radar',
'melding' => 'radar nb a67 venlo ri eindhoven thv hmp 35.5 bij shell tankstation',
'Latitude' => '51.423572150988',
'Longitude' => '5.66953157387602',
'snelweg' => 'A67',
'hmp' => '35.5',
'regioweg' => 'OB2',
'Wegnummer' => '67',
'ReLi' => 'Li',
'plaats' => 'OB3',
'straat' => 'OB4',
'tijd' => '15:04:38',
),
10 =>
array (
'ID' => '247585',
'Soort' => 'Radar',
'melding' => 'radar ut a2 den bosch ri utrecht thv hmp 72.0 bij afslag vianen',
'Latitude' => '51.9937362169232',
'Longitude' => '5.08016024765732',
'snelweg' => 'A2',
'hmp' => '72.0',
'regioweg' => 'OB2',
'Wegnummer' => '2',
'ReLi' => 'Li',
'plaats' => 'OB3',
'straat' => 'OB4',
'tijd' => '14:53:00',
),
11 =>
array (
'ID' => '247584',
'Soort' => 'Radar',
'melding' => 'radar zh in den haag op de lozerlaan',
'Latitude' => '52.048294216449',
'Longitude' => '4.23162460327148',
'snelweg' => 'OB1',
'hmp' => '0',
'regioweg' => 'OB2',
'Wegnummer' => '999',
'ReLi' => '<>',
'plaats' => 'den haag',
'straat' => 'lozerlaan',
'tijd' => '15:12:44',
),
12 =>
array (
'ID' => '247583',
'Soort' => 'Radar',
'melding' => 'radar ge in nijmegen op de griftdijk thv de terracottastraat',
'Latitude' => '51.878637',
'Longitude' => '5.849619',
'snelweg' => 'OB1',
'hmp' => '0',
'regioweg' => 'OB2',
'Wegnummer' => '999',
'ReLi' => '<>',
'plaats' => 'nijmegen',
'straat' => 'griftdijk',
'tijd' => '14:54:00',
),
13 =>
array (
'ID' => '247582',
'Soort' => 'Radar',
'melding' => 'radar ge n308 oldebroek ri wezep op de zuiderzeestraatweg thv hmp 60.5',
'Latitude' => '52.4700451746945',
'Longitude' => '5.98435221701961',
'snelweg' => 'OB1',
'hmp' => '60.5',
'regioweg' => 'N308',
'Wegnummer' => '308',
'ReLi' => '<>',
'plaats' => 'OB3',
'straat' => 'zuiderzeestraatweg',
'tijd' => '15:15:37',
),
14 =>
array (
'ID' => '247581',
'Soort' => 'Radar',
'melding' => 'radar li a73 venray ri roermond thv hmp 40.8 bij afslag venlo-zuid achter het geluidsscherm',
'Latitude' => '51.3540509704587',
'Longitude' => '6.14901366931858',
'snelweg' => 'A73',
'hmp' => '40.8',
'regioweg' => 'OB2',
'Wegnummer' => '73',
'ReLi' => 'Li',
'plaats' => 'OB3',
'straat' => 'OB4',
'tijd' => '15:15:29',
),
15 =>
array (
'ID' => '247580',
'Soort' => 'Radar',
'melding' => 'radar nb in oosterhout op de bovensteweg thv afslag centerum-west',
'Latitude' => '51.6545071536012',
'Longitude' => '4.8569655418396',
'snelweg' => 'OB1',
'hmp' => '0',
'regioweg' => 'OB2',
'Wegnummer' => '999',
'ReLi' => '<>',
'plaats' => 'oosterhout',
'straat' => 'bovensteweg',
'tijd' => '15:12:22',
),
16 =>
array (
'ID' => '247578',
'Soort' => 'Radar',
'melding' => 'radar nb n321 grave ri cuijk thv hmp 5.5 bij esso tankstation',
'Latitude' => '51.7430742519087',
'Longitude' => '5.77935230077662',
'snelweg' => 'OB1',
'hmp' => '5.5',
'regioweg' => 'N321',
'Wegnummer' => '321',
'ReLi' => '<>',
'plaats' => 'OB3',
'straat' => 'maasveld',
'tijd' => '15:07:20',
),
17 =>
array (
'ID' => '247576',
'Soort' => 'Radar',
'melding' => 'radar nb budel ri maarheeze op de randweg-oost bij de kuikensvensdijk',
'Latitude' => '51.2871648169005',
'Longitude' => '5.62276840209961',
'snelweg' => 'OB1',
'hmp' => '0',
'regioweg' => 'OB2',
'Wegnummer' => '999',
'ReLi' => '<>',
'plaats' => 'budel',
'straat' => 'randweg-oost',
'tijd' => '14:41:00',
),
18 =>
array (
'ID' => '247571',
'Soort' => 'Radar',
'melding' => 'radar nb in den bosch op de rietveldenweg thv heineken / bmw dealer',
'Latitude' => '51.6998131488141',
'Longitude' => '5.27775049209595',
'snelweg' => 'OB1',
'hmp' => '0',
'regioweg' => 'OB2',
'Wegnummer' => '999',
'ReLi' => '<>',
'plaats' => 'den bosch',
'straat' => 'rietveldenweg',
'tijd' => '14:10:47',
),
19 =>
array (
'ID' => '247570',
'Soort' => 'Radar',
'melding' => 'radar nb in valkenswaard op de maastrichterweg thv de taamvenhoeve',
'Latitude' => '51.3206407343094',
'Longitude' => '5.46396732319408',
'snelweg' => 'OB1',
'hmp' => '0',
'regioweg' => 'OB2',
'Wegnummer' => '999',
'ReLi' => '<>',
'plaats' => 'valkenswaard',
'straat' => 'maastrichterweg',
'tijd' => '14:10:24',
),
20 =>
array (
'ID' => '247569',
'Soort' => 'Radar',
'melding' => 'radar nb helvoirt ri haaren op de helvoirtseweg thv kapelletje',
'Latitude' => '51.6157782132957',
'Longitude' => '5.23477077484131',
'snelweg' => 'OB1',
'hmp' => '0',
'regioweg' => 'OB2',
'Wegnummer' => '999',
'ReLi' => '<>',
'plaats' => 'OB3',
'straat' => 'helvoirtseweg',
'tijd' => '14:10:19',
),
21 =>
array (
'ID' => '247566',
'Soort' => 'Radar',
'melding' => 'radar fl a6 lelystad ri almere thv hmp 61.2 bij afslag almere buiten-oost achter viaduct',
'Latitude' => '52.3987008648837',
'Longitude' => '5.34332800977721',
'snelweg' => 'A6',
'hmp' => '61.2',
'regioweg' => 'OB2',
'Wegnummer' => '6',
'ReLi' => 'Li',
'plaats' => 'OB3',
'straat' => 'OB4',
'tijd' => '14:06:34',
),
22 =>
array (
'ID' => '247565',
'Soort' => 'Radar',
'melding' => 'radar ge n310 elspeet ri nunspeet thv hmp 89.6',
'Latitude' => '52.3104340761472',
'Longitude' => '5.78812712291184',
'snelweg' => 'OB1',
'hmp' => '89.6',
'regioweg' => 'N310',
'Wegnummer' => '310',
'ReLi' => '<>',
'plaats' => 'OB3',
'straat' => 'OB4',
'tijd' => '13:19:00',
),
23 =>
array (
'ID' => '247563',
'Soort' => 'Radar',
'melding' => 'radar ge n784 deelen ri arnhem op de apeldoornseweg thv hmp 2.8',
'Latitude' => '52.0107848134246',
'Longitude' => '5.92580759128937',
'snelweg' => 'OB1',
'hmp' => '2.8',
'regioweg' => 'N784',
'Wegnummer' => '784',
'ReLi' => 'Li',
'plaats' => 'arnhem',
'straat' => 'apeldoornseweg',
'tijd' => '13:19:09',
),
24 =>
array (
'ID' => '247561',
'Soort' => 'Radar',
'melding' => 'radar nh in purmerend op de burgemeester kooimanweg thv aalscholverstraat door blauwe vw transporter',
'Latitude' => '52.5230952489175',
'Longitude' => '4.95736598968506',
'snelweg' => 'OB1',
'hmp' => '0',
'regioweg' => 'OB2',
'Wegnummer' => '999',
'ReLi' => '<>',
'plaats' => 'purmerend',
'straat' => 'burgemeester kooimanweg',
'tijd' => '13:15:51',
),
25 =>
array (
'ID' => '247560',
'Soort' => 'Radar',
'melding' => 'radar ze philippine ri zandstraat op de zandstraat',
'Latitude' => '51.2710445648805',
'Longitude' => '3.78418922424316',
'snelweg' => 'OB1',
'hmp' => '0',
'regioweg' => 'OB2',
'Wegnummer' => '999',
'ReLi' => '<>',
'plaats' => 'zandstraat',
'straat' => 'zandstraat',
'tijd' => '13:16:38',
),
26 =>
array (
'ID' => '247559',
'Soort' => 'Radar',
'melding' => 'radar nh in alkmaar op de zeswielen',
'Latitude' => '52.64126',
'Longitude' => '4.76181',
'snelweg' => 'OB1',
'hmp' => '0',
'regioweg' => 'OB2',
'Wegnummer' => '999',
'ReLi' => '<>',
'plaats' => 'alkmaar',
'straat' => 'zeswielen',
'tijd' => '12:54:46',
),
27 =>
array (
'ID' => '247558',
'Soort' => 'Radar',
'melding' => 'radar zh in katwijk op de parklaan',
'Latitude' => '52.19829',
'Longitude' => '4.39675',
'snelweg' => 'OB1',
'hmp' => '0',
'regioweg' => 'OB2',
'Wegnummer' => '999',
'ReLi' => '<>',
'plaats' => 'katwijk',
'straat' => 'parklaan',
'tijd' => '12:52:42',
),
28 =>
array (
'ID' => '247555',
'Soort' => 'Radar',
'melding' => 'radar li n562 helden ri roggel thv hmp 20.7 nabij buitenhof de leistert',
'Latitude' => '51.2797892620189',
'Longitude' => '5.94104468822479',
'snelweg' => 'OB1',
'hmp' => '20.7',
'regioweg' => 'N562',
'Wegnummer' => '562',
'ReLi' => '<>',
'plaats' => 'roggel',
'straat' => 'heldensedijk',
'tijd' => '12:13:33',
),
29 =>
array (
'ID' => '247554',
'Soort' => 'Radar',
'melding' => 'radar ov hengelo op de deldenerstraat door zwarte transpoter',
'Latitude' => '52.2660825671391',
'Longitude' => '6.78300619125366',
'snelweg' => 'OB1',
'hmp' => '0',
'regioweg' => 'OB2',
'Wegnummer' => '999',
'ReLi' => '<>',
'plaats' => 'hengelo',
'straat' => 'deldenerstraat',
'tijd' => '12:19:25',
),
30 =>
array (
'ID' => '247553',
'Soort' => 'Radar',
'melding' => 'radar ov n337 deventer ri zwolle thv hmp 4.1',
'Latitude' => '52.2813485967867',
'Longitude' => '6.12834201375257',
'snelweg' => 'OB1',
'hmp' => '4.1',
'regioweg' => 'N337',
'Wegnummer' => '337',
'ReLi' => '<>',
'plaats' => 'OB3',
'straat' => 'OB4',
'tijd' => '12:13:24',
),
31 =>
array (
'ID' => '247552',
'Soort' => 'Radar',
'melding' => 'radar nb n625 empel ri `t wild thv hmp 3.8 bij roode wetering',
'Latitude' => '51.7517592311247',
'Longitude' => '5.36397415973555',
'snelweg' => 'OB1',
'hmp' => '3.8',
'regioweg' => 'N625',
'Wegnummer' => '625',
'ReLi' => '<>',
'plaats' => 'maren-kessel',
'straat' => 'hustenweg',
'tijd' => '12:19:08',
),
32 =>
array (
'ID' => '247551',
'Soort' => 'Radar',
'melding' => 'radar ov n18 in haaksbergen op de enschedesestraat thv hmp 8.0',
'Latitude' => '52.1642101159593',
'Longitude' => '6.76302491724461',
'snelweg' => 'OB1',
'hmp' => '8.0',
'regioweg' => 'N18',
'Wegnummer' => '18',
'ReLi' => '<>',
'plaats' => 'haaksbergen',
'straat' => 'enschedesestraat',
'tijd' => '12:13:10',
),
33 =>
array (
'ID' => '247550',
'Soort' => 'Radar',
'melding' => 'radar ov n347 in sint isidorushoeve op de goorsestraat bij hmp 1.4 thv autobedrijf aktief',
'Latitude' => '52.1769641909906',
'Longitude' => '6.70105332203954',
'snelweg' => 'OB1',
'hmp' => '1.4',
'regioweg' => 'N347',
'Wegnummer' => '347',
'ReLi' => '<>',
'plaats' => 'sint isidorushoeve',
'straat' => 'goorsestraat',
'tijd' => '12:13:27',
),
);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment