Rechercher des adresses dans Open Street Map

Un étudiant suisse m'a demandé de l'orienter dans sa recherche pour trouver des adresses dans Open Street Map.  Il avait chargé avec succès un fichier de données sources de la Suisse dans sa base de données Postgresql mais avait de la difficulté à trouver les adresses.

On ne trouve pas énormément d'adresses dans OSM car c'est une information très coûteuse à colliger, mais il y en a un peu.   Si vous utilisez l'utilitaire d'importation imposm,  pas de chance, les adresses ne sont pas récupérées par défaut.  Je n'ai jamais essayé, mais il faudrait probablement modifier le script python de paramétrage d'importation defaultmapping.py.   Ne vous en faire pas si vous trouvez la chose un peu compliquée à priori!  Ça l'est réellement et demande du temps pour assimiler l'ensemble des technicalités OSM!

Si vous utilisez l'utilitaire osm2pgsql, vous pouvez récupérer des adresses dans les buildings et les amenities, à condition d'avoir activé l'extension Hstore dans votre base de données, sans oublier de spécifier l'option --hstore dans votre ligne de commande osm2pgsql.  Cette option permet de charger dans la base de données tous les tags et pas seulement ceux spécifiés dans le fichier de style.  Comme j''aime avoir accès à TOUTES la base de données OSM, j'utilise toujours l'option --hstore.  J'ai regardé dans quelques villes en Suisse (dont Lausanne) et effectivement plusieurs bâtiments ont des adresses. Une fois les données chargées avec osm2pgsql et --hstore, voici le genre de requêtes SQL possibles

SELECT osm_id, name, building, shop, amenity,
     tags -> 'tourism'::text AS tourism,
     tags->'denomination' as denomination,
     tags->'religion' as religion,
     tags->'cuisine' as cuisine,
     CAST(tags->'addr:housenumber' as text)||' '||CAST(tags->'addr:street' as text) as address,
     tags->'addr:postcode' as postcode,
     tags->'addr:city' as city,
     tags->'building:levels' as building_levels,
     CASE WHEN ST_IsValid(way) = 'f' THEN           
ST_Buffer(ST_MakeValid(way),0) ELSE way END AS geometry
FROM osm_polygon
WHERE building IS NOT NULL;
Et dans la classe des amenities:
SELECT osm_id, name, amenity, '' as building, shop,
     tags -> 'tourism'::text AS tourism,
     tags->'denomination' as denomination,
     tags->'religion' as religion,
     tags->'cuisine' as cuisine,
     CAST(tags->'addr:housenumber' as text)||' '||CAST(tags->'addr:street' as text) as address,
     tags->'addr:postcode' as postcode,
     tags->'addr:city' as city,
     tags->'building:levels' as building_levels
FROM osm_point
WHERE amenity is not null
OR shop is not null ;
L'autre solution serait d'utiliser l'API Nominatim. Je n'ai pas encore fait d'essais sérieux avec ce service, ici au Canada, ce n'est pas fameux parce que le base de données OSM n'est pas assez complète  Pour terminer il y a aussi le projet OSRM qui pourrait aider à trouver une méthode d'extraction d'adresses.

Données ouvertes et cartographie Web

Voici donc un lien sur ma conférence à Vision Géomatique 2012:  données ouvertes et cartographie Web.  Vous pouvez accéder aux applications présentées via un lien ajouté sous le vidéo.  J'en profite également pour ajouter le lien de la présentation du conférencier qui me suivait, Nicolas Delffon.   Sa conférence, "La Datavisualisation ou l'art de présenter les données" est une suite logique de ma conférence.  Je vous invite à regarder les liens pertinents à la fin de sa présentation, si le sujet de "dataviz" vous intéresse.

Les 300 conférenciers qui ont assités à Vision Géomatique 2012 ont eu droit à un excellent colloque.  La série de conférences sur l'Open source organisées par OSGeo-qc a été une réussite sur toute la ligne et a attirée beaucoup de gens de différents milieux liés à la géomatique, comme on le souhaitait.

L’échec d’Apple Maps

On avait bien hâte de la voir cette nouvelle Apple Maps.  Étant moi-même maniaque de cartographie Web, j'étais impatient de voir le résultat.  Les aperçus qu'on nous avait servis étaient prometteurs et j'espérais avoir un produit épuré, basé sur des données Open Street Map complété intelligemment avec d'autres sources de données.

