Accueil > > > CARTE DE L'EUROPE EN FONCTION DES VISITEURS
CARTE DE L'EUROPE EN FONCTION DES VISITEURS
Information sur la source
Description
Couplée avec un petit script de géolocalisation (IP-2-Country), cette source colore les pays européens en fonction du nombre de visites qu'ils vous fournissent. C'est à la base une reprise de l'idée de la source de yoman64 ("GÉOLOCALISATION DE VOS VISITEURS"); le problème est que pour de grand pays, c'est dommage d'afficher seulement un rond au milieu du pays alors pourquoi ne pas colorer tout le pays? La réponse avec du SVG; ==> quelques soucis de compatibilité sous IE alors passez à FFox!
Source
- <?php
- function reverseColor($color)
- {
- return abs($color-255);
- }
- function rgb2html($r, $g=-1, $b=-1) //Merci à l'auteur de cette fonction
- {
- if (is_array($r) && sizeof($r) == 3)
- list($r, $g, $b) = $r;
-
- $r = intval($r); $g = intval($g);
- $b = intval($b);
-
- $r = dechex($r<0?0:($r>255?255:$r));
- $g = dechex($g<0?0:($g>255?255:$g));
- $b = dechex($b<0?0:($b>255?255:$b));
-
- $color = (strlen($r) < 2?'0':'').$r;
- $color .= (strlen($g) < 2?'0':'').$g;
- $color .= (strlen($b) < 2?'0':'').$b;
- return '#'.$color;
- }
- header("Content-type: image/svg+xml"); //On informe le navigateur que ce qui suit va être du SVG (XML)
- echo '<?xml version="1.0" encoding="UTF-8" standalone="no"?>';//Déclaration du XML
- echo "\n".'<svg xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" version="1.0" width="400.87827" height="419.87268">';//Déclaration du SVG
- echo "\n".'<defs id="defs4186" />';
- echo "\n".'<g transform="translate(-684.4075,664.3521)" id="layer1">';
- echo "\n".'<path d="" style="fill:black" id="path6995" />';
- $rapportRelatif=100;//Valeur de référence; modifiable;
- $query=mysql_query("SELECT * FROM `stats_europe_countries`"); //requête MySQL
- while($row=mysql_fetch_array($query))
- {
- //CODE DE SELECTION DU NBRE DE VISITEURS DANS VOTRE BASE DE DONNEE SELON VOTRE STRUCTURE:
- $query2=mysql_query("SELECT COUNT(*) as nbr FROM `stats` WHERE `country_code`='".$row["code_pays"]."'");
- $count=mysql_fetch_array($query2);
- $couleur=$count["nbr"]/$rapportRelatif*255; //Au lieu de chercher un pourcentage, cherchons sur une base de 255;
- $couleur = reverseColor($couleur);//Pour éviter d'avoir du noir qui tend vers le blanc: on veut du gris clair qui tend vers le noir.
- //Conversion de la couleur en HEX
- $hex=rgb2html($couleur-20,$couleur-20,$couleur);//On diminue un peu le Rouge et le Vert histoir de foncer un peu les pays dont le nbre de visites est nul; On ne diminue pas le Bleu comme ca on a une légère teinte bleue.
- echo '<path d="'.$row["coord"].'" style="fill:'.$hex.';fill-opacity:1" id="layer'.$row["id"].'" />'."\n"; //On affiche les coordonnées et la couleur du polygone
-
- }
- echo ' </g>';
- echo '</svg>';
- ?>
<?php
function reverseColor($color)
{
return abs($color-255);
}
function rgb2html($r, $g=-1, $b=-1) //Merci à l'auteur de cette fonction
{
if (is_array($r) && sizeof($r) == 3)
list($r, $g, $b) = $r;
$r = intval($r); $g = intval($g);
$b = intval($b);
$r = dechex($r<0?0:($r>255?255:$r));
$g = dechex($g<0?0:($g>255?255:$g));
$b = dechex($b<0?0:($b>255?255:$b));
$color = (strlen($r) < 2?'0':'').$r;
$color .= (strlen($g) < 2?'0':'').$g;
$color .= (strlen($b) < 2?'0':'').$b;
return '#'.$color;
}
header("Content-type: image/svg+xml"); //On informe le navigateur que ce qui suit va être du SVG (XML)
echo '<?xml version="1.0" encoding="UTF-8" standalone="no"?>';//Déclaration du XML
echo "\n".'<svg xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" version="1.0" width="400.87827" height="419.87268">';//Déclaration du SVG
echo "\n".'<defs id="defs4186" />';
echo "\n".'<g transform="translate(-684.4075,664.3521)" id="layer1">';
echo "\n".'<path d="" style="fill:black" id="path6995" />';
$rapportRelatif=100;//Valeur de référence; modifiable;
$query=mysql_query("SELECT * FROM `stats_europe_countries`"); //requête MySQL
while($row=mysql_fetch_array($query))
{
//CODE DE SELECTION DU NBRE DE VISITEURS DANS VOTRE BASE DE DONNEE SELON VOTRE STRUCTURE:
$query2=mysql_query("SELECT COUNT(*) as nbr FROM `stats` WHERE `country_code`='".$row["code_pays"]."'");
$count=mysql_fetch_array($query2);
$couleur=$count["nbr"]/$rapportRelatif*255; //Au lieu de chercher un pourcentage, cherchons sur une base de 255;
$couleur = reverseColor($couleur);//Pour éviter d'avoir du noir qui tend vers le blanc: on veut du gris clair qui tend vers le noir.
//Conversion de la couleur en HEX
$hex=rgb2html($couleur-20,$couleur-20,$couleur);//On diminue un peu le Rouge et le Vert histoir de foncer un peu les pays dont le nbre de visites est nul; On ne diminue pas le Bleu comme ca on a une légère teinte bleue.
echo '<path d="'.$row["coord"].'" style="fill:'.$hex.';fill-opacity:1" id="layer'.$row["id"].'" />'."\n"; //On affiche les coordonnées et la couleur du polygone
}
echo ' </g>';
echo '</svg>';
?>
Conclusion
Cette source est certainement moins intéressante pour elle-même que pour sa table MySQL (cf ZIP)! De nombreuses améliorations sont possibles; -coloration inspirée de la vision thermique: du vert froid au rouge chaud -carte mondiale?!?
Historique
- 01 août 2008 14:50:14 :
- petite erreur
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
xml et mysql [ par boin ]
salut,je voudrais savoir s'il est possible d'importer un fichier xml vers une base mysql?merci d'avance.B2
flash+mysql+php+xml=2 galleries d'images et je bloque [ par sniperbe ]
salut a tous,comment faire pour obtenir ceci svp ???<?xml version='1.0' encoding='ISO-8859-1' standalone='yes'?><paquay><travail photo=
problème de commandes mysql [ par juenic ]
Voila je débute en php et mysql et je voulais faire un import depuis mysql vers xml, j'ai repris ce script : <?php//Ouverture de base de données my
Pratique la couleur ;-) [ par nougitch ]
Bonjour, J'aimerai récupérer les données d'une table dans un select multiple. Voici ce que j'ai fait , je m'explique après : &l
heelp !!!!! au secours !!pdf-php-xml-mysql [ par mystere11 ]
Bonjour je suis en train de developper une platforme en php mysql et dans une rubrique je dois faire un rapport qui donne des info prise de la base
alterner une couleur avec un style? [ par pekplusultra ]
Bonjour,Je souhaiterais afficher les resultats de ma requetes avec deux couleurs differentes.par exemple, il existe un champ sexe dans ma base de donn
XML ou MySQL [ par jipe32 ]
Bonjour à tous,je conçois des sites pour des gens et je voudrais afficher de la publicité sur ceux-ci, mais sans passer par AdSense ou autre. Donc je
XML ou MySQL ?? [ par Garno ]
Salut,J'aimerais savoir s'il est plus rapide d'utilise le XML ou le MySQL pour conserver la configuration de mon site web. Comme je prévois beaucoup d
générer un fichier XML à partir de mySQL [ par Migs ]
Bonjour, je voudrais savoir s'il est possible de créer un fichier XML directement à partir de mySQL par le biais de procédures stockées. Je ne souhait
Ligne de couleur [ par forchrisw ]
je voudrais affichier a l'ecran une lign esur deux comment je peux fairevoici mon code<?include("sql.php");//Pour charger les infos de connection$c
|
Derniers Blogs
[RIA SERVICES] MAITRE - DéTAIL ET DOMAINDATASOURCE[RIA SERVICES] MAITRE - DéTAIL ET DOMAINDATASOURCE par Audrey
A l'occasion d'un projet client, j'ai utilisé RIA Services avec Silverlight 3 (mais cela fonctionne aussi avec la version 4), et je l'ai utilisé pour une interface façon Maitre / Détail. Voici comment j'ai procédé pour arriver à mes fins. Nous allons pren...
Cliquez pour lire la suite de l'article par Audrey CSDL FUNCTIONCSDL FUNCTION par Matthieu MEZIL
Dans mon post précédent , j'ai utilisé une CSDL Function afin de générer une requête SQL avec un DateDiff utilisant la date courante sur la BD à partir d'une requête LINQ. Dans le cadre de ce post , vous avez probablement remarqué que dans le cadre de plu...
Cliquez pour lire la suite de l'article par Matthieu MEZIL LINQ TO ENTITIESLINQ TO ENTITIES par Matthieu MEZIL
Cette semaine je suis à Montréal en tant que speaker sur Entity Framework pour l'évènement confoo . J'en profite pour remercier les organisateurs de cet évènement de m'avoir fait confiance et Access-IT de m'avoir permis d'y participer. En parallèle, j'ai ...
Cliquez pour lire la suite de l'article par Matthieu MEZIL FAIRE APPARAITRE L'ONGLET 'DéVELOPPEUR' DANS OFFICE 2010FAIRE APPARAITRE L'ONGLET 'DéVELOPPEUR' DANS OFFICE 2010 par neodante
La nouvelle interface d'Office 2010 à amener quelques modifications par rapport à celle de 2007. Certes mineures, ces modifications ont fait disparaître la case à cocher de l'onglet 'Développeur' en première page du panneau du 'bouton Office' (dans Office...
Cliquez pour lire la suite de l'article par neodante [ASTUCE] PATCH POUR MICROSOFT FORUMS NNTP BRIDGE V1[ASTUCE] PATCH POUR MICROSOFT FORUMS NNTP BRIDGE V1 par pierre
Si vous avez téléchargé comme moi Microsoft Forums NNTP Bridge V1 avant le 11 mars 2010 (voir [Astuce] Disponibilité de Microsoft Forum NNTP Bridge Version 1.0), un problème de date localisée pour les non anglais était présent. Un patch est disponibl...
Cliquez pour lire la suite de l'article par pierre
Logiciels
Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods Konvertor (4.00)KONVERTOR (4.00)Le logiciel est un gestionnaire multimedia affichant, jouant et convertissant plus de 2000 format... Cliquez pour télécharger Konvertor
|