// License: GPL. For details, see LICENSE file. package org.openstreetmap.josm.plugins.opendata.modules.fr.paris.datasets.urbanisme; import java.util.Set; import org.openstreetmap.josm.data.osm.DataSet; import org.openstreetmap.josm.data.osm.Node; import org.openstreetmap.josm.data.osm.OsmPrimitive; import org.openstreetmap.josm.plugins.opendata.modules.fr.paris.datasets.ParisDataSetHandler; import org.openstreetmap.josm.plugins.opendata.modules.fr.paris.datasets.ParisShpHandler; import org.openstreetmap.josm.tools.Geometry; public class EclairagePublicHandler extends ParisDataSetHandler { private final InternalShpHandler shpHandler = new InternalShpHandler(); public EclairagePublicHandler() { super(94); setName("Éclairage public"); setShpHandler(shpHandler); } @Override public boolean acceptsFilename(String filename) { return acceptsShpFilename(filename, "eclairage_public") || acceptsZipFilename(filename, "eclairage_public"); } @Override protected String getDirectLink() { return PORTAL+"hn/eclairage_public.zip"; } private final class InternalShpHandler extends ParisShpHandler { @Override public void notifyFeatureParsed(Object feature, DataSet result, Set<OsmPrimitive> featurePrimitives) { initFeaturesPrimitives(featurePrimitives); if (dataPrimitive == null) { System.err.println("Found no primitive with tags"); } else if (closedWay == null) { // ;Objet sans identification particulière pour ce niveau et cette thématique;147;eclairage_public.zip;Niveau 18 dataPrimitive.put("FIXME", "This way is not closed and has not been recognized as highway=street_lamp."); } else { Node centroid = createOrGetNode(result, Geometry.getCentroid(closedWay.getNodes())); if (!centroid.hasKeys()) { centroid.setKeys(dataPrimitive.getKeys()); centroid.put("highway", "street_lamp"); replace(centroid, "Libelle", "lamp_model:fr"); } else if (centroid.get("lamp_model:fr") != null && (dataPrimitive.get("Libelle") == null || !dataPrimitive.get("Libelle").equals(centroid.get("lamp_model:fr")))) { System.err.println("Found 2 street lamps at the same position with different types: '"+centroid.get("lamp_model:fr")+"' and '"+dataPrimitive.get("Libelle")+"'."); } removePrimitives(result); if (centroid.get("lamp_model:fr") != null) { if (centroid.get("lamp_model:fr").contains("mural") && !centroid.get("lamp_model:fr").contains("au sol")) { centroid.put("lamp_mount", "wall mounted"); } else if (centroid.get("lamp_model:fr").contains("au sol") && !centroid.get("lamp_model:fr").contains("mural")) { centroid.put("lamp_mount", "ground"); } else { centroid.put("lamp_mount", "pole"); } centroid.remove("Info"); } /*if (dataPrimitive.get("Info") == null) { System.err.println("Found no primitive with tag 'Info'"); } else if (dataPrimitive.get("Info").equals("LEA")) { // LEA;Lanterne électrique axiale;2834;eclairage_public.zip;Niveau 18 } else if (dataPrimitive.get("Info").equals("LEL")) { // LEL;Lampadaire électrique;61337;eclairage_public.zip;Niveau 18 } else if (dataPrimitive.get("Info").equals("LEM")) { // LEM;Lanterne électrique murale;789;eclairage_public.zip;Niveau 18 } else if (dataPrimitive.get("Info").equals("LEMB")) { // LEMB;Lanterne électrique murale bord;14727;eclairage_public.zip;Niveau 18 } else if (dataPrimitive.get("Info").equals("LEMRND")) { // LEMRND;Lanterne électrique murale renvoi à droite;5635;eclairage_public.zip;Niveau 18 } else if (dataPrimitive.get("Info").equals("LEMRNG")) { // LEMRNG;Lanterne électrique murale renvoi à gauche;3822;eclairage_public.zip;Niveau 18 } else if (dataPrimitive.get("Info").equals("LERRND")) { // LERRND;Lanterne électrique murale et boite raccord BT renvoi à droite;5657;eclairage_public.zip;Niveau 18 } else if (dataPrimitive.get("Info").equals("LERRNG")) { // LERRNG;Lanterne électrique murale et boite raccord BT renvoi à gauche;3377;eclairage_public.zip;Niveau 18 } else if (dataPrimitive.get("Info").equals("LSO")) { // LSO;Lanterne au sol;1337;eclairage_public.zip;Niveau 18 } else if (dataPrimitive.get("Info").equals("PHO")) { // PHO;Poteau horaire;17;eclairage_public.zip;Niveau 18 } else if (dataPrimitive.get("Info").equals("PPEP")) { // PPEP;Poteau provisoire d'éclairage public;181;eclairage_public.zip;Niveau 18 } else if (dataPrimitive.get("Info").equals("PPR")) { // PPR;poteau à projecteur;67;eclairage_public.zip;Niveau 18 } else if (dataPrimitive.get("Info").equals("PRJ")) { // PRJ;Projecteur au sol ou mural;1864;eclairage_public.zip;Niveau 18 } else if (dataPrimitive.get("Info").equals("PRJRND")) { // PRJRND;Projecteur au sol ou mural renvoi à droite;42;eclairage_public.zip;Niveau 18 } else if (dataPrimitive.get("Info").equals("PRJRNG")) { // PRJRNG;Projecteur au sol ou mural renvoi à gauche;57;eclairage_public.zip;Niveau 18 } else { System.err.println("Unsupported Info: "+dataPrimitive.get("Info")); }*/ } } } @Override public void updateDataSet(DataSet ds) { // Done in notifyFeatureParsed() for drastic performance reasons shpHandler.nodes.clear(); } }