Créer une page de géolocalisation (GIS) d’une adresse IP – Partie 1 – Théorie

Le principe de ce tutoriel est de créer un système qui « transforme » une adresse IP en une position géographique sur une carte tel que google earth, en utilisant PHP, l’API de Hostip (qui renvoie du GML.) et si l’on peut dire un passage de variable à une carte google earth (position et zoom)

Commençons tout d’abord par un peu de théorie.

Qu’est ce qu’une adresse IP?

Une adresse IP est l’identifiant de votre machine sur le net (ou sur un réseau local et qui n’est pas forcément connecter à l’Internet) .

C’est grâce à votre numéro de téléphone mobile (qui est un numéro unique) que vous pouvez communiquer ou recevoir et envoyer des textos. Sur le net, chaque ordinateur ou équipement réseau a de manière générale une adresse IP, c’est votre identifiant unique sur Internet!

Les adresses IP sont 4 numéros (des octets) séparés par un point, en notant qu’un octet va de 0 à 255. il existe des adresses IP dites routables et des adresses IP non routables, pour vous expliquer c’est comme dans une entreprise ou une administration, les personnes y travaillant ont un numéro de poste, par exemple le 300, ce numéro de poste il peut communiquer en interne avec ces collègues, mais ne peut pas communiquer avec l’extérieur (et vice versa) sauf si bien sur il passe par un standard téléphonique.

Dans le monde du Net, c’est pareil, quand vous êtes dans votre société, votre école ou chez vous, les adresses que vous avez sont des adresses dites non routables (du format 192.168.1.X), vous ne pouvez communiquer qu’avec les équipements à l’intérieur de votre réseau interne (dit réseau local) à savoir l’ordinateur de bureau, le pc portable de la petite sœur, la console de jeux du p’tit frère, le téléphone portable 3G du père etc etc, pour communiquer avec l’extérieur, vous devez passer par un routeur ADSL ou une livebox, freebox, flybox etc… qui jouera comme dans l’exemple précédent le rôle du standard téléphonique.

Les adresses que nous voulons étudier sont des adresses routables (donc dite vous que si vous mettez une adresse non routable du genre 127.0.0.1 ou 192.168.1.2 ça ne marchera pas)

Qu’est ce qu’une API?

Une API (Application Program Interface) a un principe assez simple qui se base en faite sur une sortes de « partage d’expériences ». le quotidien du développeur est d’utiliser des routines et des méthodes très basiques pour des opérations qui généralement se répètent, par exemple l’accès à une base de donnée pour afficher le résultat d’une requête SQL, l’ouverture d’un fichier XML pour afficher son contenu dans un tableau etc.. etc… généralement le développeur gardera ces méthodes pour ne pas avoir à les refaire! c’est pareils pour les API,

Je vous donne un exemple, (histoire de m’exprimer autrement) quand vous allez vous acheter une pizza ou un hamburger, vous aller jusqu’à la caisse et vous passez votre commande, vous attendez puis recevez votre commande sans même vous rendre compte que pendant votre attente dans la cuisine une personne se charge de faire le pain, l’autre prépare le fromage, un autre s’occupe de l’emballage etc etc… bref tout un régiment à votre service! mais vous vous en savez rien. c’est pareil pour l’API, vous demandez quelque chose, ça vous le fourni et c’est tout (vous n’avez pas à vous souciez du comment). Le nombre réel de routines qui ont été appelées en arrière plan pour vous satisfaire vous ne le connaîtrais jamais…. Bref… Il y a des APIs simples d’utilisation et y en a d’autres qui sont plus compliquées, c’est comme pour la pizza, tu peux commander en étant assis avec des agents souriant et un accueil impeccable (ça c’est l’API simple) ou alors tu peux tomber sur un petit resto ou la chaleur est rude, tu dois patienter dans une file d’attente et pour couronner le tout le personnel est aussi stresser que toi. 🙂

C’est quoi un système GIS?

un GIS (ou SIG en français) c’est un système de traitement et de diffusion de données géographique sur une carte. Tout le monde connait Google Earth qu’on ne présente plus et bien c’est ça. Vous avez une carte de l’endroit sur lequel se basera votre système, ça peut être une ville, un département (gouvernement, district, province), un pays ou le monde.

