6
Filtrer les clés d'une archive OSM
Qgis, Osm
16 sept 2016

Dans cette note j'expliquais comme on peut réduire à une zone un fichier OSM. De même il est souvent utile de réduire ce fichier aux clés qui nous intéressent uniquement. Pour ce faire, on a le programme osmfilter.

C'est un exécutable qui s'utilise de la même manière que osmconvert, via l'invité de commande en plaçant le programme et le fichier OSM dans le même dossier.

Pour sélectionner les clés OSM, vous pouvez consultez la liste des contenus OpenStreetMaps avec leur nom. Dans mon cas je veux extraire uniquement les villages et hameaux, soit les entrées place:village et place:hamlet. La commande pour mon fichier OSM pour le Luberon sera :

osmfilter luberon.osm --keep="place=village place=hamlet" -o=luberon_village_hamlet.osm

On peut utiliser un astérisque pour pour prendre toute les valeurs d'une clé. Pour toutes les place par exemple on écrira -keep="place=*".

Une fonction autre utile de ce programme permet de lister les clés présentes sur un fichier avec leur quantité. On utilisera la commande suivante :

osmfilter luberon.osm --out-count

On peut également regarder à l'intérieur d'une clé, ici place

osmfilter luberon.osm --out-count=place

Pour ceux qui utilisent l'invité de commande natif de Windows, vous serez peut-être embettez par les très longues listes de clés si vous appliquez la fonction à un fichier OSM complet. La barre de défilement va être bloquée à un certain niveau. Pour visualiser la totalité de la liste, vous devrez utiliser un autre invité de commande, comme ComEmu.

5
Importer des données OSM dans QGIS
Osm, Qgis
9 sept 2016

QGIS s'utilise très bien avec OpenStreetMaps mais pour importer ses données OSM dans QGIS, ce n'est pas aussi direct qu'on pourrait le penser.

La première étape consiste à se procurer des données OSM brutes, via les extraits Geofabrik. L'extension qui nous intéresse est .osm.pbf. Choissez la zone la plus réduite possible selon vos besoins. Les fichiers sont lourds et on a tout à gagner à travailler avec des zones resserrées. Pour affiner son fichier, on peut encore réduire à un cadre géographique précis ou filtrer les clés qui nous intéressent.

En utilisant osmconvert on convertit l'archive OSM .osm.pbf en .osm (décompressé) via la commande suivante :

osmconvert alsace-latest.osm.pbf -o=alsace-latest.osm

Pour importer ce fichier dans QGIS, on va dans Vecteur > OpenStreetMaps > Importer la topologie depuis un XML. Sélectionnez votre fichier .osm et faites OK, puis Fermer. Cette opération créera une base de donnée lisible par QGIS de votre fichier sous l'extension .osm.db.

Pour afficher cette base de donnée sur votre carte, cherchez Vecteur > OpenStreetMaps > Exporter la topologie OSM vers Spatialite. Sélectionnez le fichier .osm.db, cliquez sur Charger depuis une base pour afficher les étiquettes disponibles. Faites votre choix, séléctionnez un type d'export et cliquez sur OK.

Si vous avez des difficultés avec la projection, sachez qu'OpenStreetMaps utilise Pseudo-Mercator, code EPSG:3857.

4
Extraire une zone géographique d'une archive OSM
Qgis, Osm
7 sept 2016

Les extraits Geofrabrik en format .osm.pbf quoique disponibles selon plusieurs découpages administratifs sont généralements très lourds. Il est alors utile de réduire ce fichier à la zone qui vous intéresse. Pour ce faire, on peut utiliser osmconvert.

On commence par noter les coordonnées de la zone qui nous intéresse. Dans mon cas la vallée du Luberon : 43.79, 5.03 (coin sud-ouest, Orgon) à 43.98, 5.56 (coin nord-est, Simiane-la-Rotonde).

On télécharge osmconvert et on met l'éxecutable dans un dossier de travail avec l'archive OSM, dans mon cas france-latest.osm.pbf. Les applications osmconvert et osmfilter s'utilisent dans la console. On utilisera la commande suivante :

osmconvert france-latest.osm.pbf -b=5.03,43.79,5.56,43.98 -o=luberon.osm

Il faut inverser latitude et longitude et placer les coordonnées dans l'ordre sud-ouest puis nord-est après -b.

3
SVG en-ligne comme fond d'un élément avec CSS3 et Javascript
Web, Javascript
16 août 2016

Depuis CSS3 on peut définir une image SVG comme fond d'un élément sans URL, en passant directement l'encodage de l'image. On peut ainsi éviter de charger un fichier externe.

div {
  width: 50vw;
  height: 50vh;
  background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNCIgaGVpZ2h0PSI2IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik0wIDMgTDMgMCBMNCAxIEwyIDMgTDQgNSBMMyA2IFoiIGZpbGw9InJnYmEoMjAwLDIwMCwyMDAsMC43NSkiLz48L3N2Zz4=");
  background-repeat: no-repeat;
  background-position: center;
  background-size: contain;
}

L'image SVG est encodée en base64 pour l'insérer en ligne directement dans le CSS. Des outils tel que celui-ci permettent cet encodage.

On peut aussi utiliser Javascript pour cela à l'intérieur d'un script. A ce moment là on peut même éviter d'avoir un fichier CSS.

Ici, par exemple, la même image en SVG HTML5 que j'encode et assigne avec Javascript.

var svgMarkup = "<svg width="4" height="6" xmlns="http://www.w3.org/2000/svg"><path d="M0 3 L3 0 L4 1 L2 3 L4 5 L3 6 Z" fill="rgba(200,200,200,0.75)"/></svg>";

var svg64 = window.btoa(svgMarkup);

document.querySelector("div").style.backgroundImage = "url('data:image/svg+xml;base64,"+svg64+"')";
2
Boucle avec arrêt sur pression du bouton Échap avec pyRhino
Python, Rhino3D
19 mai 2016

La bonne astuce pour éviter de bloquer Rhino avec une fonction infinie ou boguée.

import scriptcontext as sc

i = 0
while not sc.escape_test(False):
    print i
    i+=1
1
Assigner à script pyRhino à un bouton dans l'interface de Rhino
Rhino3D, Python
4 oct 2014

Clic droit sur la barre horizontale sous les onglets : « nouveau bouton ».

Insérer le code Python dans la case commande pour le clic droit ou gauche. Le code doit être inséré dans une macro comme suit :

! _NoEcho -_RunPythonScript (

#insert Python code here

)

On peut ajouter un icône pour personnaliser le botuon, par défaut on a droit à un émoticône sourillant.