[SQL] Régions-départements-villes de France [Résolu]

[SQL] Régions-départements-villes de France Mysql php departements regions et villes !!! SQL Server 2005 Express en francais (Résolu) Cherche webcam de ville en France (Résolu) SQL Recherche par ville (Résolu) Liste complète des villes de france [Résolu]

Bonjour,

Je mets à votre disposition un script SQL qui lie les régions, les départements et les villes Françaises.

Téléchargez-le ici : www.christophemaillard.cmoi.cc (lien vers le script sur la page d'accueil).

Servez-vous ! Ça peut avoir différentes utilités, par exemple vérifier le code postal-ville lors d'une inscription, ou encore calculer la distance (vol d'oiseau) entre deux villes (coordonnées latitude-longitude).

table regions       id       region       filtre    table departements       id       id_region       numero       departement       filtre    table ville       id       id_departement       departement       filtre       cp       lat       lon


A plus,

sp00m`

Forum

[SQL] Régions-départements-villes de France Mysql php departements regions et villes !!! SQL Server 2005 Express en francais (Résolu) Cherche webcam de ville en France (Résolu) SQL Recherche par ville (Résolu) Liste complète des villes de france [Résolu]

Web: www.shapebootstrap.net

36 réponses

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Le champ filtre sert à comparer plus rapidement les données à l'inscription (cp + ville) avec celles de la base de données (insensible à la casse et aux accents, etc. - "SELECT filtre, cp FROM ville" plutôt que "SELECT ville, cp FROM ville").

Après, je n'ai pas vu l'utilité du code INSEE mais ça peut se rajouter assez facilement.

Et pour ce qui est de la distance, son calcul se fait assez facilement aussi juste avec les coordonnées latitude-longitude. Mais je veux bien que tu m'expliques comment tu fais aussi avec les coordonnées Lambert 2 étendu ^^
Cette réponse vous a-t-elle aidé ?  

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Pour ce qui est de l'insée, je m'en sers pour localiser les clients !
Le soucis étant qu'en leur demandant un code postal, je peux avoir plusieurs réponse, je leur donne donc le choix de la ville et ensuite, je me sers de l'insée pour tout le reste des procédures. Je pourrai aussi utiliser l'id de ma table, mais ce n'est pas très explicite (dans les urls, dans les mails ...) ... m'enfin chacun ses gouts.

Pour ce qui est des Lambert 2 étendus ils donnent une valeur en mètres X et Y sur toute la France par rapport à un point d'origine.
En gros, tu place la carte un repère orthonormé sur la carte de France, et tu as les valeur X,Y des toutes les villes :
http://seig.ensg.eu/IMAGES/FP28/FP28_2.gif
Donc un simple sqtr((x1-x2)²+(y1-y2)²) te donne la distance entre 2 points (en mètre).
C'est aussi super pratique pour positionner les villes sur une carte (suffit de définir les coordonnées de la carte par rapport aux coordonnées globales et hop...)

J'ai récupérer l'intégralité de ces données ...

J'ai aussi dans ma table les altitudes min et max des communes, la superficie, et il faut que j'y rajoute la population (j'ai déjà les données, faut juste que je les croisent avec la table).

La population peut être intéressante pour sortir les plus grandes villes par exemple.

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Merci pour ton script!!

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Salut merci pour cette superbe base, mais je pense que tu as un problème avec les département dans ta table "ville" à partir de la ligne 7047 à la ville Aghione. Les départements ne correspondent plus avec les codes postaux.

Ville CP Numéro de département
Aghione 20270 21

Autre petite coquille la dernière ville Wy-dit-Joly-Village s'écrit avec un i dans joli.

Voilà c'est juste pour éviter que d'autre ne se fasse avoir.

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Juste pour info, la base à été mise à jour avec les modifications dont Docteur Doc parlait.

Enjoy,

sp00m`

Reply
réponses:
  • auteur

    Bon juste pour info il y a un web service mondial (plus ou moins à jours mais plutôt plus) qui permet d'avoir en permanence des données à jours...

    une requête HTTP avec paramètre = une réponse XML du site...

    Je m'en sers pour presque tout dès qu'il s'git de géographie et d'adresse postale

    Just enjoy by clicking there www.geonames.org

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Slt Spoom,
Arf ... ton script m'interesse mais ton lien est "down" :( ...
Te serai t il possible de le mettre sur un serveur ou une Url qui fonctionne ?

Merci en tt cas :)

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Salut a tous
Moi aussi ton script m'intéresse il a l'air vraiment bien foutu..
Quelqu'un l'a gardé et pourrait le remettre a disposition ce serait sympa.

Merci

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Slt Squeezy,

comme toi ca m'intéresse mais pas de réponse à mon précédent Post.
Du coups après avoir cherché un peu je suis tombé sur ca :

