// License: GPL. For details, see LICENSE file.
package org.openstreetmap.josm.plugins.opendata.modules.fr.datagouvfr.datasets.agriculture;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import org.openstreetmap.josm.data.osm.DataSet;
import org.openstreetmap.josm.data.osm.OsmPrimitive;
import org.openstreetmap.josm.gui.preferences.SourceEditor.ExtendedSourceEntry;
import org.openstreetmap.josm.plugins.opendata.core.datasets.fr.FrenchAdministrativeUnit;
import org.openstreetmap.josm.plugins.opendata.modules.fr.datagouvfr.datasets.DataGouvDataSetHandler;
import org.openstreetmap.josm.tools.Pair;
public class RegistreParcellaireHandler extends DataGouvDataSetHandler {
protected static final int PAS_D_INFORMATION = 0;
protected static final int BLE_TENDRE = 1;
protected static final int MAIS_GRAIN_ET_ENSILAGE = 2;
protected static final int ORGE = 3;
protected static final int AUTRES_CEREALES = 4;
protected static final int COLZA = 5;
protected static final int TOURNESOL = 6;
protected static final int AUTRES_OLEAGINEUX = 7;
protected static final int PROTEAGINEUX = 8;
protected static final int PLANTES_A_FIBRES = 9;
protected static final int SEMENCES = 10;
protected static final int GEL_SURFACES_GELEES_SANS_PRODUCTION = 11;
protected static final int GEL_INDUSTRIEL = 12;
protected static final int AUTRES_GELS = 13;
protected static final int RIZ = 14;
protected static final int LEGUMINEUSES_A_GRAINS = 15;
protected static final int FOURRAGE = 16;
protected static final int ESTIVES_LANDES = 17;
protected static final int PRAIRIES_PERMANENTES = 18;
protected static final int PRAIRIES_TEMPORAIRES = 19;
protected static final int VERGERS = 20;
protected static final int VIGNES = 21;
protected static final int FRUITS_A_COQUE = 22;
protected static final int OLIVIERS = 23;
protected static final int AUTRES_CULTURES_INDUSTRIELLES = 24;
protected static final int LEGUMES_FLEURS = 25;
protected static final int CANNE_A_SUCRE = 26;
protected static final int ARBORICULTURE = 27;
protected static final int DIVERS = 28;
public RegistreParcellaireHandler() {
super();
setName("Registre Parcellaire Graphique");
}
@Override
public boolean acceptsFilename(String filename) {
return acceptsShpFilename(filename, "RPG_20.._...");
}
@Override
public ExtendedSourceEntry getMapPaintStyle() {
return getMapPaintStyle("Registre Parcellaire Graphique (France)");
}
@Override
public void updateDataSet(DataSet ds) {
for (OsmPrimitive p : ds.allPrimitives()) {
String code = p.get("CULT_MAJ");
if (code != null && !code.isEmpty()) {
replace(p, "NUM_ILOT", "ref:FR:RPG");
replace(p, "CULT_MAJ", "code:FR:RPG");
switch (Integer.parseInt(code)) {
case ARBORICULTURE:
p.put("landuse", "forest");
break;
case FOURRAGE:
case PRAIRIES_PERMANENTES:
case PRAIRIES_TEMPORAIRES:
case ESTIVES_LANDES:
case GEL_SURFACES_GELEES_SANS_PRODUCTION:
case GEL_INDUSTRIEL:
case AUTRES_GELS:
p.put("landuse", "meadow");
break;
case OLIVIERS:
p.put("trees", "olive_tree");
case VERGERS:
p.put("landuse", "orchard");
break;
case VIGNES:
p.put("landuse", "vineyard");
break;
case PAS_D_INFORMATION:
case BLE_TENDRE:
case MAIS_GRAIN_ET_ENSILAGE:
case ORGE:
case AUTRES_CEREALES:
case COLZA:
case TOURNESOL:
case AUTRES_OLEAGINEUX:
case PROTEAGINEUX:
case PLANTES_A_FIBRES:
case SEMENCES:
case RIZ:
case LEGUMINEUSES_A_GRAINS:
case FRUITS_A_COQUE:
case AUTRES_CULTURES_INDUSTRIELLES:
case LEGUMES_FLEURS:
case CANNE_A_SUCRE:
case DIVERS:
default:
p.put("landuse", "farm");
}
}
}
}
private Pair<String, URL> getRpgURL(String number, String name) throws MalformedURLException {
return new Pair<>(number+" - "+name, new URL("http://www.data.gouv.fr/var/download/ign/RPG_2010_"+number+".ZIP"));
}
@Override
public List<Pair<String, URL>> getDataURLs() {
List<Pair<String, URL>> result = new ArrayList<>();
try {
for (FrenchAdministrativeUnit dpt : FrenchAdministrativeUnit.allDepartments) {
result.add(getRpgURL(dpt.getCode(), dpt.getName()));
}
} catch (MalformedURLException e) {
e.printStackTrace();
}
return result;
}
}