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.