This wiki is the archive of the Make Open Data camps and hackathons that the Opendata.ch community has run since 2011. Current events and projects are on opendata.ch, questions go to the forum.

Ma commune peut elle vivre en autonomie électrique ? Le potentiel de production solaire photovoltaique en rapport à la consommation électrique

Méthodologies, hypothèses et sources

A - Consommation électrique des ménages par commune

La consommation de la grande industrie doit etre sortie des consommations. Dans le cadre de l'atelier, le choix a été fait de ne reporter que la consommation des ménages.

1 - Consommation électrique totale des ménages sur l'ensemble du canton : 1 TWh –> 3'200 kWh/habitants (source : Canton du valais). La consommation réelle par commune ne peut etre obtenue qu'auprès des distributeurs, mais ces données ne sont pas ouvertes.

2 - Nombre d'habitants par communes (source : office cantonal de la statistique https://www.vs.ch/web/guest/redirectpage?MenuID=16556&Language=fr)

3 - En multipliant (2) par (3), la consommation électrique de la commune est évaluée.

4 (optionnel) - Le marquage de l'électricité par distribeur permet de reporter l'approvisionnement de la commune (hydro, nucléaire, importation, mixte européen, PV,…). Les distributeurs communaux et leurs marquage est disponible sous https://www.strom.ch/de/service/stromkennzeichnung.

B - Productions potentielles de PV par commune

1 - Listes des communes par NPA (source : http://www2.unil.ch/eatlasvs/wp/)

2 - Nombre de batiments par commune (source : http://www2.unil.ch/eatlasvs/wp/)

3 - Surface de toiture potentielles par batiment - Hypothèse : surface de toiture de 50m2 par batiment. Doit etre affiné en important les données réelles, par exemple depuis le RegBL

4 - Production annuelle par m2 de panneau - Hypothèse : production anuelle de 160 kWh/m2. Doit etre affiné en important les production effectives, en tenant compte de l'ensoleilement et de la topologie du lieu, par exeple depuis PV GIS https://joint-research-centre.ec.europa.eu/photovoltaic-geographical-information-system-pvgis_en

5 - En multipliant (2) par (3) par (4), déduction du potentiel de production communal

  • List and link your actual and ideal data sources.

Index.html :

<html>
<script type="text/javascript">
	var map,popup;
   function init() {
      map = new GeoAdmin.Map("mymap", {doZoomToMaxExtent: true});
      map.switchComplementaryLayer('ch.swisstopo.pixelkarte-farbe',{opacity: 100});
      // Ajout du layer pour voir les communes
      map.addLayerByName("ch.swisstopo.swissboundaries3d-gemeinde-flaeche.fill");
      // Ajout du layer pour voir les limites du canton
      map.addLayerByName("ch.swisstopo.swissboundaries3d-kanton-flaeche.fill");
      map.zoomToExtent(new OpenLayers.Bounds(543550,88800,680850,139600));
 
    // Dessiner un cercle
    var vector = new OpenLayers.Layer.Vector("Locations", {
        styleMap: new OpenLayers.StyleMap({
            "default": new OpenLayers.Style({
                pointRadius: "20",
                fillColor: "#FF0000",
                fillOpacity: 0.8,
                strokeColor: "#FF8000",
                strokeOpacity: 0.8,
                strokeWidth: 2
            }),
            "hover": OpenLayers.Util.applyDefaults({
                pointRadius: "10",
                fillColor: 'red',
                fillOpacity: 1.0,
                strokeColor: 'black',
                strokeOpacity: 1.0
            }, OpenLayers.Feature.Vector.style.temporary)
        })
    });
 
    // Dessiner un cercle sur Martigny
    var feature1 = new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(572494, 107137), {
        attributes: {text: 'example 1'}
    });
    // Dessiner un cercle sur Sion
    var feature2 = new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(596118, 123452), {
        attributes: {text: 'example 2'}
    });
 
    // Add features
    vector.addFeatures([feature1, feature2]);
 
    map.addLayers([vector]);
 
    // Attach a control on the feature to display the popup on hover
    var hover = new OpenLayers.Control.SelectFeature(vector, {
        renderIntent: 'hover',
        hover: true,
        highlightOnly: true,
        eventListeners: {
            featurehighlighted: function(data) {
                popup = new OpenLayers.Popup.FramedCloud("preview",
                    new OpenLayers.LonLat(data.feature.geometry.x, data.feature.geometry.y),
                    new OpenLayers.Size(40,20),
                    "<p>" + data.feature.attributes.attributes.text + "</p>",
                    null,
                    false
                    );
                map.addPopup(popup);
            },
            featureunhighlighted: function() {
                map.removePopup(popup);
            }
        }
    });
 
    // Add the control to the map
    map.addControls([hover]);
 
    hover.activate();
     }
</script>
<body onload="init();">
   <div id="mymap" style="width:100%;height:100%;border:1px solid grey;padding: 0 0 0 0;margin:10px !important;"></div>
   <script type="text/javascript" src="https://api.geo.admin.ch/loader.js?mode=light"></script>
</body>
</html>

GetCentroid.html

<html>
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
 
<script>
$(document).ready(function() {
	var url = 'http://api.geo.admin.ch/main/wsgi/swisssearch/geocoding';
 
  	// A completer par le npa de toutes les communes
  	var test = new Array();
  	test[0] = 3960;
  	test[1] = 1920;
  	test[2] = 1950;
 
  	for (var i=0;i<test.length;i++){
 
	    $.getJSON(url + '?query=' +  test[i] +'&services=postalcodes&no_geom=false', function(data) {
	    	$.each(data.results, function(key, val){
	    		var content = "NPA: " +val.nr+ "<br/>";
	    		content += "Label: " +val.label+ "<br/>";
	    		var coord = new Array();
	    		$.each(val.bbox, function(i,j){
	    				coord[i] = j;
	    		});
 
	    		// Avoir la longitude et latitude de la commune
	    		content += coord[0]+6400+" | ";
	    		content += coord[1]+6400;
	    		content += "<br/>";
	    		$('#data').append(content);
	    	});
	    }); 
	}
});
</script>
<body>
	<div id="data"></div>
</body>
</html>
  • Problèmes à regler centroid
  • Manque plus que le for each sur chaque communes
  • Grégoire Largey
  • Anthony Bernardo
  • Romain Paccolat
  • Relevant documentation …
  • Blog or forum posts …
  • Tools you used …
  • project/electronomy.txt
  • Last modified: 2026/09/26 09:16
  • by opendata.ch