/*
* Copyright 2014 Hannes Janetzek
*
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
*
* This program is free software: you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.oscim.tiling.source.geojson;
import java.util.LinkedHashMap;
import java.util.Map;
import org.oscim.core.GeometryBuffer.GeometryType;
import org.oscim.core.MapElement;
import org.oscim.core.Tag;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class OsmLanduseJsonTileSource extends GeoJsonTileSource {
static final Logger log = LoggerFactory.getLogger(OsmLanduseJsonTileSource.class);
public OsmLanduseJsonTileSource() {
super("http://tile.openstreetmap.us/vectiles-land-usages");
}
private static LinkedHashMap<String, Tag> mappings =
new LinkedHashMap<String, Tag>();
static void addMapping(String key, String val) {
mappings.put(val, new Tag(key, val));
}
static {
addMapping("landuse", "residential");
addMapping("landuse", "commercial");
addMapping("landuse", "retail");
addMapping("landuse", "railway");
addMapping("landuse", "grass");
addMapping("landuse", "meadow");
addMapping("landuse", "forest");
addMapping("landuse", "farm");
addMapping("landuse", "allotments");
addMapping("landuse", "cemetery");
addMapping("landuse", "farmyard");
addMapping("landuse", "farmland");
addMapping("landuse", "quarry");
addMapping("landuse", "military");
addMapping("landuse", "industrial");
addMapping("landuse", "greenfield");
addMapping("landuse", "village_green");
addMapping("landuse", "recreation_ground");
addMapping("landuse", "conservation");
addMapping("landuse", "landfill");
addMapping("landuse", "construction");
addMapping("leisure", "common");
addMapping("leisure", "park");
addMapping("leisure", "pitch");
addMapping("leisure", "garden");
addMapping("leisure", "sports_centre");
addMapping("leisure", "playground");
addMapping("leisure", "nature_reserve");
addMapping("leisure", "golf_course");
addMapping("leisure", "stadium");
addMapping("amenity", "hospital");
addMapping("amenity", "cinema");
addMapping("amenity", "school");
addMapping("amenity", "college");
addMapping("amenity", "university");
addMapping("amenity", "theatre");
addMapping("amenity", "library");
addMapping("amenity", "parking");
addMapping("amenity", "place_of_worship");
addMapping("highway", "pedestrian");
addMapping("highway", "footway");
addMapping("highway", "service");
addMapping("highway", "street");
addMapping("natural", "scrub");
addMapping("natural", "wood");
mappings.put("urban area", new Tag("landuse", "urban"));
mappings.put("park or protected land", new Tag("leisure", "park"));
}
private final static Tag mTagArea = new Tag("area", "yes");
@Override
public void decodeTags(MapElement mapElement, Map<String, Object> properties) {
for (Map.Entry<String, Object> entry : properties.entrySet()) {
String key = entry.getKey();
if (!"kind".equals(key))
continue;
String value = (String) entry.getValue();
Tag tag = mappings.get(value);
if (tag == null) {
System.out.println("unmatched " + value);
} else {
mapElement.tags.add(tag);
}
break;
}
}
@Override
public void postGeomHook(MapElement mapElement) {
//if (mapElement.type != GeometryType.POLY) {
mapElement.type = GeometryType.POLY;
mapElement.tags.add(mTagArea);
//}
}
}