Index: /applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/ToulouseConstants.java
===================================================================
--- /applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/ToulouseConstants.java	(revision 29492)
+++ /applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/ToulouseConstants.java	(revision 29493)
@@ -22,9 +22,10 @@
     
     /**
-     * Sources
+     * Sources and Refs
      */
     public static final String SOURCE_GRAND_TOULOUSE = "GrandToulouse";
     public static final String SOURCE_TOULOUSE_METROPOLE = "ToulouseMetropole";
     public static final String SOURCE_TISSEO = "Tisséo SMTC";
+    public static final String REF_TOULOUSE_METROPOLE = "ref:FR:ToulouseMetropole";
     
     /**
Index: /applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/ToulouseModule.java
===================================================================
--- /applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/ToulouseModule.java	(revision 29492)
+++ /applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/ToulouseModule.java	(revision 29493)
@@ -61,4 +61,5 @@
 import org.openstreetmap.josm.plugins.opendata.modules.fr.toulouse.datasets.transport.PistesCyclablesHandler;
 import org.openstreetmap.josm.plugins.opendata.modules.fr.toulouse.datasets.transport.ReseauTisseoHandler;
+import org.openstreetmap.josm.plugins.opendata.modules.fr.toulouse.datasets.transport.StationsAutoPartageHandler;
 import org.openstreetmap.josm.plugins.opendata.modules.fr.toulouse.datasets.transport.TramwayStationHandler;
 import org.openstreetmap.josm.plugins.opendata.modules.fr.toulouse.datasets.transport.VeloToulouseHandler;
@@ -112,4 +113,5 @@
         handlers.add(ChantiersLineairesHandler.class);
         handlers.add(InstallationSportiveToulouseHandler.class);
+        handlers.add(StationsAutoPartageHandler.class);
     }
     
Index: /applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/transport/PMRHandler.java
===================================================================
--- /applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/transport/PMRHandler.java	(revision 29492)
+++ /applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/transport/PMRHandler.java	(revision 29493)
@@ -46,5 +46,5 @@
             n.remove("code_insee");
             n.remove("color");
-            replace(n, "id_PMR", "ref:grandtoulouse");
+            replace(n, "id_PMR", REF_TOULOUSE_METROPOLE);
         }
     }
Index: /applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/transport/StationsAutoPartageHandler.java
===================================================================
--- /applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/transport/StationsAutoPartageHandler.java	(revision 29493)
+++ /applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/transport/StationsAutoPartageHandler.java	(revision 29493)
@@ -0,0 +1,54 @@
+//    JOSM opendata plugin.
+//    Copyright (C) 2011-2012 Don-vip
+//
+//    This program is free software: you can redistribute it and/or modify
+//    it under the terms of the GNU General Public License as published by
+//    the Free Software Foundation, either version 3 of the License, or
+//    (at your option) any later version.
+//
+//    This program is distributed in the hope that it will be useful,
+//    but WITHOUT ANY WARRANTY; without even the implied warranty of
+//    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//    GNU General Public License for more details.
+//
+//    You should have received a copy of the GNU General Public License
+//    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+package org.openstreetmap.josm.plugins.opendata.modules.fr.toulouse.datasets.transport;
+
+import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.data.osm.Node;
+import org.openstreetmap.josm.plugins.opendata.modules.fr.toulouse.datasets.ToulouseDataSetHandler;
+
+public class StationsAutoPartageHandler extends ToulouseDataSetHandler {
+
+    public StationsAutoPartageHandler() {
+        super(19163, "amenity=car_sharing");
+        setName("Stations d'auto partage");
+        setCategory(CAT_TRANSPORT);
+        getCsvHandler().setCharset(ISO8859_15);
+    }
+
+    @Override
+    public boolean acceptsFilename(String filename) {
+        return acceptsCsvKmzTabFilename(filename, "Autopartage");
+    }
+
+    @Override
+    public void updateDataSet(DataSet ds) {
+        for (Node n : ds.getNodes()) {
+            n.put("amenity", "car_sharing");
+            n.remove("Lib_voie");
+            n.remove("mot_dir");
+            n.remove("No");
+            n.remove("commune");
+            n.remove("code_insee");
+            replace(n, "id_AUTO", REF_TOULOUSE_METROPOLE);
+            replace(n, "nb_places", "capacity");
+            replace(n, "arrete", "bylaw");
+            replace(n, "Societe", "operator");
+            replace(n, "annee", "start_date");
+            n.remove("photo");
+            replace(n, "obervations", "note");
+        }
+    }
+}
Index: /applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/urbanisme/SanisetteHandler.java
===================================================================
--- /applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/urbanisme/SanisetteHandler.java	(revision 29492)
+++ /applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/urbanisme/SanisetteHandler.java	(revision 29493)
@@ -43,5 +43,5 @@
             n.put("operator", "JCDecaux");
             n.put("opening_hours", "24/7");
-            replace(n, "numero", "ref:grandtoulouse");
+            replace(n, "numero", REF_TOULOUSE_METROPOLE);
             replace(n, "PMR", "wheelchair", new String[]{"true", "false"}, new String[]{"yes", "no"});
             String valide = n.get("emplacement_valide");
Index: /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/OdConstants.java
===================================================================
--- /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/OdConstants.java	(revision 29492)
+++ /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/OdConstants.java	(revision 29493)
@@ -60,4 +60,7 @@
 	public static final String PREF_MAXDISTANCE = "opendata.maxdistance";
     public static final double DEFAULT_MAXDISTANCE = 10;
+
+    public static final String PREF_TOLERANCE = "opendata.spreadsheet.tolerance";
+    public static final double DEFAULT_TOLERANCE = 0.1;
 
     public static final String PREF_MODULES = "opendata.modules";
Index: /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/tabular/SpreadSheetReader.java
===================================================================
--- /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/tabular/SpreadSheetReader.java	(revision 29492)
+++ /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/tabular/SpreadSheetReader.java	(revision 29493)
@@ -72,4 +72,5 @@
 	
 	public static class CoordinateColumns {
+        public Projection proj = null;
 		public int xCol = -1;
 		public int yCol = -1;
@@ -77,7 +78,6 @@
 			return xCol > -1 && yCol > -1;
 		}
-        @Override
-        public String toString() {
-            return "[xCol=" + xCol + ", yCol=" + yCol + "]";
+        @Override public String toString() {
+            return "CoordinateColumns [proj=" + proj + ", xCol=" + xCol + ", yCol=" + yCol + "]";
         }
 	}
@@ -112,5 +112,4 @@
 		}
 
-		Projection proj = null;
 		final List<CoordinateColumns> columns = new ArrayList<CoordinateColumns>();
 		
@@ -119,6 +118,6 @@
 	            if (col.isOk()) {
                     columns.add(col);
-	                if (proj == null) {
-	                    proj = pp.getProjection(header[col.xCol], header[col.yCol]);
+	                if (col.proj == null) {
+	                    col.proj = pp.getProjection(header[col.xCol], header[col.yCol]);
 	                }
 	            }
@@ -128,5 +127,14 @@
 		final boolean handlerOK = handler != null && handler.handlesProjection();
 
-		if (proj != null) {
+		boolean projFound = false;
+		
+		for (CoordinateColumns c : columns) {
+		    if (c.proj != null) {
+		        projFound = true;
+		        break;
+		    }
+		}
+		
+		if (projFound) {
 			// projection identified, do nothing
 		} else if (!columns.isEmpty()) {
@@ -137,5 +145,8 @@
 					return null; // User clicked Cancel
 				}
-				proj = dialog.getProjection();
+				Projection proj = dialog.getProjection();
+		        for (CoordinateColumns c : columns) {
+		            c.proj = proj;
+		        }
 			}
 			
@@ -149,8 +160,8 @@
 		        message += "; ";
 		    }
-		    message += header[c.xCol]+", "+header[c.yCol];
-		}
-		
-		System.out.println("Loading data using projection "+proj+" ("+message+")");
+		    message += c.proj + "("+header[c.xCol]+", "+header[c.yCol]+")";
+		}
+		
+		System.out.println("Loading data using projections "+message);
 		
 		final DataSet ds = new DataSet();
@@ -204,14 +215,22 @@
 				}
 			}
+			Node firstNode = null;
 			for (CoordinateColumns c : columns) {
 			    Node n = nodes.get(c);
 			    EastNorth en = ens.get(c);
     			if (en.isValid()) {
-    				n.setCoor(proj != null && !handlerOK ? proj.eastNorth2latlon(en) : handler.getCoor(en, fields));
+    				n.setCoor(c.proj != null && !handlerOK ? c.proj.eastNorth2latlon(en) : handler.getCoor(en, fields));
     			} else {
     				System.err.println("Warning: Skipping line "+lineNumber+" because no valid coordinates have been found at columns "+c);
     			}
     			if (n.getCoor() != null) {
-    				ds.addPrimitive(n);
+    			    if (firstNode == null) {
+    			        firstNode = n;
+    			    }
+    			    if (n == firstNode || n.getCoor().greatCircleDistance(firstNode.getCoor()) > Main.pref.getDouble(PREF_TOLERANCE, DEFAULT_TOLERANCE)) {
+    			        ds.addPrimitive(n);
+    			    } else {
+    			        nodes.remove(c);
+    			    }
     			}
 			}
