Cartographie avec SPIP

Bruno Bergot

b_b@spip - brunob@github - bruno@eliaz.fr

 

SPIP

  • Système de Publication pour l’Internet
  • fonctionnement collectif
  • multilinguisme
  • distribué sous la licence GNU/GPL
  • né en 2001, utilisé par plus de 40 000 sites

http://www.spip.net/

 

GIS

  • un plugin pour SPIP
  • développé sur l'espace collaboratif (la zone)
    • à ce jour, 725 commits sur le projet
    • effectués par plus de 40 personnes
  • distribué sous la licence GNU/GPL
  • né en 2007, utilisé sur environ 2 700 sites

http://plugins.spip.net/gis.html

Historique

GIS 1.0 (2007)

  • développé par Berio et Horacio du projet escoitar.org
  • maintenu par b_b et kent1
  • utilise l'API Google Maps v2 ou OpenLayers
  • permet de géolocaliser les articles de SPIP
  • superposition de fichiers KML
  • geocoding + reverse geocoding

http://contrib.spip.net/Plugin-Gis-escoitar

GIS 2.0 et 3.0 (2011)

  • développé par b_b et kent1
  • utilise l'API Mapstraction
  • permet de géolocaliser tous les objets de SPIP
  • chaque point dispose d'un titre, un descriptif et un logo personnalisable
  • un point peut être lié à plusieurs objets

http://contrib.spip.net/GIS-2-GIS-3

GIS 4.0 (2012)

  • développé par b_b et kent1
  • utilise l'API Leaflet
  • encore plus modulaire : utilisation de librairies externes
  • ne nécessite plus de scripts externes
  • plus de 25 fonds de carte différents (la plupart basés sur les données OSM)
  • le geocoder utilise Nominatim
  • superposition de fichiers GPX et GeoJSON
  • nouvelles fonctionnalités : clustering, plein écran, etc.

http://contrib.spip.net/GIS-4

Et comme très souvent chez SPIP...
la compatibilité ascendante est assurée :)

Pour les rédacteurs

Localisation des objets depuis l'interface privé de SPIP

Pour chaque objet, on peut :

  • gérer la liste des points liés à l'objet en cours
  • rechercher un point existant pour le lier à l'objet
  • créer un nouveau point et le lier à l'objet

Insérer une carte dans le texte d'une page :

Voir la liste des paramètres du modèle

Pour les développeurs

Insérer une carte dans un squelette :


[(#INCLURE{fond=modeles/carte_gis,
	zoom=8,
	limit=100,
	scale=oui})]
					

Autre exemple :


[(#INCLURE{fond=modeles/carte_gis,
	objets=articles,
	id_rubrique=2,
	zoom=7,
	lat=48.21437896,
	lon=-4.54370498,
	kml=2})]
					
  • afficher les articles
  • de la rubrique n°2
  • définir le zoom de la carte à 7
  • centrer la carte sur les coordonnées 48.21437896 / -4.54370498
  • superposer le KML correspondant au document n°2

Boucles et balises

Dans une boucle GIS :

  • on peut utiliser les balises :
    #ID_GIS #TITRE #DESCRIPTIF #LAT #LON #ZOOM
  • si le geocoder est actif :
    #ADRESSE, #PAYS, #CODE_PAYS, #REGION, #VILLE, #CODE_POSTAL
  • et des critères :
    {gis} {gis distance} {distancefrom}

Un peu de technique ?

Performances & maintenabilité

  • les scripts nécessaires ne sont appelés que lorsqu'une carte est présente dans la page (source)
  • la plupart des fonctionnalités reposent sur des librairies externes
  • le plugin utilise L.Map.Gis qui étend L.Map de Leaflet

Les points c'est bien, mais il n'y a pas que ça dans la vie...

GIS Geometries

  • une extension du plugin GIS
  • ajoute la possibilité d’afficher et d’éditer des formes géométriques (polyline, polygon)
  • création d'objets par tracé ou par import de fichiers (GPX/KML)
  • utilise les librairies Leaflet Draw et geoPHP

Compatible MySQL 4.1 mini, pas de support SQLite pour l'instant.

Enrichit le formulaire d'édition de GIS.

Ajoute la possibilité de télécharger les objets
au format GPX/KML.

Exemples d'utilisation

Des questions ?

Merci :)