L'appréciation générale de la nouvelle application de cartographie semble catastrophique. Selon Snappli (qui se spécialise dans la compression de données pour appareils mobiles), il ne resterait que 4% d'utilisateurs de Apple Maps. J'ai donc fait quelques petites validations dans la région de Québec.

La liste bien garnie de fournisseurs de données fut donc ma première surprise.  Règle générale au Québec, TomTom est le fournisseur officiel pour le réseau routier.  Pas vraiment surprenant, car pour la fonction de navigation routière ("turn-by-turn") il fallait obligatoirement utiliser TomTom.  Pour le reste on ne retrouve absolument rien de Open Street Maps pour les informations de contexte dans la carte!

Le principe fondamental "homogénéité" des données est pourtant élémentaire en cartographie.  L'utilisation de couches généralisées (hydrographie, boisée, etc) sans niveau de précision suffisant à cette échelle est une erreur de débutant, pour ne pas dire inacceptable!  La rivière Chaudière n'aboutit même pas jusqu'au fleuve, puisqu'on devrait gérer le réseau hydrique filamentaire à cette échelle.   Avec un peu de déception, je n'ai même pas poussé plus loin l'analyse, je vous laisse le soin de vous amuser les nombreux exemples d'erreurs répertoriées sur ce site qui deviennent pour le moins gênants pour le géant Apple.  Forcé d'admettre l'échec lamentable, c'est sans surprise que Tim Cook lui-même a du fournir des excuses aux utilisateurs iOS 6!

Apple a été tenté par des fonctionnalités sexy comme la navigation "turn-by-turn", le 3D, la reconnaissance vocale Siri, etc.   Mais on a oublié de se concentrer sur la base: une belle carte pratique à utiliser et pertinente!  La compagnie TomTom n'a pas été à la hauteur pour fournir ce dont Apple avait besoin.  Ils font de bons appareils de navigation automobile, mais TomTom n'a pas ce qu'il faut pour produire une cartographie Web de qualité pour les appareils mobiles.   De mon avis personnel, l'esthétique de la cartographie Web de TomTom dans la région de Québec est loin du minimum requis qu'une carte doit avoir de nos jours.  Je vous laisse le soin de voir vous-mêmes.

Investissements du Québec en santé

english version follow...
Nous avons réalisé dernièrement une nouvelle application de visualisation de données sur les "Investissements du Québec en santé".  Nous avons trouvé l'application vraiment "cool" alors on a décidé de la diffuser durant la présente campagne électorale 2012 parce qu'il est intéressant de pouvoir visualiser la taille de ces investissements.
Pour cette application, nous avons utilisé l'information publique du "Ministère de la Santé et des Services sociaux" diffusée via le site de données ouvertes du gouvernement du Québec, et des outils Web de visualisation de données pour mettre en relief le poids des investissements en santé versus la population et le budget total de la province de Québec.
Pour réaliser cette application, nous avons utilisé la librairie d3.js, Leaflet, puis Mapserver pour tuiler ( Mapcache ) et diffuser notre carte.
------------------------------
We recently launched our new data vizualisation application "Investissement du Québec en santé".  We find it cool so we decided to publish it.  It's interesting to visualize the size of these investments in this Quebec election campaign.
For this Web application, we used public data from the Government of Quebec Opendata Web site. We used data from "Ministery of Health and Social Services" and data visualization tools to highlight the amount of investments in health versus population of Quebec and the total budget of the province of Quebec.
To build this application, we used d3.jsLeaflet, and we used Mapserver to tiled (Mapcache) and served our map.

Greenhouse Gas Emissions Hexagbin Heatmap from MapBox to CartoDB

Version Française

In my last post (Données ouvertes et les émissions de Gaz à effet de serre au Canada) I explained how I convert a CSV data file (from opendata.gc.ca) on greenhouse gases emissions in Canada to build a map. So I produced a tiled map of this project with TileMill deployed on my own server with Wax API.  You can try it now !

I tried to show two things 1) the density of facilities producing those emissions 2) the distribution of GHG emissions in Canada. of course I could used a "Heatmap" to show the density of those value.  But, I tried to produce this density map using a hexagonal grid.