A quoi peut il bien servir ce GIS???

Disons que c’est un système d’aide à la décision, par exemple en récoltant les adresses IP de ceux qui sont le plus actifs sur votre forum, ou alors des clients étant les plus intéréssé par tel ou tel autre produit de votre e-boutique, vous pouvez transcrire ces informations sur une carte et avoir une idée approximatif de la provenance pour par exemple faire évoluer votre produit vers le style ou les moeurs de l’endroit géographique, par exemple si vous vous rendez compte que les chinois sont trés intéréssés par votre logiciel, vous y incluerais dans les prochaines versions les langues asiatiques.

Dans la vie réelle, les objets mis sur la carte qui sont des données géographiques couplés de données descriptives, graphiques et de métadonnées permettent parfois de sauver des vie, je pense en premier lieu aux études épidémiologique ayant un facteur géospatiale et permettant de suivre l’évolution géographique…

Pour terminer il faut préciser qu’un GIS doit permettre l’Acquisition ou Numérisation des cartes, certains systèmes utilise la ou il le territoire d’étude n’est pas numérisé, les cartes de Google ou de la NASA ce qui permet de ne jamais bloqué.

L’archivage des informations de la base, L’historique permet de revenir sur les moments ou l’opérateur n’est pas devant sa machine, certaines solution de géolocalisation des transporteurs permette de calculer la distance parcouru pour la planification de la consommation d’essence.

L’utilisation et l’affichage de ce ces données via des requêtes. En analogie avec le logiciel de traitement graphique Photoshop, un GIS est composé des couches / layers, chaque couches est trés importante et doit regrouper une ensemble d’objets (par exemple les arbres, les bâtiments administratifs, les écoles, les lacs, les vélos, les bateaux  etc etc) ce qui permettrait par exemple dans notre système GIS d’afficher par exemple les transporteurs CAMIONS ou les transporteurs VOITURES et voir leur répartition sur la carte, si un client à besoin d’un transporteur, il suffit de consulter le système GIS pour qu’il nous informe sur le transporteur le plus proche, Dans une étude d’épidémiologie, chaque maladie formera une couche permettant d’un coté d’avoir l’évolution séparé de chacune d’entre elle, et d’autre part d’analyser les coorélations entre elles (des stats! des stats! et beaucoup d’aspirines).

Notre projet?

En nous basant sur les 3 définitions nous allons donc utiliser une API qui permettra de transcrire une adresse IP en donnée GML qui est un standard dérivé de l’XML qui permet d’encoder les données selon un schéma XML prédéfini

Voici un exemple de donnée GML

<HostipLookupResultSet version= »1.0.1″ xsi:noNamespaceSchemaLocation= »http://www.hostip.info/api/hostip-1.0.1.xsd »&gt; <gml:description>This is the Hostip Lookup Service</gml:description>
<gml:name>hostip</gml:name>
<gml:boundedBy>
<gml:Null>inapplicable</gml:Null></gml:boundedBy>
<gml:featureMember>
<Hostip>
<ip>12.215.42.19</ip>
<gml:name>Aurora, TX</gml:name>
<countryName>UNITED STATES</countryName>
<countryAbbrev>US</countryAbbrev><!– Co-ordinates are available as lng,lat –>
<ipLocation>
<gml:pointProperty>
<gml:Point srsName= »http://www.opengis.net/gml/srs/epsg.xml#4326″><gml:coordinates>-97.5159,33.0582</gml:coordinates&gt;
</gml:Point>
</gml:pointProperty>
</ipLocation>
</Hostip>
</gml:featureMember>
</HostipLookupResultSet>

Nous le verrons dans la partie codage, ce fichier permet de dire que l’adresse IP 12.215.42.19 est aux USA (Code: US)dans la ville de Aurora avec les coordonnées géographique -97.5159 de longitude et 33.0582 de latitude.

C’est tout pour cette partie, dans la prochaine session nous apprendrons à utiliser cet API en codant la page de A jusqu’à Z (tout sera compris oui oui! HTML, CSS3, PHP, POO et accès au fichier XML

A suivre ici

Advertisements

1 commentaire

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s