Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- // Connexion à la base de données "cours7" se trouvant sur le serveur localhost. Nous nous y connectons avec l'identifiant "postgres", et nous entrons le mot de passe que nous avons créé au moment de l'initialisation de la BD PostgreSQL
- $db = new PDO("pgsql:host=localhost; dbname=gmq717", "postgres", "gmq717");
- // Nous créons une requête SQL à partir des variables récupérées dans l'URL
- if ($_GET['var'] == 'pop') {
- // Si la variable est 'pop', alors nous ne voulons pas simplement la valeur brute de la variable, mais la densité de la population dans cette aire de diffusion : densité = pop / superficie en km2. Comme nous sommes dans un système de coordonnées géographiques, il faut projeter les coordonnées dans un système qui respecte bien les superficies localement : https://mern.gouv.qc.ca/wp-content/uploads/CO_codes_epsg_quebec.pdf
- $sql = 'SELECT pop / (ST_AREA(ST_TRANSFORM(geom, 32098)) / 1000000.0) as var, da_number, ST_AsGeoJSON(geom, 6) as geom FROM "montreal_postgis" WHERE ' . $_GET['var'] . ' > ' . $_GET['varMin'] . ' AND ' . $_GET['var'] . ' < ' . $_GET['varMax'] . ';';
- } else {
- // Si la variable n'est pas 'pop', fournir la valeur brute.
- $sql = 'SELECT ' . $_GET['var'] . '::INTEGER as var, da_number, ST_AsGeoJSON(geom, 6) as geom FROM "montreal_postgis" WHERE ' . $_GET['var'] . ' > ' . $_GET['varMin'] . ' AND ' . $_GET['var'] . ' < ' . $_GET['varMax'] . ';';
- }
- // Construire la requête sur l'objet PDO à partir du code SQL
- $query = $db->query($sql);
- // Création d'une liste vide qui contiendra les entités spatiales
- $features = [];
- // Nous démarrons une boucle "while" pour passer à travers le résultat de la requête et la convertir en un objet 'feature' GeoJSON
- while ($row = $query->fetch()) {
- $geometry = $row['geom'] = json_decode($row['geom']);
- unset($row['geom']);
- // Nous retirons les résultats redondants
- unset($row[0]);
- unset($row[1]);
- unset($row[2]);
- // Nous reconstituons notre 'feature' sur le modèle GeoJSON
- $feature = ['type' => 'Feature', 'geometry' => $geometry, 'properties' => $row];
- array_push($features, $feature);
- };
- // Nous imbriquons nos entités dans une collection d'entités GeoJSON
- $featureCollection = ["type" => "FeatureCollection", "features" => $features];
- echo stripslashes(json_encode($featureCollection));
- ?>
Add Comment
Please, Sign In to add comment