The idea of ​​presenting the amount of GHGs produced in Canada in a points clustered grid came wit this example (Point Clustering) made ​​by the CartoDB developers. More recently, @elcep also proposed a similar approach in his blog. This concept was perfect to illustrate the distribution of greenhouse gases in a 300km x 300km virtual grid.  I builded my layer with this SQL in PostGIS:

SELECT max(install_ges_p.gid) AS gid, sum(install_ges_p.emis_ges) AS gazemis,     st_snaptogrid(install_ges_p.the_geom, 0::double precision, 0::double precision, 300000::double precision, 300000::double precision) AS the_geom_gr FROM install_ges_p GROUP BY st_snaptogrid(install_ges_p.the_geom, 0::double precision, 0::double precision, 300000::double precision, 300000::double precision); I loaded the data from my local "PostgreSQL / PostGIS" into my CartoDB account.  This tool is cool because it's faster to deploy and doesn't require a tiled map production as everything is dynamic.  All we must do is load the table and carto style into your CartoDB account.
@opac_grid:0.1;
@color_gris: #4F1891;
@opac_marker:0.3;
#gridemisgestot[gazemi_nb>0][zoom>=3]{
 marker-fill:@color_gris;
 marker-opacity:@opac_grid;
 marker-line-color:@color_gris;
 marker-line-opacity:@opac_marker;
 marker-allow-overlap:true;
 text-name:"[gazemis]";
 text-face-name:"DejaVu Sans Book";
 text-allow-overlap:true;
 text-halo-radius:1.5;
 text-halo-fill:rgba(255,255,255,0.50);
 text-placement:point;
 [zoom=3]{marker-width:7.5;text-size:4;}
 [zoom=4]{marker-width:15;text-size:9;}
 [zoom=5]{marker-width:30;text-size:18;}
 [zoom=6]{marker-width:60;text-size:36;}
 [zoom=7]{marker-width:120;text-size:36;}
}
Then you can 1) use this API

2) or use the small 'embed_map' provided by CartoDB layer by layer.

https://smercier.cartodb.com/tables/hex_gazemis_cnt/embed_map?sql=SELECT * FROM hex_gazemis_cnt' width='100%' height='480'

Données ouvertes et les émissions de Gaz à effet de serre au Canada

#cop17 ça vous dit quelque chose?  On dénombre pas moins de 60 000 tweets contenant cette mention depuis une trentaine de jours  sur twitter!  Je ne ferai pas ici de la petite propagande climatologique rassurez-vous, par contre c'était bien assez pour piquer ma curiosité ! Trouvant le sujet de cette conférence sur le changement climatique plutôt intéressant d'un point de vue professionnel et personnel, j'ai donc fouillé un peu le sujet pour visualiser la production de  Gaz à effet de serre (GES) au Canada.

En 2008 selon "The World Ressource Institute", le Canada se situait au 8e rang dans l'échelle des plus grands émetteurs de GES avec 561 MtCO2e soit 1.87 % de la production mondiale totale (toutes sources GES confondues).  Globalement c'est peu mais certains diront que c'est déjà trop alors pour voir plus précisément comment se distribuait la production de dioxyde de carbone au Canada j'ai fait quelques recherches sur le Portail de données ouvertes du gouvernement du Canada.  Ce site regorge de données et il suffit de se donner la peine de chercher un peu pour trouver tout plein de données à référence spatiale.  J'ai trouvé des données et une application de cartographie interactive assez rapidement en recherchant le mot clé "Gaz".

Avec ces données téléchargées (format CSV) sur le site d'Environnement Canada, ce que je voulais faire était assez simple: localiser un peu mieux sur une carte la production des GES au Canada.  J'ai géoréférencé les 578 installations émettrices de GES recensées au Canada dans QGis et j'ai ensuite créé des buffers autour des installations pour visualiser leur importance au Canada et un aussi produit grid qui pourra faciliter la représentation cartographique de ces installations.  Parce que je ne voulais faire autre chose qu'une "Heat map", après quelques tentatives,  j'arrive à quelque chose d'intéressant visuellement à l'échelle du Canada (point rouge étant une installation industrielle émettrice de GES et buffer de 100, 250 et 500 km de rayon).

 

Pour produire les valeurs permettant de créer une représentation thématique du sujet (et surtout me faciliter la vie dans mon cas) je transfère les installations et mon grid hexagonal dans Postgresql/Postgis.  J'ai fait quelques requêtes pour comptabiliser 'spatialement' les données.

