Index: /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/GeographicReader.java
===================================================================
--- /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/GeographicReader.java	(revision 30325)
+++ /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/GeographicReader.java	(revision 30326)
@@ -128,4 +128,24 @@
 	}
 	
+        protected Node createOrGetEmptyNode(Point p) throws MismatchedDimensionException, TransformException {
+                Point p2 = (Point) JTS.transform(p, transform);
+                LatLon key = new LatLon(p2.getY(), p2.getX());
+                Node n = getNode(p2, key);
+                if(n != null && n.hasKeys()) {
+                        n = null;
+                }
+                if (n == null) {
+                        n = new Node(key);
+                        if (handler == null || handler.useNodeMap()) {
+                                nodes.put(key, n);
+                        }
+                        ds.addPrimitive(n);
+                } else if (n.getDataSet() == null) {
+                    // handler may have removed the node from DataSet (see Paris public light handler for example)
+                    ds.addPrimitive(n);
+                }
+                return n;
+        }
+        
 	protected <T extends OsmPrimitive> T addOsmPrimitive(T p) {
 		ds.addPrimitive(p);
Index: /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/ShpReader.java
===================================================================
--- /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/ShpReader.java	(revision 30325)
+++ /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/ShpReader.java	(revision 30326)
@@ -34,4 +34,5 @@
 import org.geotools.feature.FeatureCollection;
 import org.geotools.feature.FeatureIterator;
+import org.geotools.geometry.jts.JTS;
 import org.opengis.feature.Feature;
 import org.opengis.feature.GeometryAttribute;
@@ -120,5 +121,5 @@
 			
 			if (geometry.getValue() instanceof Point) {
-				primitive = createOrGetNode((Point) geometry.getValue());
+				primitive = createOrGetEmptyNode((Point) geometry.getValue());
 				
 			} else if (geometry.getValue() instanceof GeometryCollection) { // Deals with both MultiLineString and MultiPolygon
@@ -216,4 +217,5 @@
 							}
 						} catch (UserCancelException e) {
+                                                        e.printStackTrace();
 							return ds;
 						}
@@ -223,4 +225,6 @@
 						}
 					}
+				} catch (Throwable e) {
+                                        e.printStackTrace();
 				} finally {
 					iterator.close();
@@ -232,6 +236,8 @@
 			}
 		} catch (IOException e) {
+                        e.printStackTrace();
 			throw e;
 		} catch (Throwable t) {
+                        t.printStackTrace();
 			throw new IOException(t);
 		}
@@ -240,4 +246,5 @@
 	
 	private static final void readNonGeometricAttributes(Feature feature, OsmPrimitive primitive) {
+            try {
 		for (Property prop : feature.getProperties()) {
 			if (!(prop instanceof GeometryAttribute)) {
@@ -248,9 +255,12 @@
 					String sValue = value.toString();
 					if (!sName.isEmpty() && !sValue.isEmpty()) {
-						primitive.put(sName, sValue);
-					}
-				}
-			}
-		}
+                                               primitive.put(sName, sValue);
+					}
+				}
+			}
+		}
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
 	}
 
