geocode database

This commit is contained in:
Fred Tempez 2023-07-14 11:04:42 +02:00
parent 17a5fac092
commit 971a95516e
3 changed files with 44 additions and 24 deletions

1
cities_data.json Normal file

File diff suppressed because one or more lines are too long

View File

@ -82,35 +82,54 @@ function geocode($cities)
// Tableau pour stocker les villes et leurs coordonnées // Tableau pour stocker les villes et leurs coordonnées
$citiesData = array(); $citiesData = array();
// Charger les données à partir du fichier JSON s'il existe
if (file_exists('cities_data.json')) {
$citiesData = json_decode(file_get_contents('cities_data.json'), true);
}
// Parcourir les villes et géocoder leurs coordonnées // Parcourir les villes et géocoder leurs coordonnées
foreach ($cities as $city) { foreach ($cities as $city) {
$ville = $city['name']; $ville = $city['name'];
$href = $city['href']; $href = $city['href'];
// Requête à l'API Nominatim // Vérifier si les coordonnées sont déjà présentes dans le tableau
$options = array( $existingCity = array_filter($citiesData, function ($data) use ($ville) {
'http' => array( return $data['name'] === $ville;
'header' => "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3", });
),
);
$context = stream_context_create($options);
$url = 'https://nominatim.openstreetmap.org/search?city=' . urlencode($ville) . '&format=json';
$response = file_get_contents($url, false, $context);
$data = json_decode($response, true);
// Vérifier si la requête a réussi if (!empty($existingCity)) {
if (!empty($data)) { // Utiliser les coordonnées existantes
// Récupérer les coordonnées géographiques de la première correspondance $citiesData[] = reset($existingCity);
$latitude = $data[0]['lat']; } else {
$longitude = $data[0]['lon']; // Requête à l'API Nominatim
$options = array(
// Ajouter la ville et ses coordonnées au tableau 'http' => array(
$citiesData[] = array( 'header' => "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3",
'name' => $ville, ),
'lat' => $latitude,
'lon' => $longitude,
'href' => $href,
); );
$context = stream_context_create($options);
$url = 'https://nominatim.openstreetmap.org/search?city=' . urlencode($ville) . '&format=json';
$response = file_get_contents($url, false, $context);
$data = json_decode($response, true);
// Vérifier si la requête a réussi
if (!empty($data)) {
// Récupérer les coordonnées géographiques de la première correspondance
$latitude = $data[0]['lat'];
$longitude = $data[0]['lon'];
// Ajouter la ville et ses coordonnées au tableau
$cityData = array(
'name' => $ville,
'lat' => $latitude,
'lon' => $longitude,
'href' => $href,
);
$citiesData[] = $cityData;
// Sauvegarder les données dans le fichier JSON
file_put_contents('cities_data.json', json_encode($citiesData));
}
} }
} }

View File

@ -11,7 +11,7 @@
<link rel="stylesheet" href="style.css" /> <link rel="stylesheet" href="style.css" />
</head> </head>
<body <body>
<div class="header"> <div class="header">
<h1>GÉOLOCALISATION DES BROCANTES RÉFÉRENCÉES</h1> <h1>GÉOLOCALISATION DES BROCANTES RÉFÉRENCÉES</h1>
<h2>SUR LE SITE <a href="https://www.sabradou.com/" target="_blank">SABRADOU.COM</a></h2> <h2>SUR LE SITE <a href="https://www.sabradou.com/" target="_blank">SABRADOU.COM</a></h2>