Index: applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/DefaultGeographicHandler.java
===================================================================
--- applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/DefaultGeographicHandler.java	(revision 31363)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/DefaultGeographicHandler.java	(revision 31364)
@@ -47,4 +47,6 @@
         if (crsName.equalsIgnoreCase("GCS_ETRS_1989")) {
             return CRS.decode("EPSG:4258");
+        } else if (crsName.startsWith("EPSG:")) {
+            return CRS.decode(crsName);
         }
         return null;
Index: applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/GmlReader.java
===================================================================
--- applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/GmlReader.java	(revision 31363)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/GmlReader.java	(revision 31364)
@@ -43,17 +43,19 @@
     public static final String GML_LINE_STRING = "LineString";
     public static final String GML_LINEAR_RING = "LinearRing";
+    public static final String GML_POINT = "Point";
     public static final String GML_SURFACE = "Surface";
     public static final String GML_SRS_NAME = "srsName";
     public static final String GML_SRS_DIMENSION = "srsDimension";
     public static final String GML_POS_LIST = "posList";
+    public static final String GML_COORDINATES = "coordinates";
 
     private final GeometryFactory geometryFactory = new GeometryFactory();
-    
+
     private final GmlHandler gmlHandler;
-    
+
     private XMLStreamReader parser;
-    
+
     private int dim;
-    
+
     private final class CrsData {
         public CoordinateReferenceSystem crs;
@@ -68,5 +70,5 @@
 
     private final Map<String, CrsData> crsDataMap = new HashMap<>();
-    
+
     public GmlReader(XMLStreamReader parser, GmlHandler handler) {
         super(handler, NationalHandlers.DEFAULT_GML_HANDLERS);
@@ -84,5 +86,5 @@
         }
     }
-    
+
     private final boolean isElement(String element) {
         return parser.getLocalName().matches("(gml:)?"+element);
@@ -105,5 +107,5 @@
         return ds;
     }
-    
+
     private void findCRS(String srs) throws NoSuchAuthorityCodeException, FactoryException {
         Main.info("Finding CRS for "+srs);
@@ -118,8 +120,9 @@
         }
     }
-    
+
     private void parseSrs(Component parent) throws GeoCrsException, FactoryException, UserCancelException, GeoMathTransformException {
         String srs = parser.getAttributeValue(null, GML_SRS_NAME);
-        dim = Integer.parseInt(parser.getAttributeValue(null, GML_SRS_DIMENSION));
+        String sdim = parser.getAttributeValue(null, GML_SRS_DIMENSION);
+        dim = sdim != null ? Integer.parseInt(sdim) : 2;
         CrsData crsData = crsDataMap.get(srs);
         if (crsData == null) {
@@ -143,5 +146,5 @@
         }
     }
-    
+
     private void parseFeatureMember(Component parent) throws XMLStreamException, GeoCrsException, FactoryException, UserCancelException, GeoMathTransformException, MismatchedDimensionException, TransformException {
         List<OsmPrimitive> list = new ArrayList<>();
@@ -157,4 +160,6 @@
                 } else if (isElement(GML_LINEAR_RING)) {
                     list.add(way = createWay());
+                } else if (isElement(GML_POINT)) {
+                    parseSrs(parent);
                 } else if (isElement(GML_SURFACE)) {
                     parseSrs(parent);
@@ -168,4 +173,8 @@
                         }
                     }
+                } else if (isElement(GML_COORDINATES)) {
+                    String[] tab = parser.getElementText().trim().split(",");
+                    Point p = geometryFactory.createPoint(new Coordinate(Double.valueOf(tab[0]), Double.valueOf(tab[1])));
+                    list.add(node = createOrGetNode(p));
                 }
             } else if (event == XMLStreamConstants.END_ELEMENT) {