http://www.paperblog.fr/...

Je crois que tout y est ;)

C you :]~

Reply
réponses:
  • auteur

    En effet, je m'étais basé sur la BDD que tu proposes pour réaliser la mienne. L'inconvénient de celle que tu cites (d'après mes souvenirs), c'est que les villes et dept n'étaient pas liés (en gros, la base n'était pas orientée utilisation WEB).

    Je remet mon script d'ici peu en ligne.

    sp00m``

  • Crisu

    Slt sp00m,

    l'ayant utilisé il y a peu je confirme que les villes sont correctement liées et donc orienté Web.
    Il me semble qu'il existe plusieurs version de ce script, et que le lien envoyé est la version 3, peut être celles d'avant étaient différentes ...


    Have a nice day ^^

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Salut,

Je suis désolé, mon site est down, l'hébergeur gratuit chez lequel j'étais n'a pas supporté les intempéries... ^^

Je le mettrais temporairement en ligne sur un autre site, je vous donne l'URL demain.

sp00m`

Reply
réponses:
  • auteur

    Ok Merci j'attends ca avec impatience...

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Etrangement, mon hébergeur a repris vie ^^ Le script est donc à nouveau disponible sur :

www.christophemaillard.cmoi.cc (accueil -> actualité au 18/07/2009)

Enjoy,

sp00m`

Reply
réponses:
  • auteur

    Merci fiston c'est cool.

  • auteur

    Y'a pas d'quoi, p'pa!

  • auteur

    il semblerait que le site n'existe plus ???

  • auteur

    En effet, l'hébergeur a arrêté ses services gratuits. Contacte-moi par email ([email protected]) pour avoir le script.

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Juste pour info, le script est de nouveau disponible à cette adresse :

http://isabellemaillard.iceheberg.fr/upload/france.sql

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Bonjour sp00m,

Pouvez expliquer clairement ou vous avez eu cette base ainsi que le script servant à calculer les positions ?

En êtes vous l'auteur ?

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

L'INSEE met à dispo une base qui recense toutes les villes de France, avec leur CP, code INSEE, lat, long, et autres données je crois. Je n'ai gardé que le nom des villes, le CP, et les coordonnées lat-long. En suite, j'ai créé le champ filtre (utile pour vérifier un formulaire par exemple). Et enfin, j'ai créé les tables region et departement, en prenant soin de bien lier les indices (id region, id departement, id ville).

Donc non, je n'en suis pas l'auteur, je me suis inspiré de ce que proposait l'INSEE et l'ai "arrangé" selon mon utilité.

Voici un script permettant de calculer la distance à vol d'oiseau entre 2 villes (non-optimisé, mais fonctionnel) :

class Misc  {    	public static function getDistance($_idVille1, $_idVille2)  	{  		$result = mysql_query("SELECT lat, lon FROM ville WHERE id = $_idVille1 OR id = $_idVille2");  		$i = 0;  		while($data = mysql_fetch_array($result))  		{  			if($i == 0)  			{  				$rlo1 = deg2rad($data['lon']);  				$rla1 = deg2rad($data['lat']);  			}  			elseif($i == 1)  			{  				$rlo2 = deg2rad($data['lon']);  				$rla2 = deg2rad($data['lat']);  			}  			$i++;  		}  		$earthRadius = 6367000;  		$dlo = ($rlo2 - $rlo1) / 2;  		$dla = ($rla2 - $rla1) / 2;  		$a = (sin($dla) * sin($dla)) + cos($rla1) * cos($rla2) * (sin($dlo) * sin($dlo));  		$d = 2 * atan2(sqrt($a), sqrt(1 - $a));  		$distance = $earthRadius * $d;  		return ceil($distance / 1000);  	}    }


L'appel se fait ainsi :

Imaginons que nous voulions la distance entre Lyon (id dans la table : 27534) et Dunkerque (id dans la table : 22379) :

$distance = Misc::getDistance(27534, 22379);

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Merci beaucoup, sp00m'
je teste de suite, ça semble correspondre à ce que je cherchais.
Quand on voit que certains sites proposent la même chose en payant, on ne peut que te féliciter!

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Attention quand même...Après quelques tests, je renonce à l'utiliser en production: En effet, il manque des communes (essayez par exemple de trouver saint Julien, 83560, pourtant ça existe, j'y habite ;))
Et les arrondissements des grandes villes sont fantaisistes
Merci quand même pour le boulot sp00m', mais c'est pas encore au top

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Bonjour !
Quelqu'un aurait le fichier dont il est question dans le premier post svp ? Le site donné ne fonctionne plus et j'aurais grande utilité de ce fichier :D !
Merci par avance !

--

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Le lien ne marche plus, pas de fichier

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

