Ignore:
Timestamp:
2014-03-17T11:28:36+01:00 (11 years ago)
Author:
stoecker
Message:

don't override elements with different tags

Location:
applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/GeographicReader.java

    r28982 r30326  
    128128        }
    129129       
     130        protected Node createOrGetEmptyNode(Point p) throws MismatchedDimensionException, TransformException {
     131                Point p2 = (Point) JTS.transform(p, transform);
     132                LatLon key = new LatLon(p2.getY(), p2.getX());
     133                Node n = getNode(p2, key);
     134                if(n != null && n.hasKeys()) {
     135                        n = null;
     136                }
     137                if (n == null) {
     138                        n = new Node(key);
     139                        if (handler == null || handler.useNodeMap()) {
     140                                nodes.put(key, n);
     141                        }
     142                        ds.addPrimitive(n);
     143                } else if (n.getDataSet() == null) {
     144                    // handler may have removed the node from DataSet (see Paris public light handler for example)
     145                    ds.addPrimitive(n);
     146                }
     147                return n;
     148        }
     149       
    130150        protected <T extends OsmPrimitive> T addOsmPrimitive(T p) {
    131151                ds.addPrimitive(p);
  • applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/ShpReader.java

    r29497 r30326  
    3434import org.geotools.feature.FeatureCollection;
    3535import org.geotools.feature.FeatureIterator;
     36import org.geotools.geometry.jts.JTS;
    3637import org.opengis.feature.Feature;
    3738import org.opengis.feature.GeometryAttribute;
     
    120121                       
    121122                        if (geometry.getValue() instanceof Point) {
    122                                 primitive = createOrGetNode((Point) geometry.getValue());
     123                                primitive = createOrGetEmptyNode((Point) geometry.getValue());
    123124                               
    124125                        } else if (geometry.getValue() instanceof GeometryCollection) { // Deals with both MultiLineString and MultiPolygon
     
    216217                                                        }
    217218                                                } catch (UserCancelException e) {
     219                                                        e.printStackTrace();
    218220                                                        return ds;
    219221                                                }
     
    223225                                                }
    224226                                        }
     227                                } catch (Throwable e) {
     228                                        e.printStackTrace();
    225229                                } finally {
    226230                                        iterator.close();
     
    232236                        }
    233237                } catch (IOException e) {
     238                        e.printStackTrace();
    234239                        throw e;
    235240                } catch (Throwable t) {
     241                        t.printStackTrace();
    236242                        throw new IOException(t);
    237243                }
     
    240246       
    241247        private static final void readNonGeometricAttributes(Feature feature, OsmPrimitive primitive) {
     248            try {
    242249                for (Property prop : feature.getProperties()) {
    243250                        if (!(prop instanceof GeometryAttribute)) {
     
    248255                                        String sValue = value.toString();
    249256                                        if (!sName.isEmpty() && !sValue.isEmpty()) {
    250                                                 primitive.put(sName, sValue);
    251                                         }
    252                                 }
    253                         }
    254                 }
     257                                               primitive.put(sName, sValue);
     258                                        }
     259                                }
     260                        }
     261                }
     262            } catch (Exception e) {
     263                e.printStackTrace();
     264            }
    255265        }
    256266
Note: See TracChangeset for help on using the changeset viewer.