choco1984 | Bonjour,
je travaille sur de la cartographie en ligne, je dispose de deux tables sql
l'une est une matrice raster d'environ 40.000 enregistrements qui est lié a une table avec les 150 communes. le champs qui permet de lier les deux table est un numéro de commune.
par exemple un pixel a une paire de coordonnée (x,y) et un code de la commune qu'il occupe. dans la table commune j'ai la liste des communes (avec leur code) et un ensemble de variables telles que la population, la surface de foret ...
je veux coloré chaque pixel de la matrice en fonction de la variable situé dans la table commune.
Code :
- //la requête SQL qui va cherche la position du pixel et la commune
- $sql = 'SELECT * FROM raster';
- $req = mysql_query($sql);
- while($data = mysql_fetch_assoc($req))
- {
- $insee = $data['CODE'];
- $sql2 = 'SELECT VAR1 FROM lieux WHERE ID ='.$insee;
- $req2 = mysql_query($sql2);
- $donnee = mysql_fetch_assoc($req2);
- if ($donnee < $long_classe)
- {
- $couleurtour = ImageColorAllocate ($im2, 255, 175, 175);
- ImageSetPixel ($im2, $data['XPOS']*2, $data['YPOS']*2, $couleurtour);
- ImageSetPixel ($im2, $data['XPOS']*2+1, $data['YPOS']*2, $couleurtour);
- ImageSetPixel ($im2, $data['XPOS']*2, $data['YPOS']*2+1, $couleurtour);
- ImageSetPixel ($im2, $data['XPOS']*2+1, $data['YPOS']*2+1, $couleurtour);
- }
- if ($donnee > $long_classe)
- {
- $couleurtour = ImageColorAllocate ($im2, 255, 100, 100);
- ImageSetPixel ($im2, $data['XPOS']*2, $data['YPOS']*2, $couleurtour);
- ImageSetPixel ($im2, $data['XPOS']*2+1, $data['YPOS']*2, $couleurtour);
- ImageSetPixel ($im2, $data['XPOS']*2, $data['YPOS']*2+1, $couleurtour);
- ImageSetPixel ($im2, $data['XPOS']*2+1, $data['YPOS']*2+1, $couleurtour);
- }
- }
|
explication : dans la table raster
[CODE] = code commune du pixel
[XPOS] = cordonnee x du pixel
[YPOS] = cordonnee y du pixel
dans la table lieux
[ID] = code commune
[VAR1] = population
variables :
$long_classe = borne arbitraire pour séparer la série population
enfin le problème c'est que tous les enregistrements population sont considérés comme =0 lors de la génération de l'image. j'ai alors une belle carte toute rose alors que je devrais avoir quelques communes rouges
si ça vous interresse voila le lien de mon image
http://lesgitesdumarduel.com/graph/raster.php
|