1) petit nettoyage des données
update hex_emis_ges set "Emissions"='0' where "Emissions"='-99.00000000' or "Emissions" is null
update hex_emis_ges set "Emission_2"='0' where "Emission_2"='-99.00000000' or "Emission_2" is null
update hex_emis_ges set "Emissio3"='0' where "Emissio3"='-99.00000000' or "Emissio3" is null
update hex_emis_ges set emis_ge3_3=to_number("Emissions",'999999') + to_number("Emission_2",'999999')+to_number("Emissio3",'999999');
2) J'ai ensuite simplement représenté l'importance du nombre d'installations émettrices en GES en créant des tables buffers de 100, 250 et 500 km autour des installations.
create table buf500km_install_ges as select "Emissions" as emissions,ST_Buffer(install_ges_p.the_geom,500000,'quad_segs=8') as the_geom from install_ges_p;
CREATE INDEX idx_buf500km_install_ges_geom_gist ON buf500km_install_ges USING gist(the_geom);
create table buf250km_install_ges as select "Emissions" as emissions,ST_Buffer(install_ges_p.the_geom,250000,'quad_segs=8') as the_geom from install_ges_p;
CREATE INDEX idx_buf250km_install_ges_geom_gist ON buf250km_install_ges USING gist(the_geom);
create table buf100km_install_ges as select "Emissions" as emissions,ST_Buffer(install_ges_p.the_geom,100000,'quad_segs=8') as the_geom from install_ges_p;
CREATE INDEX idx_buf100km_install_ges_geom_gist ON buf100km_install_ges USING gist(the_geom);
3) Enfin, j'ai comptabilisé le nombre d'intersections des buffers sur mon grid hexagonal
CREATE TABLE hex_emis_ges_cnt_install_tt as
      select hex_emis_ges.gid, "Latitude", "Longitude" ,"Emissions","Emission_2","Emissio3",
             (select count(*) from buf500km_install_ges where ST_Intersects (buf500km_install_ges.the_geom,
                      hex_emis_ges.the_geom) = true) as nb_buf500,
             (select count(*) from buf250km_install_ges where ST_Intersects(buf250km_install_ges.the_geom,
                      hex_emis_ges.the_geom)=true) as nb_buf250,
             (select count(*) from buf100km_install_ges where ST_Intersects(buf100km_install_ges.the_geom,
                      hex_emis_ges.the_geom)=true) as nb_buf100,the_geom from hex_emis_ges;
CREATE TABLE hex_emis_ges_cnt_install as
select hex_emis_ges_cnt_install_tt.*, (nb_buf500+nb_buf250)+nb_buf100 as nb_tot_install from hex_emis_ges_cnt_install_tt;
drop table hex_emis_ges_cnt_install_tt;
CREATE INDEX idx_hex_emis_ges_cnt_install_geom_gist ON hex_emis_ges_cnt_install USING gist(the_geom);

Le résultat n'est certes pas une révolution ni parfaite et encore moins scientifique, mais l'effet visuel me semble intéressant dans QGis.  La carte montre deux choses:

  • La quantité d'émission de GES par installations industrielles recensées au Canada
  • La concentration et la répartition spatial des installations industrielles au Canada
  Je n'aimais pas vraiment le résultat alors j'ai passé le projet dans la moulinette TileMill pour produire une carte un peu plus soignée.  Il ne me restera qu'à placer la carte tuilée (MBtiles) dans une page pour présenter l'ensemble du territoire et que j'aimerais bien faire avec MapCache cette fois... Prochain billet donc à suivre!  

Autres liens:

http://cait.wri.org/cait.php?page=background&from=yearly http://www.carbon-biodiversity.net/Interactive/CarbonCalculatorNotes http://maps-cartes.ec.gc.ca/indicators-indicateurs/TableView.aspx?ID=15 http://www.protectedplanet.net/  

Free vector and raster map data at 1:10m, 1:50m, and 1:110m scales

Natural Earth is a public domain map dataset available at 1:10m, 1:50m, and 1:110m scales. Featuring tightly integrated vector and raster data, with Natural Earth you can make a variety of visually pleasing, well-crafted maps with cartography or GIS software. Natural Earth was built through a collaboration of many volunteers and is supported byNACIS (North American Cartographic Information Society), and is free for use in any type of project (see our Terms of Use page for more information).