Ignore:
Timestamp:
2012-03-11T17:50:51+01:00 (13 years ago)
Author:
donvip
Message:

opendata: allow to download Paris and Toulouse data

Location:
applications/editors/josm/plugins/opendata/modules/fr.paris/src/org/openstreetmap/josm/plugins/opendata/modules/fr/paris
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/opendata/modules/fr.paris/src/org/openstreetmap/josm/plugins/opendata/modules/fr/paris/ParisConstants.java

    r28000 r28044  
    2828         * Portal
    2929         */
    30         public static final String PORTAL = "http://opendata.paris.fr/opendata/jsp/site/Portal.jsp?";
     30        public static final String PORTAL = "http://opendata.paris.fr/opendata/";
    3131
    3232        /**
  • applications/editors/josm/plugins/opendata/modules/fr.paris/src/org/openstreetmap/josm/plugins/opendata/modules/fr/paris/datasets/ParisDataSetHandler.java

    r28000 r28044  
    2626       
    2727        private int documentId;
    28         private int portletId;
     28        private static final int portletId = 106; // FIXME
    2929       
    30         public ParisDataSetHandler(int documentId, int portletId) {
    31                 init(documentId, portletId);
     30        public ParisDataSetHandler(int documentId) {
     31                init(documentId);
    3232        }
    3333       
    34         public ParisDataSetHandler(int documentId, int portletId, String relevantTag) {
     34        public ParisDataSetHandler(int documentId, String relevantTag) {
    3535                super(relevantTag);
    36                 init(documentId, portletId);
     36                init(documentId);
    3737        }
    3838       
    39         public ParisDataSetHandler(int documentId, int portletId, boolean relevantUnion, String ... relevantTags) {
     39        public ParisDataSetHandler(int documentId, boolean relevantUnion, String ... relevantTags) {
    4040                super(relevantUnion, relevantTags);
    41                 init(documentId, portletId);
     41                init(documentId);
    4242        }
    4343
    44         public ParisDataSetHandler(int documentId, int portletId, String ... relevantTags) {
    45                 this(documentId, portletId, false, relevantTags);
     44        public ParisDataSetHandler(int documentId, String ... relevantTags) {
     45                this(documentId, false, relevantTags);
    4646        }
    4747
    48         public ParisDataSetHandler(int documentId, int portletId, boolean relevantUnion, Tag ... relevantTags) {
     48        public ParisDataSetHandler(int documentId, boolean relevantUnion, Tag ... relevantTags) {
    4949                super(relevantUnion, relevantTags);
    50                 init(documentId, portletId);
     50                init(documentId);
    5151        }
    5252
    53         private final void init(int documentId, int portletId) {
     53        private final void init(int documentId) {
    5454                this.documentId = documentId;
    55                 this.portletId = portletId;
    5655        }
    5756
     
    7574                try {
    7675                        if (documentId > 0) {
    77                                 return new URL(PORTAL + "document_id="+documentId + "&portlet_id="+portletId);
     76                                return new URL(PORTAL + "jsp/site/Portal.jsp?document_id="+documentId + "&portlet_id="+portletId);
     77                        }
     78                } catch (MalformedURLException e) {
     79                        e.printStackTrace();
     80                }
     81                return null;
     82        }
     83       
     84        protected abstract String getDirectLink();
     85
     86        /* (non-Javadoc)
     87         * @see org.openstreetmap.josm.plugins.opendata.core.datasets.AbstractDataSetHandler#getDataURL()
     88         */
     89        @Override
     90        public URL getDataURL() {
     91                try {
     92                        if (documentId > 0) {
     93                                return new URL(PORTAL + "rating/download/?id_resource="+documentId + "&type_resource=document&url="+getDirectLink());
    7894                        }
    7995                } catch (MalformedURLException e) {
  • applications/editors/josm/plugins/opendata/modules/fr.paris/src/org/openstreetmap/josm/plugins/opendata/modules/fr/paris/datasets/urbanisme/SanisettesHandler.java

    r28000 r28044  
    1616package org.openstreetmap.josm.plugins.opendata.modules.fr.paris.datasets.urbanisme;
    1717
     18import java.util.ArrayList;
     19import java.util.Iterator;
     20import java.util.List;
     21
     22import org.openstreetmap.josm.corrector.UserCancelException;
    1823import org.openstreetmap.josm.data.osm.DataSet;
     24import org.openstreetmap.josm.data.osm.Node;
     25import org.openstreetmap.josm.data.osm.Way;
     26import org.openstreetmap.josm.plugins.opendata.core.datasets.WayCombiner;
    1927import org.openstreetmap.josm.plugins.opendata.modules.fr.paris.datasets.ParisDataSetHandler;
    2028
     
    2230
    2331        public SanisettesHandler() {
    24                 super(93, 106);
     32                super(93);
     33                setName("Sanisettes");
    2534        }
    2635
    2736        @Override
    2837        public boolean acceptsFilename(String filename) {
    29                 return acceptsShpFilename(filename, "sanisettes");
     38                return acceptsShpFilename(filename, "sanisettes") || acceptsZipFilename(filename, "sanisettes");
     39        }
     40
     41        private boolean wayBelongsTo(Way a, List<Way> ways) {
     42                for (Way b : ways) {
     43                        if (a.getNode(0).equals(b.getNode(0)) || a.getNode(0).equals(b.getNode(b.getNodesCount()-1))
     44                         || a.getNode(a.getNodesCount()-1).equals(b.getNode(0)) || a.getNode(a.getNodesCount()-1).equals(b.getNode(b.getNodesCount()-1))) {
     45                                return true;
     46                        }
     47                }
     48                return false;
     49        }
     50       
     51        private boolean wayProcessed(Way a, List<List<Way>> waysToCombine) {
     52                for (List<Way> ways : waysToCombine) {
     53                        for (Way b : ways) {
     54                                if (a.equals(b)) {
     55                                        return true;
     56                                }
     57                        }
     58                }
     59                return false;
     60        }
     61       
     62        @Override
     63        public void updateDataSet(DataSet ds) {
     64               
     65                List<Way> sourceWays = new ArrayList<Way>(ds.getWays());
     66                List<List<Way>> waysToCombine = new ArrayList<List<Way>>();
     67               
     68                for (Iterator<Way> it = sourceWays.iterator(); it.hasNext();) {
     69                        Way w = it.next();
     70                        it.remove();
     71                        if (!wayProcessed(w, waysToCombine)) {
     72                                List<Way> list = new ArrayList<Way>();
     73                                list.add(w);
     74                                boolean finished = false;
     75                                List<Way> sourceWays2 = new ArrayList<Way>(sourceWays);
     76                                while (!finished) {
     77                                        int before = list.size();
     78                                        for (Iterator<Way> it2 = sourceWays2.iterator(); it2.hasNext();) {
     79                                                Way w2 = it2.next();
     80                                                if (wayBelongsTo(w2, list)) {
     81                                                        list.add(w2);
     82                                                        it2.remove();
     83                                                }
     84                                        }
     85                                        int after = list.size();
     86                                        finished = (after == before);
     87                                }
     88                                if (list.size() > 1) {
     89                                        waysToCombine.add(list);
     90                                }
     91                        }
     92                }
     93                               
     94                for (List<Way> ways : waysToCombine) {
     95                        try {
     96                                WayCombiner.combineWays(ways);
     97                        } catch (UserCancelException e) {
     98                                return;
     99                        }
     100                }
     101               
     102                for (Way w : ds.getWays()) {
     103                        if (w.getNodesCount() <= 3) {
     104                                ds.removePrimitive(w);
     105                                for (Node n : w.getNodes()) {
     106                                        ds.removePrimitive(n);
     107                                }
     108                        } else {
     109                                w.put("amenity", "toilets");
     110                        }
     111                }
    30112        }
    31113
    32114        @Override
    33         public void updateDataSet(DataSet ds) {
     115        protected String getDirectLink() {
     116                return PORTAL+"hn/sanisettes.zip";
     117        }
     118
     119        /* (non-Javadoc)
     120         * @see org.openstreetmap.josm.plugins.opendata.core.datasets.AbstractDataSetHandler#checkShpNodeProximity()
     121         */
     122        @Override
     123        public boolean checkShpNodeProximity() {
     124                return true;
    34125        }
    35126}
Note: See TracChangeset for help on using the changeset viewer.