intéressant ... je me suis déjà fait à peu près la même chose ....

a quoi te sers le champ filtre ?
il serait intéressant de rajouter le code insée des villes et pourquoi pas les coordonnées en Lambert 2 étendu qui permet de calculer très facilement la distance entre 2 villes ...

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Une petite fonction codé à l'arrache pour corrigé le problème.

  function correcBDD()    {      $sql = "SELECT id, cp FROM bdd_ville";      $res = queryDB($sql);      while($data = mysql_fetch_assoc($res))        {     			$newDep = substr($data['cp'], 0,2);  				$sql2 = "UPDATE bdd_ville SET id_departement='$newDep' WHERE id='$data[id]'";  				$res2 = queryDB($sql2);        }  			echo 'terminer';    }  correcBDD();  

Remplacer bdd_ville par le nom de votre table.

Reply
réponses:
  • auteur

  • auteur

    Ben en fait, c'est la Corse qui m'a posé pas mal de problème (comme toujours ^^) parce qu'elle est divisée en 2 départements : 2A et 2B sauf que les codes postaux commencent tous par 20***. Si on exécute ton script, je ne pense pas que ça résolve le problème... Si tu l'as fait est que ça fonctionne quand même, dis moi !

    Pour info, voilà un objet qui calcule la distance à vole d'oiseau entre 2 villes en donnant les ids des villes :

    class Misc  {  	  	public static function getDistance($_idVille1, $_idVille2)  	{  		$result = mysql_query("SELECT lat, lon FROM ville WHERE id = $_idVille1 OR id = $_idVille2");  		$i = 0;  		while($data = mysql_fetch_array($result))  		{  			if($i == 0)  			{  				$rlo1 = deg2rad($data['lon']);  				$rla1 = deg2rad($data['lat']);  			}  			elseif($i == 1)  			{  				$rlo2 = deg2rad($data['lon']);  				$rla2 = deg2rad($data['lat']);  			}  			$i++;  		}  		$earthRadius = 6367000;  		$dlo = ($rlo2 - $rlo1) / 2;  		$dla = ($rla2 - $rla1) / 2;  		$a = (sin($dla) * sin($dla)) + cos($rla1) * cos($rla2) * (sin($dlo) * sin($dlo));  		$d = 2 * atan2(sqrt($a), sqrt(1 - $a));  		$distance = $earthRadius * $d;  		return ceil($distance / 1000);  	}    }


    Appel principal :

    $distance = Misc::getDistance($idVille1, $idVille2);

  • auteur

    Petit correction, je me souviens de la manière dont j'avais traité le problème.
    Dans la table departement, il faut différencier id et numero :
    Puisque la corse est divisée en 2 départements (2A et 2B) mais que les codes postaux commencent tous par 20***, on a donc le département 2A qui a pour id 20 et le département 2B qui a pour id 21. C'est pour cela qu'on peut croire qu'il y a un décalage (par exemple: la Vienne a pour numéro 86 mais pour id 87).

    Pour les requêtes, il faut faire comme cela :

    SELECT departement FROM departement WHERE id = (SELECT id_departement FROM ville WHERE filtre LIKE 'aghione')

    Le résultat donnera bien Haute Corse, la relation est donc bien vérifiée.

    Désolé pour la précision un peu tardive ^^

  • auteur

    Juste une petite précision : le département d'une ville ne correspond pas à tous les coups aux deux premiers chiffres du code postal, donc ta fonction de correction est erronée.

    Source : http://fr.wikipedia.org/wiki/Code_postal_en_France#Les_deux_premiers_chiffres

    Les deux premiers chiffres du code correspondent au numéro du département dans lequel est situé le bureau distributeur du courrier de la commune : il existe quelques cas rares de communes dont le courrier est distribué par un bureau qui ne se trouve pas dans le même département (cas de villages limitrophes). Par exemple Laveyrune a pour code postal 48250 (48 étant le code de la Lozère), alors qu'elle est située dans l'Ardèche (07).

    Tu pourras le vérifier en téléchargeant le fichier contenant la liste simplifiée des communes (intitulé comsimp2009) sur le site de l'INSEE et en le croisant avec ta table des codes postaux.

    Cordialement,
    Docteur Doc.

  • auteur

    Wow, merci, je n'aurais jamais su ça tout seul ! Je vais faire les modifs et remettre à jour. Merci l'organisation de la poste française ^^

  • auteur

    De rien sp00m`, je traite des données géographiques depuis un petit bout de temps pour un usage professionnel.

    Sur le plan personnel, je me suis lancé dans la géolocalisation et le croisement des données de l'INSEE, à titre expérimentale. J'ai une base MySQL qui commence à être bien solide (extensible à la plupart des organisations des autres pays) et associée à une classe PHP qui permet de la manipuler. Je penserai à la partager dès qu'elle sera un peu plus aboutie et en faire part sur ce topic.

    En attendant, bonne continuation.
    Docteur Doc

  • auteur

    Merci Docteur Doc pour cette précision.

  • auteur

    lat max, lat min, lon max et lon min par département et région en métropole

    ça donne des rectangles qui se chevauchent, mais ça me convient.
    si vous avez plus fin comme définition, je suis preneur.

    à partir du lien :

    http://isabellemaillard.iceheberg.fr/upload/france.sql

    pour ne pas altérer mes sources, j'ai copié et renommé les trois tables en INSEE_nom-de-la-table
    j'ai renommé les id en pk_nom-de-la-table (clef primaire) ou fk_nom-de-la-table (clef secondaire)

    j'ai ajouté les 4 champs :
    - lat_min_nom-de-la-table
    - lat_max_nom-de-la-table
    - lon_min_nom-de-la-table
    - lon_max_nom-de-la-table
    à insee_régions et insee_départements

    j'ai fait un max et un min des lon et lat de chaque ville par département
    j'ai fait un max et un min des max et des min de chaque département par région


    Voici les tables insee_régions et insee_départements :

    -- --------------------------------------------------------

  • auteur

      --  -- Table structure for table 'insee_regions'  --    CREATE TABLE 'insee_regions' (    'pk_region' int(11) unsigned NOT NULL auto_increment,    'nom_region' varchar(255) NOT NULL,    'filtre' varchar(255) NOT NULL,    'lat_min_region' float(8,6) NOT NULL,    'lat_max_region' float(8,6) NOT NULL,    'lon_min_region' float(8,6) NOT NULL,    'lon_max_region' float(8,6) NOT NULL,    PRIMARY KEY  ('pk_region')  ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COMMENT='infos issues de l''insee, des erreurs possibles' AUTO_INCREMENT=23 ;    --  -- Dumping data for table 'insee_regions'  --    INSERT INTO 'insee_regions' VALUES(1, 'Alsace', 'alsace', 47.433334, 49.066666, 6.900000, 8.175830);  INSERT INTO 'insee_regions' VALUES(2, 'Aquitaine', 'aquitaine', 42.875000, 45.683334, -1.775000, 1.433333);  INSERT INTO 'insee_regions' VALUES(3, 'Auvergne', 'auvergne', 44.633331, 46.766666, 2.133333, 4.450000);  INSERT INTO 'insee_regions' VALUES(4, 'Basse-Normandie', 'basse-normandie', 48.224998, 49.713581, -1.931040, 0.933333);  INSERT INTO 'insee_regions' VALUES(5, 'Bourgogne', 'bourgogne', 46.000000, 48.383331, 2.000000, 5.500000);  INSERT INTO 'insee_regions' VALUES(6, 'Bretagne', 'bretagne', 47.291668, 48.849998, -5.000000, -1.033333);  INSERT INTO 'insee_regions' VALUES(7, 'Centre', 'centre', 46.000000, 48.916668, 0.083333, 3.066667);  INSERT INTO 'insee_regions' VALUES(8, 'Champagne-Ardenne', 'champagne-ardenne', 47.616669, 50.133331, 3.416667, 5.866667);  INSERT INTO 'insee_regions' VALUES(9, 'Corse', 'corse', 41.391666, 42.950001, 8.583333, 9.533333);  INSERT INTO 'insee_regions' VALUES(10, 'Franche-Comté', 'franche-comte', 46.000000, 47.966667, 5.000000, 7.116667);  INSERT INTO 'insee_regions' VALUES(11, 'Haute-Normandie ', 'haute-normandie', 48.679409, 50.066666, 0.083333, 1.783333);  INSERT INTO 'insee_regions' VALUES(12, 'Île-de-France', 'ile-de-france', 48.000000, 49.200001, 1.483333, 3.483333);  INSERT INTO 'insee_regions' VALUES(13, 'Languedoc-Roussillon', 'languedoc-roussillon', 42.000000, 44.933334, 1.716667, 4.783333);  INSERT INTO 'insee_regions' VALUES(14, 'Limousin', 'limousin', 44.933334, 46.433334, 0.691667, 2.566667);  INSERT INTO 'insee_regions' VALUES(15, 'Lorraine', 'lorraine', 47.866669, 49.599998, 4.916667, 7.583333);  INSERT INTO 'insee_regions' VALUES(16, 'Midi-Pyrénées', 'midi-pyrenees', 42.000000, 45.016666, -0.283333, 3.366667);  INSERT INTO 'insee_regions' VALUES(17, 'Nord-Pas-de-Calais', 'nord-pas-de-calais', 50.000000, 51.083332, 1.000000, 4.183333);  INSERT INTO 'insee_regions' VALUES(18, 'Pays de la Loire', 'pays-de-la-loire', 46.000000, 48.549999, -2.550000, 0.833333);  INSERT INTO 'insee_regions' VALUES(19, 'Picardie', 'picardie', 48.866669, 50.349998, 1.383333, 4.225700);  INSERT INTO 'insee_regions' VALUES(20, 'Poitou-Charentes', 'poitou-charentes', 45.116669, 47.133331, -1.541667, 1.122980);  INSERT INTO 'insee_regions' VALUES(21, 'Provence-Alpes-Côte d''Azur', 'provence-alpes-cote-d-azur', 43.000000, 45.042252, 4.000000, 7.616667);  INSERT INTO 'insee_regions' VALUES(22, 'Rhône-Alpes', 'rhone-alpes', 44.133331, 46.500000, 3.750000, 7.050000);    -- --------------------------------------------------------    --  -- Table structure for table 'insee_departements'  --    CREATE TABLE 'insee_departements' (    'pk_departement' int(11) unsigned NOT NULL auto_increment,    'fk_region' int(11) unsigned NOT NULL,    'num_departement' varchar(2) NOT NULL,    'nom_departement' varchar(255) NOT NULL,    'filtre' varchar(255) NOT NULL,    'lat_min_departement' float(8,6) NOT NULL,    'lat_max_departement' float(8,6) NOT NULL,    'lon_min_departement' float(8,6) NOT NULL,    'lon_max_departement' float(8,6) NOT NULL,    PRIMARY KEY  ('pk_departement')  ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COMMENT='infos issues de l''insee, des erreurs possibles' AUTO_INCREMENT=97 ;    --  -- Dumping data for table 'insee_departements'  --    INSERT INTO 'insee_departements' VALUES(1, 22, '01', 'Ain', 'ain', 45.000000, 46.500000, 4.750000, 6.133333);  INSERT INTO 'insee_departements' VALUES(2, 19, '02', 'Aisne', 'aisne', 48.866669, 50.049999, 3.016667, 4.225700);  INSERT INTO 'insee_departements' VALUES(3, 3, '03', 'Allier', 'allier', 45.966667, 46.766666, 2.300000, 3.983333);  INSERT INTO 'insee_departements' VALUES(4, 21, '04', 'Alpes-de-Haute-Provence', 'alpes-de-haute-provence', 43.700001, 44.500000, 5.550000, 6.850000);  INSERT INTO 'insee_departements' VALUES(5, 21, '05', 'Hautes-Alpes', 'hautes-alpes', 44.000000, 45.042252, 5.000000, 6.950000);  INSERT INTO 'insee_departements' VALUES(6, 21, '06', 'Alpes-Maritimes', 'alpes-maritimes', 43.500000, 44.283333, 6.700000, 7.616667);  INSERT INTO 'insee_departements' VALUES(7, 22, '07', 'Ardèche', 'ardeche', 44.299999, 45.349998, 3.883333, 4.850000);  INSERT INTO 'insee_departements' VALUES(8, 8, '08', 'Ardennes', 'ardennes', 49.000000, 50.133331, 4.000000, 5.333333);  INSERT INTO 'insee_departements' VALUES(9, 16, '09', 'Ariège', 'ariege', 42.000000, 43.283333, 0.000000, 2.116667);  INSERT INTO 'insee_departements' VALUES(10, 8, '10', 'Aube', 'aube', 47.933334, 48.683334, 3.416667, 4.833333);  INSERT INTO 'insee_departements' VALUES(11, 13, '11', 'Aude', 'aude', 42.000000, 43.433334, 1.716667, 3.135000);  INSERT INTO 'insee_departements' VALUES(12, 16, '12', 'Aveyron', 'aveyron', 43.000000, 44.883331, 1.850000, 3.366667);  INSERT INTO 'insee_departements' VALUES(13, 21, '13', 'Bouches-du-Rhône', 'bouches-du-rhone', 43.000000, 43.900002, 4.000000, 5.700000);  INSERT INTO 'insee_departements' VALUES(14, 4, '14', 'Calvados', 'calvados', 48.766666, 49.416668, -1.133333, 0.433333);  INSERT INTO 'insee_departements' VALUES(15, 3, '15', 'Cantal', 'cantal', 44.633331, 45.433334, 2.133333, 3.283333);  INSERT INTO 'insee_departements' VALUES(16, 20, '16', 'Charente', 'charente', 45.216667, 46.116669, -0.400000, 0.895090);  INSERT INTO 'insee_departements' VALUES(17, 20, '17', 'Charente-Maritime', 'charente-maritime', 45.116669, 46.299999, -1.541667, -0.016667);  INSERT INTO 'insee_departements' VALUES(18, 7, '18', 'Cher', 'cher', 46.000000, 47.566666, 1.840900, 3.050000);  INSERT INTO 'insee_departements' VALUES(19, 14, '19', 'Corrèze', 'correze', 44.933334, 45.700001, 1.266667, 2.516667);  INSERT INTO 'insee_departements' VALUES(20, 9, '2A', 'Corse-du-Sud', 'corse-du-sud', 41.391666, 42.500000, 8.583333, 9.400000);  INSERT INTO 'insee_departements' VALUES(21, 9, '2B', 'Haute-Corse', 'haute-corse', 41.900002, 42.950001, 8.650000, 9.533333);  INSERT INTO 'insee_departements' VALUES(22, 5, '21', 'Côte-d''Or', 'cote-d-or', 46.916668, 48.007401, 4.000000, 5.500000);  INSERT INTO 'insee_departements' VALUES(23, 6, '22', 'Côtes-d''Armor', 'cotes-d-armor', 48.000000, 48.849998, -3.933333, -1.950000);  INSERT INTO 'insee_departements' VALUES(24, 14, '23', 'Creuse', 'creuse', 45.000000, 46.433334, 1.000000, 2.566667);  INSERT INTO 'insee_departements' VALUES(25, 2, '24', 'Dordogne', 'dordogne', 44.583332, 45.683334, -0.016667, 1.433333);  INSERT INTO 'insee_departements' VALUES(26, 10, '25', 'Doubs', 'doubs', 46.599998, 47.566666, 5.716667, 7.016667);  INSERT INTO 'insee_departements' VALUES(27, 22, '26', 'Drôme', 'drome', 44.133331, 45.316666, 4.700000, 5.700000);  INSERT INTO 'insee_departements' VALUES(28, 11, '27', 'Eure', 'eure', 48.679409, 49.466667, 0.316667, 1.783333);  INSERT INTO 'insee_departements' VALUES(29, 7, '28', 'Eure-et-Loir', 'eure-et-loir', 47.966667, 48.916668, 0.816667, 1.966667);  INSERT INTO 'insee_departements' VALUES(30, 6, '29', 'Finistère', 'finistere', 47.766666, 48.733334, -5.000000, -3.416667);  INSERT INTO 'insee_departements' VALUES(31, 13, '30', 'Gard', 'gard', 43.533333, 44.417599, 3.300000, 4.783333);  INSERT INTO 'insee_departements' VALUES(32, 16, '31', 'Haute-Garonne', 'haute-garonne', 42.783333, 43.883331, 0.483333, 2.000000);  INSERT INTO 'insee_departements' VALUES(33, 16, '32', 'Gers', 'gers', 43.333332, 44.049999, -0.250000, 1.166667);  INSERT INTO 'insee_departements' VALUES(34, 2, '33', 'Gironde', 'gironde', 44.250000, 45.541668, -1.233333, 0.250000);  INSERT INTO 'insee_departements' VALUES(35, 13, '34', 'Hérault', 'herault', 43.250000, 43.950001, 2.600000, 4.183333);  INSERT INTO 'insee_departements' VALUES(36, 6, '35', 'Ille-et-Vilaine', 'ille-et-vilaine', 47.650002, 48.683334, -2.233333, -1.033333);  INSERT INTO 'insee_departements' VALUES(37, 7, '36', 'Indre', 'indre', 46.366669, 47.250000, 0.916667, 2.516667);  INSERT INTO 'insee_departements' VALUES(38, 7, '37', 'Indre-et-Loire', 'indre-et-loire', 46.737179, 47.666668, 0.083333, 1.300000);  INSERT INTO 'insee_departements' VALUES(39, 22, '38', 'Isère', 'isere', 44.750000, 45.866669, 4.766667, 6.183333);  INSERT INTO 'insee_departements' VALUES(40, 10, '39', 'Jura', 'jura', 46.000000, 47.283333, 5.000000, 6.133333);  INSERT INTO 'insee_departements' VALUES(41, 2, '40', 'Landes', 'landes', 43.516666, 44.483334, -1.466667, 0.066667);  INSERT INTO 'insee_departements' VALUES(42, 7, '41', 'Loir-et-Cher', 'loir-et-cher', 47.000000, 48.083332, 0.633333, 2.183333);  INSERT INTO 'insee_departements' VALUES(43, 22, '42', 'Loire', 'loire', 45.266666, 46.250000, 3.750000, 4.750000);  INSERT INTO 'insee_departements' VALUES(44, 3, '43', 'Haute-Loire', 'haute-loire', 44.783333, 45.400002, 3.000000, 4.450000);  INSERT INTO 'insee_departements' VALUES(45, 18, '44', 'Loire-Atlantique', 'loire-atlantique', 46.883331, 47.833332, -2.550000, -0.966667);  INSERT INTO 'insee_departements' VALUES(46, 7, '45', 'Loiret', 'loiret', 47.508331, 48.316666, 1.550000, 3.066667);  INSERT INTO 'insee_departements' VALUES(47, 16, '46', 'Lot', 'lot', 44.250000, 45.016666, 1.016667, 2.183333);  INSERT INTO 'insee_departements' VALUES(48, 2, '47', 'Lot-et-Garonne', 'lot-et-garonne', 44.000000, 44.733334, -0.050000, 1.050000);  INSERT INTO 'insee_departements' VALUES(49, 13, '48', 'Lozère', 'lozere', 44.000000, 44.933334, 3.000000, 3.966667);  INSERT INTO 'insee_departements' VALUES(50, 18, '49', 'Maine-et-Loire', 'maine-et-loire', 47.000000, 47.766666, -1.316667, 0.200000);  INSERT INTO 'insee_departements' VALUES(51, 4, '50', 'Manche', 'manche', 48.500000, 49.713581, -1.931040, -0.770240);  INSERT INTO 'insee_departements' VALUES(52, 8, '51', 'Marne', 'marne', 48.533333, 49.383331, 3.450000, 5.000000);  INSERT INTO 'insee_departements' VALUES(53, 8, '52', 'Haute-Marne', 'haute-marne', 47.616669, 48.666668, 4.683333, 5.866667);  INSERT INTO 'insee_departements' VALUES(54, 18, '53', 'Mayenne', 'mayenne', 47.750000, 48.549999, -1.200000, -0.066667);  INSERT INTO 'insee_departements' VALUES(55, 15, '54', 'Meurthe-et-Moselle', 'meurthe-et-moselle', 48.358334, 49.549999, 5.433333, 7.100000);  INSERT INTO 'insee_departements' VALUES(56, 15, '55', 'Meuse', 'meuse', 48.433334, 49.599998, 4.916667, 5.833333);  INSERT INTO 'insee_departements' VALUES(57, 6, '56', 'Morbihan', 'morbihan', 47.291668, 48.183334, -3.716667, -2.066667);  INSERT INTO 'insee_departements' VALUES(58, 15, '57', 'Moselle', 'moselle', 48.599998, 49.500000, 5.916667, 7.583333);  INSERT INTO 'insee_departements' VALUES(59, 5, '58', 'Nièvre', 'nievre', 46.000000, 47.549999, 2.000000, 4.166667);  INSERT INTO 'insee_departements' VALUES(60, 17, '59', 'Nord', 'nord', 50.000000, 51.083332, 2.108333, 4.183333);  INSERT INTO 'insee_departements' VALUES(61, 19, '60', 'Oise', 'oise', 49.083332, 49.750000, 1.716667, 3.116667);  INSERT INTO 'insee_departements' VALUES(62, 4, '61', 'Orne', 'orne', 48.224998, 48.950001, -0.816667, 0.933333);  INSERT INTO 'insee_departements' VALUES(63, 17, '62', 'Pas-de-Calais', 'pas-de-calais', 50.000000, 50.983334, 1.000000, 3.116667);  INSERT INTO 'insee_departements' VALUES(64, 3, '63', 'Puy-de-Dôme', 'puy-de-dome', 45.333332, 46.216667, 2.450000, 3.944640);  INSERT INTO 'insee_departements' VALUES(65, 2, '64', 'Pyrénées-Atlantiques', 'pyrenees-atlantiques', 42.875000, 43.583332, -1.775000, 0.000000);  INSERT INTO 'insee_departements' VALUES(66, 16, '65', 'Hautes-Pyrénées', 'hautes-pyrenees', 42.733334, 43.591667, -0.283333, 0.633333);  INSERT INTO 'insee_departements' VALUES(67, 13, '66', 'Pyrénées-Orientales', 'pyrenees-orientales', 42.000000, 42.883331, 1.816667, 3.166667);  INSERT INTO 'insee_departements' VALUES(68, 1, '67', 'Bas-Rhin', 'bas-rhin', 48.166668, 49.066666, 6.966667, 8.175830);  INSERT INTO 'insee_departements' VALUES(69, 1, '68', 'Haut-Rhin', 'haut-rhin', 47.433334, 48.283333, 6.900000, 7.600000);  INSERT INTO 'insee_departements' VALUES(70, 22, '69', 'Rhône', 'rhone', 45.000000, 46.283333, 4.000000, 5.111600);  INSERT INTO 'insee_departements' VALUES(71, 10, '70', 'Haute-Saône', 'haute-saone', 47.250000, 47.966667, 5.383333, 6.783333);  INSERT INTO 'insee_departements' VALUES(72, 5, '71', 'Saône-et-Loire', 'saone-et-loire', 46.166668, 47.116669, 3.683333, 5.438500);  INSERT INTO 'insee_departements' VALUES(73, 18, '72', 'Sarthe', 'sarthe', 47.616669, 48.466667, -0.383333, 0.833333);  INSERT INTO 'insee_departements' VALUES(74, 22, '73', 'Savoie', 'savoie', 45.165001, 45.920700, 5.633333, 7.050000);  INSERT INTO 'insee_departements' VALUES(75, 22, '74', 'Haute-Savoie', 'haute-savoie', 45.000000, 46.400002, 5.000000, 6.933333);  INSERT INTO 'insee_departements' VALUES(76, 12, '75', 'Paris', 'paris', 48.866669, 48.866669, 2.333333, 2.333333);  INSERT INTO 'insee_departements' VALUES(77, 11, '76', 'Seine-Maritime', 'seine-maritime', 49.266666, 50.066666, 0.083333, 1.750000);  INSERT INTO 'insee_departements' VALUES(78, 12, '77', 'Seine-et-Marne', 'seine-et-marne', 48.000000, 49.083332, 2.000000, 3.483333);  INSERT INTO 'insee_departements' VALUES(79, 12, '78', 'Yvelines', 'yvelines', 48.458332, 49.083332, 1.483333, 2.300000);  INSERT INTO 'insee_departements' VALUES(80, 20, '79', 'Deux-Sèvres', 'deux-sevres', 46.000000, 47.083332, -0.833333, 0.166667);  INSERT INTO 'insee_departements' VALUES(81, 19, '80', 'Somme', 'somme', 49.583332, 50.349998, 1.383333, 3.166667);  INSERT INTO 'insee_departements' VALUES(82, 16, '81', 'Tarn', 'tarn', 43.416668, 44.183334, 1.000000, 2.858333);  INSERT INTO 'insee_departements' VALUES(83, 16, '82', 'Tarn-et-Garonne', 'tarn-et-garonne', 43.783333, 44.366669, 0.766667, 1.966667);  INSERT INTO 'insee_departements' VALUES(84, 21, '83', 'Var', 'var', 43.000000, 43.783333, 5.666667, 6.916667);  INSERT INTO 'insee_departements' VALUES(85, 21, '84', 'Vaucluse', 'vaucluse', 43.000000, 44.400002, 4.683333, 5.700000);  INSERT INTO 'insee_departements' VALUES(86, 18, '85', 'Vendée', 'vendee', 46.000000, 47.066666, -2.350000, -0.566667);  INSERT INTO 'insee_departements' VALUES(87, 20, '86', 'Vienne', 'vienne', 46.000000, 47.133331, -0.083333, 1.122980);  INSERT INTO 'insee_departements' VALUES(88, 14, '87', 'Haute-Vienne', 'haute-vienne', 45.483334, 46.366669, 0.691667, 1.883333);  INSERT INTO 'insee_departements' VALUES(89, 15, '88', 'Vosges', 'vosges', 47.866669, 48.516666, 5.433333, 7.150000);  INSERT INTO 'insee_departements' VALUES(90, 5, '89', 'Yonne', 'yonne', 47.366669, 48.383331, 2.950000, 4.300000);  INSERT INTO 'insee_departements' VALUES(91, 10, '90', 'Territoire de Belfort', 'territoire-de-belfort', 47.450001, 47.766666, 6.766667, 7.116667);  INSERT INTO 'insee_departements' VALUES(92, 12, '91', 'Essonne', 'essonne', 48.299999, 48.750000, 1.933333, 2.533333);  INSERT INTO 'insee_departements' VALUES(93, 12, '92', 'Hauts-de-Seine', 'hauts-de-seine', 48.750000, 48.933334, 2.175000, 2.333333);  INSERT INTO 'insee_departements' VALUES(94, 12, '93', 'Seine-St-Denis', 'seine-st-denis', 48.849998, 48.966667, 2.308333, 2.583333);  INSERT INTO 'insee_departements' VALUES(95, 12, '94', 'Val-de-Marne', 'val-de-marne', 48.700001, 48.849998, 2.316667, 2.583333);  INSERT INTO 'insee_departements' VALUES(96, 12, '95', 'Val-d''Oise', 'val-d-oise', 48.933334, 49.200001, 1.633333, 2.566667);        

  • auteur

    Hello,

    tu as aussi un webservice gratuit http://www.citysearch-api.com qui propose des flux JSON / XML listant les villes françaises ( plus les départements, les pays, les régions françaises) en fonction des paramètres que tu recherches (numéro du département, première lettre de la ville, code postal...).

    Ce webservice s'étand aussi aux villes Belges. Ca t'évite d'ajouter une ou plusieurs tables supplémentaires dans ta BDD (qui est limitée en taille chez certains hébergeurs)...

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed