refactoring of MapRenderingTypes

git-svn-id: https://osmand.googlecode.com/svn/trunk@669 e29c36b1-1cfa-d876-8d93-3434fc2bb7b8
This commit is contained in:
Victor Shcherb 2010-11-13 23:06:39 +00:00
parent 36308e57cd
commit bd488de9d9
3 changed files with 733 additions and 696 deletions

View file

@ -5,7 +5,7 @@ public class Version {
public static final String APP_NAME = "OsmAnd"; //$NON-NLS-1$
public static final String APP_MAP_CREATOR_NAME = "OsmAndMapCreator"; //$NON-NLS-1$
public static final String APP_VERSION = "0.5.1"; //$NON-NLS-1$
public static final String APP_DESCRIPTION = "alpha (a2)"; //$NON-NLS-1$
public static final String APP_DESCRIPTION = "alpha (b3)"; //$NON-NLS-1$
public static final boolean VELCOM_EDITION = false;
public static final String APP_NAME_VERSION = APP_NAME + " " + APP_VERSION; //$NON-NLS-1$

View file

@ -3,15 +3,25 @@ package net.osmand.osm;
import gnu.trove.map.TIntByteMap;
import gnu.trove.map.hash.TIntByteHashMap;
import java.io.InputStream;
import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import net.osmand.LogUtil;
import net.osmand.data.AmenityType;
import net.osmand.osm.OSMSettings.OSMTagKey;
import org.apache.commons.logging.Log;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
/**
* SOURCE : http://wiki.openstreetmap.org/wiki/Map_Features
@ -20,7 +30,8 @@ import net.osmand.osm.OSMSettings.OSMTagKey;
* 1. Last 2 bits define type of element : polygon, polyline, point
*/
public class MapRenderingTypes {
private static final Log log = LogUtil.getLog(MapRenderingTypes.class);
// TODO Internet access bits for point, polygon
/** standard schema :
@ -39,6 +50,7 @@ public class MapRenderingTypes {
public final static int POINT_TYPE = 1;
public final static int PG_SUBTYPE_MASK_LEN = 5;
public final static int PG_SUBTYPE_MASK = (1 << PG_SUBTYPE_MASK_LEN) -1;
public final static int PO_SUBTYPE_MASK_LEN = 8;
@ -252,8 +264,8 @@ public class MapRenderingTypes {
boolean polygon = multipolygon;
if (!point && !polygon) {
// determining area or path
boolean area = "yes".equals(e.getTag("area"));
boolean highway = e.getTag("highway") != null;
boolean area = "yes".equals(e.getTag("area")); //$NON-NLS-1$ //$NON-NLS-2$
boolean highway = e.getTag("highway") != null; //$NON-NLS-1$
if(highway && !area){
// skip the check for first and last point
} else {
@ -454,7 +466,7 @@ public class MapRenderingTypes {
// oneway
String one = e.getTag(OSMTagKey.ONEWAY);
attr <<= 1;
if(one != null && (one.equals("yes") || one.equals("1") || one.equals("-1"))){
if(one != null && (one.equals("yes") || one.equals("1") || one.equals("-1"))){ //$NON-NLS-1$ //$NON-NLS-2$//$NON-NLS-3$
attr |= 1;
}
return attr;
@ -515,15 +527,6 @@ public class MapRenderingTypes {
return name;
}
private static void registerRules(int minZoom,
String tag, String val, int type, int subtype, int pointRule, int polylineRule, int polygonRule){
MapRulType rtype = types.get(tag);
if(rtype == null){
rtype = new MapRulType(tag);
types.put(tag, rtype);
}
rtype.registerType(minZoom, val, pointRule, polylineRule, polygonRule, type, subtype);
}
private static void initAmenityMap(){
if (amenityTagValToType == null) {
@ -646,93 +649,10 @@ public class MapRenderingTypes {
// System.out.println("NOT ACCEPTED " + tag + " " + val);
}
}
private static void register(int st, String tag, String val, int type, int subtype, int renderType){
register(st, 15, tag, val, type, subtype, renderType);
}
private static void register(int st, int minZoom, String tag, String val, int type, int subtype, int renderType){
if(st == INIT_RULE_TYPES){
int polygonRule = 0;
int polylineRule = 0;
int pointRule = 0;
if(renderType == POINT_TYPE){
polygonRule = polylineRule = pointRule = POINT_TYPE;
} else if(renderType == POLYLINE_TYPE){
polylineRule = POLYLINE_TYPE;
polygonRule = POLYLINE_TYPE;
} else {
polygonRule = renderType;
}
registerRules(minZoom, tag, val, type, subtype, pointRule, polylineRule, polygonRule);
} else if(st == INIT_AMENITY_MAP) {
if(renderType == POINT_TYPE || renderType == POLYGON_TYPE){
registerAmenity(tag, val, type, subtype);
}
} else if(st == INIT_TYPE_ZOOM){
if(minZoom < 15){
objectsToMinZoom.put(((subtype << 5) | type) << 2, (byte) minZoom);
}
}
}
private static void register(int st, String tag, String val, int type, int subtype, int renderType, int renderType2){
register(st, 15, tag, val, type, subtype, renderType, renderType2);
}
private static void register(int st, int minZoom, String tag, String val, int type, int subtype, int renderType, int renderType2){
int polygonRule = 0;
int polylineRule = 0;
int pointRule = 0;
if(renderType == POINT_TYPE || renderType2 == POINT_TYPE){
int second = renderType == POINT_TYPE ? renderType2 : renderType;
pointRule = POINT_TYPE;
if(second == POLYLINE_TYPE){
polygonRule = POINT_TYPE;
polylineRule = second;
} else {
polygonRule = second;
polylineRule = POINT_TYPE;
}
} else {
if(renderType == POLYLINE_TYPE){
polylineRule = renderType;
polygonRule = renderType2;
} else {
polylineRule = renderType2;
polygonRule = renderType;
}
}
if(st == INIT_RULE_TYPES){
registerRules(minZoom, tag, val, type, subtype, pointRule, polylineRule, polygonRule);
} else if(st == INIT_AMENITY_MAP){
if(pointRule == POINT_TYPE){
registerAmenity(tag, val, type, subtype);
}
} else if(st == INIT_TYPE_ZOOM){
if(minZoom < 15){
objectsToMinZoom.put((((subtype) << 5) | type) << 2, (byte) minZoom);
}
}
}
private static void registerAsBuilding(int st, String tag, String val, int type, int subtype){
if (st == INIT_RULE_TYPES) {
// transforms point -> as renderType ?
// transforms way -> as renderType point and way as building ?
MapRulType rtype = types.get(tag);
if (rtype == null) {
rtype = new MapRulType(tag);
types.put(tag, rtype);
}
rtype.registerType(15, val, POINT_TYPE, 0, DEFAULT_POLYGON_BUILDING, type, subtype);
} else if (st == INIT_AMENITY_MAP) {
registerAmenity(tag, val, type, subtype);
} else if(st == INIT_TYPE_ZOOM){
// skip it because building are too small
}
}
private static String getAmenityPrefix(int type, int subtype) {
switch (type) {
case 1:
@ -874,606 +794,101 @@ public class MapRenderingTypes {
private final static int INIT_AMENITY_MAP = 1;
private final static int INIT_TYPE_ZOOM = 2;
private static void init(int st){
// 1. highway
register(st, 6, "highway", "motorway", HIGHWAY, PL_HW_MOTORWAY, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 10, "highway", "motorway_link", HIGHWAY, PL_HW_MOTORWAY, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 6, "highway", "trunk", HIGHWAY, PL_HW_TRUNK, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 10, "highway", "trunk_link", HIGHWAY, PL_HW_TRUNK, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 7, "highway", "primary", HIGHWAY, PL_HW_PRIMARY, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 10, "highway", "primary_link", HIGHWAY, PL_HW_PRIMARY, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 10, "highway", "secondary", HIGHWAY, PL_HW_SECONDARY, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 10, "highway", "secondary_link", HIGHWAY, PL_HW_SECONDARY, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 13, "highway", "tertiary", HIGHWAY, PL_HW_TERTIARY, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 14, "highway", "unclassified", HIGHWAY, PL_HW_UNCLASSIFIED, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 14, "highway", "road", HIGHWAY, PL_HW_UNCLASSIFIED, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 14, "highway", "residential", HIGHWAY, PL_HW_RESIDENTIAL, POLYLINE_TYPE, POLYGON_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "highway", "living_street", HIGHWAY, PL_HW_LIVING_STREET, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "highway", "service", HIGHWAY, PL_HW_SERVICE, POLYLINE_TYPE, POLYGON_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 13, "highway", "track", HIGHWAY, PL_HW_TRACK, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "highway", "pedestrian", HIGHWAY, PL_HW_PEDESTRIAN, POLYLINE_TYPE, POLYGON_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
// register(st, "highway", "raceway", HIGHWAY, PL_HW_RACEWAY, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "highway", "services", HIGHWAY, PL_HW_SERVICES, POLYGON_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
// register(st, "highway", "bus_guideway", HIGHWAY, PL_HW_MOTORWAY, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 14, "highway", "path", HIGHWAY, PL_HW_PATH, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 14, "highway", "cycleway", HIGHWAY, PL_HW_CYCLEWAY, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "highway", "footway", HIGHWAY, PL_HW_FOOTWAY, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 14, "highway", "bridleway", HIGHWAY, PL_HW_BRIDLEWAY, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 14, "highway", "byway", HIGHWAY, PL_HW_BYWAY, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "highway", "steps", HIGHWAY, PL_HW_STEPS, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "highway", "ford", HIGHWAY, PL_HW_FORD, POLYLINE_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "highway", "construction", HIGHWAY, PL_HW_CONSTRUCTION, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "highway", "proposed", HIGHWAY, PL_HW_PROPOSED, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "highway", "mini_roundabout", HIGHWAY, 35, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "highway", "stop", HIGHWAY, 36, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "highway", "give_way", HIGHWAY, 37, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "highway", "traffic_signals", HIGHWAY, 38, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "highway", "motorway_junction", HIGHWAY, 39, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "highway", "bus_stop", HIGHWAY, 40, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "highway", "platform", HIGHWAY, 41, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "highway", "turning_circle", HIGHWAY, 42, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "highway", "emergency_access_point", HIGHWAY, 43, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "highway", "speed_camera", HIGHWAY, 44, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "highway", "street_lamp", HIGHWAY, 45, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "traffic_calming", "yes", HIGHWAY, 50, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "traffic_calming", "bump", HIGHWAY, 51, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "traffic_calming", "chicane", HIGHWAY, 52, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "traffic_calming", "cushion", HIGHWAY, 53, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "traffic_calming", "hump", HIGHWAY, 54, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "traffic_calming", "rumble_strip", HIGHWAY, 55, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "traffic_calming", "table", HIGHWAY, 56, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "traffic_calming", "choker", HIGHWAY, 57, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "traffic_calming", null, HIGHWAY, 58, POINT_TYPE); //$NON-NLS-1$
// 2. barrier
register(st, "barrier", "hedge", BARRIER, 1, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "natural", "hedge", BARRIER, 1, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "barrier", "fence", BARRIER, 2, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "fenced", "yes", BARRIER, 2, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "barrier", "wall", BARRIER, 3, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "barrier", "ditch", BARRIER, 1, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "barrier", "retaining_wall", BARRIER, 4, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 13, "barrier", "city_wall", BARRIER, 5, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 13, "historic", "city_walls", BARRIER, 5, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "barrier", "bollard", BARRIER, 6, POLYLINE_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "barrier", "cycle_barrier", BARRIER, 16, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "barrier", "block", BARRIER, 17, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "barrier", "cattle_grid", BARRIER, 18, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "barrier", "toll_booth", BARRIER, 19, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "barrier", "entrance", BARRIER, 20, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "barrier", "gate", BARRIER, 21, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "highway", "gate", BARRIER, 21, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "barrier", "lift_gate", BARRIER, 22, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "barrier", "stile", BARRIER, 23, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "barrier", "horse_stile", BARRIER, 24, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "barrier", "kissing_gate", BARRIER, 25, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "barrier", "sally_port", BARRIER, 26, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "barrier", "turnstile", BARRIER, 27, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "barrier", "kent_carriage_gap", BARRIER, 28, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
// 3. waterway
register(st, 13, "waterway", "stream", WATERWAY, 1, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 9, "waterway", "riverbank", WATERWAY, 3, POLYGON_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
// Questionable index river & canals for level=2 (depends on target)
register(st, 9, "waterway", "river", WATERWAY, 2, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 10, "waterway", "canal", WATERWAY, 4, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "waterway", "ditch", WATERWAY, 5, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "waterway", "drain", WATERWAY, 6, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 13, "waterway", "dock", WATERWAY, 7, POLYGON_WITH_CENTER_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "waterway", "lock_gate", WATERWAY, 8, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "waterway", "lock", WATERWAY, 8, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "waterway", "turning_point", WATERWAY, 9, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "waterway", "boatyard", WATERWAY, 10, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "waterway", "weir", WATERWAY, 11, POLYLINE_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 13, "waterway", "dam", WATERWAY, 12, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 13, "waterway", "mill_pond", WATERWAY, 13, POLYGON_WITH_CENTER_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
private static void init(final int st){
InputStream is = MapRenderingTypes.class.getResourceAsStream("rendering_types.xml"); //$NON-NLS-1$
try {
long time = System.currentTimeMillis();
final SAXParser parser = SAXParserFactory.newInstance().newSAXParser();
parser.parse(is, new DefaultHandler(){
int currentType = 1;
@Override
public void startElement(String uri, String localName, String name, Attributes attributes) throws SAXException {
name = parser.isNamespaceAware() ? localName : name;
if(name.equals("type")){ //$NON-NLS-1$
currentType = Integer.parseInt(attributes.getValue("id")); //$NON-NLS-1$
} else if (name.equals("subtype")) { //$NON-NLS-1$
String val = attributes.getValue("maxzoom"); //$NON-NLS-1$
int maxzoom = 15;
if (val != null) {
maxzoom = Integer.parseInt(val);
}
// 4. railway
register(st, 7, "railway", "rail", RAILWAY, 1, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 13, "railway", "tram", RAILWAY, 2, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 13, "railway", "light_rail", RAILWAY, 3, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "railway", "abandoned", RAILWAY, 4, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "railway", "disused", RAILWAY, 5, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 13, "railway", "subway", RAILWAY, 6, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 13, "railway", "preserved", RAILWAY, 7, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "railway", "narrow_gauge", RAILWAY, 8, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "railway", "construction", RAILWAY, 9, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "railway", "monorail", RAILWAY, 10, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "railway", "funicular", RAILWAY, 11, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "railway", "platform", RAILWAY, 12, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 12, "railway", "station", RAILWAY, 13, POLYGON_WITH_CENTER_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "railway", "turntable", RAILWAY, 14, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "railway", "halt", RAILWAY, 22, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "railway", "tram_stop", RAILWAY, 23, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "railway", "crossing", RAILWAY, 24, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "railway", "level_crossing", RAILWAY, 25, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "railway", "subway_entrance", RAILWAY, 26, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "railway", "buffer_stop", RAILWAY, 27, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
String tag = attributes.getValue("tag"); //$NON-NLS-1$
val = attributes.getValue("value"); //$NON-NLS-1$
if (val != null && (val.equalsIgnoreCase("null") || val.length() == 0)) { //$NON-NLS-1$
val = null;
}
int subtype = Integer.parseInt(attributes.getValue("id")); //$NON-NLS-1$
boolean building = Boolean.parseBoolean(attributes.getValue("building")); //$NON-NLS-1$
boolean polygon = Boolean.parseBoolean(attributes.getValue("polygon")); //$NON-NLS-1$
boolean polyline = Boolean.parseBoolean(attributes.getValue("polyline")); //$NON-NLS-1$
boolean point = Boolean.parseBoolean(attributes.getValue("point")); //$NON-NLS-1$
boolean polygon_center = Boolean.parseBoolean(attributes.getValue("polygon_center")); //$NON-NLS-1$
int polygonRule = 0;
int pointRule = 0;
int polylineRule = 0;
if(building || point || polygon_center){
pointRule = POINT_TYPE;
}
if(!polyline && polygon) {
pointRule = POINT_TYPE;
}
if(polyline){
polylineRule = POLYLINE_TYPE;
} else if(point){
polylineRule = POINT_TYPE;
}
if(building){
polygonRule = DEFAULT_POLYGON_BUILDING;
} else if(polygon_center){
polygonRule = POLYGON_WITH_CENTER_TYPE;
} else if(polygon){
polygonRule = POLYGON_TYPE;
}else if(polyline){
polygonRule = POLYLINE_TYPE;
} else if(point){
polygonRule = POINT_TYPE;
}
stepSubtype(st, maxzoom, tag, val, currentType, subtype, polygonRule, polylineRule, pointRule);
}
}
});
log.info("Time to init " + (System.currentTimeMillis() - time)); //$NON-NLS-1$
} catch (Exception e) {
log.error("Unexpected error", e); //$NON-NLS-1$
e.printStackTrace();
}
}
// 5. aeroway
register(st, 12, "aeroway", "aerodrome", AEROWAY, 1, POLYGON_WITH_CENTER_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "aeroway", "terminal", AEROWAY, 2, POLYGON_WITH_CENTER_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 12, "aeroway", "helipad", AEROWAY, 3, POLYGON_WITH_CENTER_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 12, "aeroway", "runway", AEROWAY, 7, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 12, "aeroway", "taxiway", AEROWAY, 8, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 12, "aeroway", "apron", AEROWAY, 9, POLYGON_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 12, "aeroway", "airport", AEROWAY, 10, POLYGON_WITH_CENTER_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "aeroway", "gate", AEROWAY, 12, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "aeroway", "windsock", AEROWAY, 13, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
// 6. aerialway
register(st, 13, "aerialway", "cable_car", AERIALWAY, 1, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 13, "aerialway", "gondola", AERIALWAY, 2, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 13, "aerialway", "chair_lift", AERIALWAY, 3, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 13, "aerialway", "mixed_lift", AERIALWAY, 4, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 13, "aerialway", "drag_lift", AERIALWAY, 5, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "aerialway", "goods", AERIALWAY, 6, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
registerAsBuilding(st, "aerialway", "station", AERIALWAY, 7); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "aerialway", "pylon", AERIALWAY, 8, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "aerialway", "goods", AERIALWAY, 9, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
// 7. power
register(st, 13, "power", "tower", POWER, 1, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "power", "pole", POWER, 2, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 13, "power", "line", POWER, 3, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "power", "minor_line", POWER, 4, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 1, "power", "station", POWER, 5, POINT_TYPE, POLYGON_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 1, "power", "sub_station", POWER, 6, POINT_TYPE, POLYGON_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "power", "generator", POWER, 7, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "power", "cable_distribution_cabinet", POWER, 8, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
// 8. man_made
register(st, "building", "yes", MAN_MADE, SUBTYPE_BUILDING, POLYGON_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "building", null, MAN_MADE, SUBTYPE_BUILDING, POLYGON_TYPE); //$NON-NLS-1$
register(st, "man_made", "wastewater_plant", MAN_MADE, 2, POINT_TYPE, POLYGON_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
registerAsBuilding(st, "man_made", "water_works", MAN_MADE, 3); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "man_made", "works", MAN_MADE, 4, POLYGON_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "building", "garages", MAN_MADE, SUBTYPE_GARAGES, POLYGON_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "man_made", "cutline", MAN_MADE, 7, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 13, "man_made", "groyne", MAN_MADE, 8, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 13, "man_made", "breakwater", MAN_MADE, 8, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 13, "man_made", "pier", MAN_MADE, 9, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "man_made", "pipeline", MAN_MADE, 10, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "man_made", "reservoir_covered", MAN_MADE, 11, POLYGON_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "man_made", "embankment", MAN_MADE, 12, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "man_made", "beacon", MAN_MADE, 15, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "man_made", "crane", MAN_MADE, 16, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "man_made", "lighthouse", MAN_MADE, 17, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "man_made", "mineshaft", MAN_MADE, 18, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "man_made", "adit", MAN_MADE, 19, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "man_made", "petroleum_well", MAN_MADE, 20, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "man_made", "surveillance", MAN_MADE, 21, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "man_made", "survey_point", MAN_MADE, 22, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "man_made", "tower", MAN_MADE, 23, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "man_made", "watermill", MAN_MADE, 24, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "man_made", "water_tower", MAN_MADE, 25, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "man_made", "water_well", MAN_MADE, 26, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "man_made", "windmill", MAN_MADE, 27, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
// 9. leisure
register(st, "leisure", "dog_park", LEISURE, 1, POLYGON_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "leisure", "sports_centre", LEISURE, 2, POLYGON_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "leisure", "golf_course", LEISURE, 3, POLYGON_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "leisure", "stadium", LEISURE, 4, POLYGON_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 13, "leisure", "track", LEISURE, 5, POLYLINE_TYPE, POLYGON_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "leisure", "pitch", LEISURE, 6, POLYGON_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "leisure", "water_park", LEISURE, 7, POLYGON_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 13, "leisure", "marina", LEISURE, 8, POLYLINE_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "leisure", "slipway", LEISURE, 9, POLYGON_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "leisure", "fishing", LEISURE, 10, POLYGON_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 9, "leisure", "nature_reserve", LEISURE, 11, POLYGON_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 13, "natural", "park", LEISURE, 12, POLYGON_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 13, "leisure", "park", LEISURE, 12, POLYGON_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 13, "leisure", "recreation_ground", LEISURE, 12, POLYGON_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "leisure", "playground", LEISURE, 13, POLYGON_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 13, "leisure", "garden", LEISURE, 14, POLYGON_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 13, "leisure", "common", LEISURE, 15, POLYGON_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "leisure", "ice_rink", LEISURE, 16, POLYGON_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "leisure", "miniature_golf", LEISURE, 17, POLYGON_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "leisure", "dance", LEISURE, 18, POLYGON_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
// 10. office
register(st, "office", "accountant", OFFICE, 5, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "office", "architect", OFFICE, 6, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "office", "company", OFFICE, 7, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "office", "employment_agency", OFFICE, 8, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "office", "estate_agent", OFFICE, 9, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "office", "government", OFFICE, 10, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "office", "insurance", OFFICE, 11, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "office", "it", OFFICE, 12, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "office", "lawyer", OFFICE, 13, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "office", "ngo", OFFICE, 14, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "office", "quango", OFFICE, 15, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "office", "research", OFFICE, 16, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "office", "telecommunication", OFFICE, 17, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "office", "travel_agent", OFFICE, 18, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
// changed
register(st, "amenity", "architect_office", OFFICE, 19, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
// 11. shop
// reserve numbers from 1-10
register(st, "shop", "alcohol", SHOP, 41, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "shop", "bakery", SHOP, 42, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "shop", "beauty", SHOP, 43, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "shop", "beverages", SHOP, 44, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "shop", "bicycle", SHOP, 45, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "shop", "books", SHOP, 46, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "shop", "boutique", SHOP, 47, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "shop", "butcher", SHOP, 48, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "shop", "car", SHOP, 49, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "shop", "car_repair", SHOP, 50, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "shop", "charity", SHOP, 11, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "shop", "chemist", SHOP, 12, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "shop", "clothes", SHOP, 13, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "shop", "fashion", SHOP, 13, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "shop", "computer", SHOP, 14, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "shop", "confectionery", SHOP, 15, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "shop", "convenience", SHOP, 16, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "shop", "department_store", SHOP, 17, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "shop", "dry_cleaning", SHOP, 18, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "shop", "doityourself", SHOP, 19, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "shop", "electronics", SHOP, 20, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "shop", "fabrics", SHOP, 21, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "shop", "farm", SHOP, 22, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "shop", "florist", SHOP, 23, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "shop", "funeral_directors", SHOP, 24, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "shop", "furniture", SHOP, 25, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "shop", "garden_centre", SHOP, 26, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "shop", "general", SHOP, 27, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "shop", "gift", SHOP, 28, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "shop", "glaziery", SHOP, 29, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "shop", "greengrocer", SHOP, 30, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "shop", "hairdresser", SHOP, 31, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "shop", "hardware", SHOP, 32, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "shop", "hearing_aids", SHOP, 33, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "shop", "hifi", SHOP, 34, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "shop", "ice_cream", SHOP, 35, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "shop", "jewelry", SHOP, 40, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "shop", "kiosk", SHOP, 51, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "shop", "laundry", SHOP, 52, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "shop", "mall", SHOP, 53, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "shop", "massage", SHOP, 54, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "shop", "money_lender", SHOP, 55, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "shop", "motorcycle", SHOP, 56, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "shop", "newsagent", SHOP, 57, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "shop", "optician", SHOP, 58, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "shop", "organic", SHOP, 59, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "shop", "outdoor", SHOP, 60, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "shop", "pawnbroker", SHOP, 61, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "shop", "second_hand", SHOP, 62, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "shop", "sports", SHOP, 63, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "shop", "stationery", SHOP, 64, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "shop", "supermarket", SHOP, 65, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "shop", "shoes", SHOP, 66, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "shop", "tattoo", SHOP, 67, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "shop", "toys", SHOP, 68, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "shop", "travel_agency", SHOP, 69, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "shop", "variety_store", SHOP, 70, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "shop", "video", SHOP, 71, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "shop", null, SHOP, 75, POINT_TYPE); //$NON-NLS-1$
// 12. emergency
registerAsBuilding(st, "emergency", "ambulance_station", EMERGENCY, 1); //$NON-NLS-1$ //$NON-NLS-2$
registerAsBuilding(st, "emergency", "ses_station", EMERGENCY, 2); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "emergency", "fire_extinguisher", EMERGENCY, 3, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "emergency", "fire_flapper", EMERGENCY, 4,POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "emergency", "fire_hose", EMERGENCY, 5, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "emergency", "fire_hydrant", EMERGENCY, 6, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "emergency", "phone", EMERGENCY, 7, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "emergency", "siren", EMERGENCY, 9, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
// change category
register(st, "amenity", "fire_station", EMERGENCY, 10, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
// 13. tourism
register(st, 13, "tourism", "attraction", TOURISM, 2, POLYGON_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "tourism", "artwork", TOURISM, 3, POLYGON_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "tourism", "camp_site", TOURISM, 4, POLYGON_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "tourism", "caravan_site", TOURISM, 5, POLYGON_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "tourism", "picnic_site", TOURISM, 6, POLYGON_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 13, "tourism", "theme_park", TOURISM, 7, POLYGON_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "tourism", "zoo", TOURISM, 8, POLYGON_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
registerAsBuilding(st, "tourism", "alpine_hut", TOURISM, 9); //$NON-NLS-1$ //$NON-NLS-2$
registerAsBuilding(st, "tourism", "chalet", TOURISM, 10); //$NON-NLS-1$ //$NON-NLS-2$
registerAsBuilding(st, "tourism", "guest_house", TOURISM, 11); //$NON-NLS-1$ //$NON-NLS-2$
registerAsBuilding(st, "tourism", "hostel", TOURISM, 12); //$NON-NLS-1$ //$NON-NLS-2$
registerAsBuilding(st, "tourism", "hotel", TOURISM, 13); //$NON-NLS-1$ //$NON-NLS-2$
registerAsBuilding(st, "tourism", "motel", TOURISM, 14); //$NON-NLS-1$ //$NON-NLS-2$
registerAsBuilding(st, "tourism", "museum", TOURISM, 15); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "tourism", "information", TOURISM, 16, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "tourism", "viewpoint", TOURISM, 17, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "tourism", null, TOURISM, 18, POINT_TYPE); //$NON-NLS-1$
// 14. historic
register(st, "historic", "archaeological_site", HISTORIC, 1, POLYGON_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "historic", "battlefield", HISTORIC, 2, POLYGON_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "historic", "castle", HISTORIC, 4, POLYGON_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "historic", "fort", HISTORIC, 5, POLYGON_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "historic", "ruins", HISTORIC, 8, POLYGON_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
registerAsBuilding(st, "historic", "monument", HISTORIC, 7); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "historic", "boundary_stone", HISTORIC, 3, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "historic", "memorial", HISTORIC, 6, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "historic", "wayside_cross", HISTORIC, 9, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "historic", "wayside_shrine", HISTORIC, 10, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "historic", "wreck", HISTORIC, 11, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "historic", null, HISTORIC, 12, POINT_TYPE); //$NON-NLS-1$
// 15. landuse
register(st, 11, "landuse", "allotments", LANDUSE, 1, POLYGON_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 11, "landuse", "basin", LANDUSE, 2, POLYGON_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 11, "landuse", "brownfield", LANDUSE, 3, POLYGON_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 11, "landuse", "cemetery", LANDUSE, 4, POLYGON_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "landuse", "grave_yard", LANDUSE, 4, POLYGON_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 11, "landuse", "commercial", LANDUSE, 5, POLYGON_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 11, "landuse", "construction", LANDUSE, 6, POLYGON_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 11, "landuse", "farm", LANDUSE, 7, POLYGON_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 11, "landuse", "farmland", LANDUSE, 7, POLYGON_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 11, "landuse", "farmyard", LANDUSE, 9, POLYGON_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 8, "landuse", "forest", LANDUSE, 10, POLYGON_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "landuse", "garages", LANDUSE, 11, POLYGON_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 11, "landuse", "grass", LANDUSE, 12, POLYGON_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 11, "landuse", "greenfield", LANDUSE, 13, POLYGON_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 11, "landuse", "greenhouse_horticulture", LANDUSE, 14, POLYGON_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 11, "landuse", "industrial", LANDUSE, 15, POLYGON_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 11, "landuse", "landfill", LANDUSE, 16, POLYGON_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 11, "landuse", "meadow", LANDUSE, 17, POLYGON_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 10, "landuse", "military", LANDUSE, 18, POLYGON_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 11, "landuse", "orchard", LANDUSE, 19, POLYGON_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 11, "landuse", "railway", LANDUSE, 20, POLYGON_TYPE); //$NON-NLS-1$ //$NON-NLS-2$]
register(st, 11, "landuse", "recreation_ground", LANDUSE, 21, POLYGON_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 11, "landuse", "conservation", LANDUSE, 21, POLYGON_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 11, "landuse", "village_green", LANDUSE, 21, POLYGON_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 7, "landuse", "reservoir", LANDUSE, 22, POLYGON_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 7, "landuse", "water", LANDUSE, 22, POLYGON_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 11, "landuse", "residential", LANDUSE, 23, POLYGON_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 11, "landuse", "retail", LANDUSE, 24, POLYGON_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 11, "landuse", "salt_pond", LANDUSE, 25, POLYGON_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 11, "landuse", "quarry", LANDUSE, 26, POLYGON_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 11, "landuse", "vineyard", LANDUSE, 27, POLYGON_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 11, "landuse", "field", LANDUSE, 28, POLYGON_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 11, "natural", "field", LANDUSE, 28, POLYGON_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
// 16. military
register(st, "military", "airfield", MILITARY, 1, POLYGON_WITH_CENTER_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "military", "bunker", MILITARY, 2, POLYGON_WITH_CENTER_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "military", "barracks", MILITARY, 3, POLYGON_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "military", "danger_area", MILITARY, 4, POLYGON_WITH_CENTER_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "military", "range", MILITARY, 5, POLYGON_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "military", "naval_base", MILITARY, 6, POLYGON_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "military", null, MILITARY, 7, POLYGON_TYPE, POINT_TYPE); //$NON-NLS-1$
// 17. natural
register(st, 5, "natural", "coastline", NATURAL, 5, POLYGON_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "natural", "bay", NATURAL, 1, POLYGON_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 12, "natural", "beach", NATURAL, 2, POLYGON_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 13, "natural", "cave_entrance", NATURAL, 3, POLYGON_WITH_CENTER_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "natural", "cliff", NATURAL, 4, POINT_TYPE, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "natural", "fell", NATURAL, 6, POLYGON_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 7, "natural", "glacier", NATURAL, 7, POLYGON_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 13, "natural", "heath", NATURAL, 8, POLYGON_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 13,"natural", "land", NATURAL, 9, POLYGON_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 13, "natural", "marsh", NATURAL, 11, POLYGON_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 13, "natural", "mud", NATURAL, 12, POLYGON_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 12, "natural", "peak", NATURAL, 13, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "natural", "sand", NATURAL, 14, POLYGON_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "natural", "scree", NATURAL, 15, POLYGON_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 13, "natural", "scrub", NATURAL, 16, POLYGON_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "natural", "spring", NATURAL, 17, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "natural", "stone", NATURAL, 18, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "natural", "tree", NATURAL, 19, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 11, "natural", "volcano", NATURAL, 20, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 8, "natural", "water", NATURAL, 21, POLYGON_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 8, "natural", "lake", NATURAL, 21, POLYGON_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 13, "natural", "wetland", NATURAL, 22, POLYGON_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 8, "natural", "wood", NATURAL, 23, POLYGON_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 8, "landuse", "wood", NATURAL, 23, POLYGON_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
// for poi purpose
register(st, "natural", null, NATURAL, 31, POLYGON_TYPE, POINT_TYPE); //$NON-NLS-1$
// 18. amenity sustenance
registerAsBuilding(st, "amenity", "restaurant", AMENITY_SUSTENANCE, 1); //$NON-NLS-1$ //$NON-NLS-2$
registerAsBuilding(st, "amenity", "cafe", AMENITY_SUSTENANCE, 2); //$NON-NLS-1$ //$NON-NLS-2$
registerAsBuilding(st, "amenity", "food_court", AMENITY_SUSTENANCE, 3); //$NON-NLS-1$ //$NON-NLS-2$
registerAsBuilding(st, "amenity", "fast_food", AMENITY_SUSTENANCE, 4); //$NON-NLS-1$ //$NON-NLS-2$
registerAsBuilding(st, "amenity", "pub", AMENITY_SUSTENANCE, 5); //$NON-NLS-1$ //$NON-NLS-2$
registerAsBuilding(st, "amenity", "bar", AMENITY_SUSTENANCE, 6); //$NON-NLS-1$ //$NON-NLS-2$
registerAsBuilding(st, "amenity", "biergarten", AMENITY_SUSTENANCE, 7); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "amenity", "drinking_water", AMENITY_SUSTENANCE, 8, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "amenity", "bbq", AMENITY_SUSTENANCE, 9, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
// 19. amenity education
register(st, "amenity", "kindergarten", AMENITY_EDUCATION, 1, POINT_TYPE, POLYGON_WITH_CENTER_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "amenity", "school", AMENITY_EDUCATION, 2, POINT_TYPE, POLYGON_WITH_CENTER_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "amenity", "college", AMENITY_EDUCATION, 3, POINT_TYPE, POLYGON_WITH_CENTER_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "amenity", "library", AMENITY_EDUCATION, 4, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "amenity", "university", AMENITY_EDUCATION, 5, POINT_TYPE, POLYGON_WITH_CENTER_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
// 20. amenity transportation
register(st, "amenity", "parking", AMENITY_TRANSPORTATION, SUBTYPE_PARKING, //$NON-NLS-1$ //$NON-NLS-2$
POLYGON_WITH_CENTER_TYPE, POINT_TYPE);
register(st, "amenity", "bicycle_parking", AMENITY_TRANSPORTATION, 2, //$NON-NLS-1$ //$NON-NLS-2$
POLYGON_WITH_CENTER_TYPE, POINT_TYPE);
register(st, 12, "amenity", "ferry_terminal", AMENITY_TRANSPORTATION, 3, POLYGON_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 13, "amenity", "fuel", AMENITY_TRANSPORTATION, 4, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
// do not register small objects as area
register(st, "amenity", "taxi", AMENITY_TRANSPORTATION, 16, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "amenity", "bicycle_rental", AMENITY_TRANSPORTATION, 17, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 13, "amenity", "bus_station", AMENITY_TRANSPORTATION, 18, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "amenity", "car_rental", AMENITY_TRANSPORTATION, 19, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "amenity", "car_sharing", AMENITY_TRANSPORTATION, 20, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "amenity", "car_wash", AMENITY_TRANSPORTATION, 21, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "amenity", "grit_bin", AMENITY_TRANSPORTATION, 22, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
// 21. amenity finance
register(st, "amenity", "atm", AMENITY_FINANCE, 1, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
registerAsBuilding(st, "amenity", "bank", AMENITY_FINANCE, 2); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "amenity", "bureau_de_change", AMENITY_FINANCE, 3, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
// 22. amenity healthcare
registerAsBuilding(st, "amenity", "pharmacy", AMENITY_HEALTHCARE, 1); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "amenity", "hospital", AMENITY_HEALTHCARE, 2, POLYGON_WITH_CENTER_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "amenity", "baby_hatch", AMENITY_HEALTHCARE, 3, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "amenity", "dentist", AMENITY_HEALTHCARE, 4, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "amenity", "doctors", AMENITY_HEALTHCARE, 5, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "amenity", "veterinary", AMENITY_HEALTHCARE, 6, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "amenity", "first_aid", AMENITY_HEALTHCARE, 7, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
// 23. amenity entertainment
register(st, "amenity", "arts_centre", AMENITY_ENTERTAINMENT, 2, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "amenity", "cinema", AMENITY_ENTERTAINMENT, 3, POLYGON_WITH_CENTER_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "amenity", "community_centre", AMENITY_ENTERTAINMENT, 4, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "amenity", "social_centre", AMENITY_ENTERTAINMENT, 5, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
registerAsBuilding(st, "amenity", "nightclub", AMENITY_ENTERTAINMENT, 6); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "amenity", "stripclub", AMENITY_ENTERTAINMENT, 7, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "amenity", "studio", AMENITY_ENTERTAINMENT, 8, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
registerAsBuilding(st, "amenity", "theatre", AMENITY_ENTERTAINMENT, 9); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "amenity", "sauna", AMENITY_ENTERTAINMENT, 10, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
registerAsBuilding(st, "amenity", "brothel", AMENITY_ENTERTAINMENT, 11); //$NON-NLS-1$ //$NON-NLS-2$
// 24. amenity others
register(st, "amenity", "marketplace", AMENITY_OTHER, 1, POINT_TYPE, POLYGON_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
registerAsBuilding(st, "amenity", "courthouse", AMENITY_OTHER, 5); //$NON-NLS-1$ //$NON-NLS-2$
registerAsBuilding(st, "amenity", "crematorium", AMENITY_OTHER, 6); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "amenity", "embassy", AMENITY_OTHER, 7, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "amenity", "grave_yard", AMENITY_OTHER, 8, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "amenity", "hunting_stand", AMENITY_OTHER, 9, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "amenity", "police", AMENITY_OTHER, 10, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "amenity", "post_box", AMENITY_OTHER, 11, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
registerAsBuilding(st, "amenity", "post_office", AMENITY_OTHER, 12); //$NON-NLS-1$ //$NON-NLS-2$
// do not mark as polygon when it is unknown how to render area
register(st, "amenity", "prison", AMENITY_OTHER, 13, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "amenity", "public_building", AMENITY_OTHER, 14, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "amenity", "recycling", AMENITY_OTHER, 15, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "amenity", "shelter", AMENITY_OTHER, 16, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "amenity", "telephone", AMENITY_OTHER, 17, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "amenity", "toilets", AMENITY_OTHER, 18, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
registerAsBuilding(st, "amenity", "townhall", AMENITY_OTHER, 19); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "amenity", "vending_machine", AMENITY_OTHER, 20, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "amenity", "waste_basket", AMENITY_OTHER, 21, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "amenity", "waste_disposal", AMENITY_OTHER, 22, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "amenity", "fountain", AMENITY_OTHER, 23, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "amenity", "bench", AMENITY_OTHER, 24, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "amenity", "clock", AMENITY_OTHER, 25, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "amenity", "place_of_worship", AMENITY_OTHER, 26, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
// "amenity", "place_of_worship"
register(st, "amenity", null, AMENITY_OTHER, 30, POINT_TYPE); //$NON-NLS-1$
// 25. administrative
register(st, 5, "place", "continent", ADMINISTRATIVE, 41, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 5, "place", "country", ADMINISTRATIVE, 42, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 5, "place", "state", ADMINISTRATIVE, 43, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 5, "place", "region", ADMINISTRATIVE, 44, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 5, "place", "county", ADMINISTRATIVE, 45, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 6, "place", "city", ADMINISTRATIVE, 6, POINT_TYPE, POLYGON_WITH_CENTER_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 7, "place", "town", ADMINISTRATIVE, 7, POINT_TYPE, POLYGON_WITH_CENTER_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 10, "place", "village", ADMINISTRATIVE, 8, POINT_TYPE, POLYGON_WITH_CENTER_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 10, "place", "hamlet", ADMINISTRATIVE, 9, POINT_TYPE, POLYGON_WITH_CENTER_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 10, "place", "suburb", ADMINISTRATIVE, 10, POINT_TYPE, POLYGON_WITH_CENTER_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 10, "place", "locality", ADMINISTRATIVE, 11, POINT_TYPE, POLYGON_WITH_CENTER_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 10, "place", "island", ADMINISTRATIVE, 12, POINT_TYPE, POLYGON_WITH_CENTER_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
// register(st, "boundary", "administrative", ADMINISTRATIVE, 15, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
//"boundary", "administrative"
register(st, "admin_level", "1", ADMINISTRATIVE, 21, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 5, "admin_level", "2", ADMINISTRATIVE, 22, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 5, "admin_level", "3", ADMINISTRATIVE, 23, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 5, "admin_level", "4", ADMINISTRATIVE, 24, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 6, "admin_level", "5", ADMINISTRATIVE, 25, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 6, "admin_level", "6", ADMINISTRATIVE, 26, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 6, "admin_level", "7", ADMINISTRATIVE, 27, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 10, "admin_level", "8", ADMINISTRATIVE, 28, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 11, "admin_level", "9", ADMINISTRATIVE, 29, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 12, "admin_level", "10", ADMINISTRATIVE, 30, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 7, "boundary", "civil", ADMINISTRATIVE, 16, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 7, "boundary", "political", ADMINISTRATIVE, 17, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 7, "boundary", "maritime", ADMINISTRATIVE, 18, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 7, "boundary", "national_park", ADMINISTRATIVE, 19, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, 7, "boundary", "protected_area", ADMINISTRATIVE, 20, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "addr:housenumber", null, ADMINISTRATIVE, 33, POINT_TYPE); //$NON-NLS-1$
// 27. sport
register(st, "sport", "9pin", SPORT, 1, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "sport", "10pin", SPORT, 2, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "sport", "archery", SPORT, 3, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "sport", "athletics", SPORT, 4, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "sport", "australian_football", SPORT, 5, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "sport", "baseball", SPORT, 6, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "sport", "basketball", SPORT, 7, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "sport", "beachvolleyball", SPORT, 8, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "sport", "boules", SPORT, 9, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "sport", "bowls", SPORT, 10, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "sport", "canoe", SPORT, 11, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "sport", "chess", SPORT, 12, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "sport", "climbing", SPORT, 13, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "sport", "cricket", SPORT, 14, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "sport", "cricket_nets", SPORT, 15, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "sport", "croquet", SPORT, 16, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "sport", "cycling", SPORT, 17, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "sport", "diving", SPORT, 18, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "sport", "dog_racing", SPORT, 19, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "sport", "equestrian", SPORT, 20, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "sport", "football", SPORT, 21, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "sport", "golf", SPORT, 22, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "sport", "gymnastics", SPORT, 23, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "sport", "hockey", SPORT, 24, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "sport", "horse_racing", SPORT, 25, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "sport", "ice_stock", SPORT, 26, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "sport", "korfball", SPORT, 27, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "sport", "motor", SPORT, 28, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "sport", "multi", SPORT, 29, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "sport", "orienteering", SPORT, 30, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "sport", "paddle_tennis", SPORT, 31, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "sport", "paragliding", SPORT, 32, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "sport", "pelota", SPORT, 33, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "sport", "racquet", SPORT, 34, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "sport", "rowing", SPORT, 35, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "sport", "rugby", SPORT, 36, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "sport", "shooting", SPORT, 37, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "sport", "skating", SPORT, 38, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "sport", "skateboard", SPORT, 39, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "sport", "skiing", SPORT, 40, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "sport", "soccer", SPORT, 41, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "sport", "swimming", SPORT, 42, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "sport", "table_tennis", SPORT, 43, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "sport", "team_handball", SPORT, 44, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "sport", "tennis", SPORT, 45, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "sport", "toboggan", SPORT, 46, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "sport", "volleyball", SPORT, 47, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
register(st, "sport", null, SPORT, 50, POINT_TYPE); //$NON-NLS-1$
private static void stepSubtype(int st, int minZoom, String tag, String val, int type, int subtype, int polygonRule, int polylineRule,
int pointRule) {
if(st == INIT_RULE_TYPES){
MapRulType rtype = types.get(tag);
if(rtype == null){
rtype = new MapRulType(tag);
types.put(tag, rtype);
}
rtype.registerType(minZoom, val, pointRule, polylineRule, polygonRule, type, subtype);
} else if(st == INIT_AMENITY_MAP){
if(pointRule == POINT_TYPE || polygonRule == POLYGON_WITH_CENTER_TYPE || polygonRule == POLYGON_TYPE){
registerAmenity(tag, val, type, subtype);
}
} else if(st == INIT_TYPE_ZOOM){
if(minZoom < 15){
objectsToMinZoom.put((((subtype) << 5) | type) << 2, (byte) minZoom);
}
}
}
// public static void main(String[] args) {
public static void main(String[] args) {
// Map<String, Map<String, AmenityType>> amenityMap = getAmenityTagValToTypeMap();
// for(String s : amenityMap.keySet()){
// System.out.println(s + " - " + amenityMap.get(s));
@ -1486,7 +901,8 @@ public class MapRenderingTypes {
// }
// }
// System.out.println(getAmenityNameToType());
// }
// long ts = System.currentTimeMillis();
}
}

View file

@ -0,0 +1,621 @@
<osmand_types>
<!-- 3 different types for polygon="true" that object will be rendered as polygon, polyline ="true" as line, point ="true" - as point -->
<!-- You can combine any 3 types. -->
<!-- building="true" means that object will be rendered as polygon (default building) + center point icon -->
<!-- Restrictions of types format. -->
<!-- 1) 31 (5 bytes) maximum number of different types -->
<!-- 2) In each type only 31 (5 bytes) different polyline and polygon (in sum) subtypes available. -->
<!-- 3) In each type only 127 (7 bytes) all different subtypes available -->
<!-- Try to not change id of types and subtypes, some of the constants are hardcoded (for poi categorization and rendering order). -->
<type name="highway" id="1">
<subtype id="2" polyline="true" tag="highway" value="motorway" maxzoom="6" />
<subtype id="2" polyline="true" tag="highway" value="motorway_link" maxzoom="10" />
<subtype id="1" polyline="true" tag="highway" value="trunk" maxzoom="6" />
<subtype id="1" polyline="true" tag="highway" value="trunk_link" maxzoom="10" />
<subtype id="3" polyline="true" tag="highway" value="primary" maxzoom="7" />
<subtype id="3" polyline="true" tag="highway" value="primary_link" maxzoom="10" />
<subtype id="4" polyline="true" tag="highway" value="secondary" maxzoom="10" />
<subtype id="4" polyline="true" tag="highway" value="secondary_link" maxzoom="10" />
<subtype id="5" polyline="true" tag="highway" value="tertiary" maxzoom="13" />
<subtype id="6" polygon="true" polyline="true" tag="highway" value="residential" maxzoom="14" />
<subtype id="7" polygon="true" polyline="true" tag="highway" value="service" maxzoom="15" />
<subtype id="8" polyline="true" tag="highway" value="unclassified" maxzoom="14" />
<subtype id="8" polyline="true" tag="highway" value="road" maxzoom="14" />
<subtype id="9" polyline="true" tag="highway" value="track" maxzoom="13" />
<subtype id="10" polyline="true" tag="highway" value="path" maxzoom="14" />
<subtype id="11" polyline="true" tag="highway" value="living_street" maxzoom="15" />
<subtype id="16" polygon="true" polyline="true" tag="highway" value="pedestrian" maxzoom="15" />
<subtype id="17" polyline="true" tag="highway" value="cycleway" maxzoom="14" />
<subtype id="18" polyline="true" tag="highway" value="byway" maxzoom="14" />
<subtype id="19" polyline="true" tag="highway" value="footway" maxzoom="15" />
<subtype id="20" polyline="true" tag="highway" value="steps" maxzoom="15" />
<subtype id="21" polyline="true" tag="highway" value="bridleway" maxzoom="14" />
<subtype id="22" polygon="true" point="true" tag="highway" value="services" maxzoom="15" />
<!-- <subtype id="" polyline="true" tag="highway" value="bus_guideway" maxzoom="15" /> -->
<subtype id="23" polyline="true" point="true" tag="highway" value="ford" maxzoom="15" />
<subtype id="25" polyline="true" tag="highway" value="construction" maxzoom="15" />
<subtype id="26" polyline="true" tag="highway" value="proposed" maxzoom="15" />
<!-- POINT SUBTYPES -->
<subtype id="35" point="true" tag="highway" value="mini_roundabout" maxzoom="15" />
<subtype id="36" point="true" tag="highway" value="stop" maxzoom="15" />
<subtype id="37" point="true" tag="highway" value="give_way" maxzoom="15" />
<subtype id="38" point="true" tag="highway" value="traffic_signals" maxzoom="15" />
<subtype id="39" point="true" tag="highway" value="motorway_junction" maxzoom="15" />
<subtype id="40" point="true" tag="highway" value="bus_stop" maxzoom="15" />
<subtype id="41" point="true" tag="highway" value="platform" maxzoom="15" />
<subtype id="42" point="true" tag="highway" value="turning_circle" maxzoom="15" />
<subtype id="43" point="true" tag="highway" value="emergency_access_point" maxzoom="15" />
<subtype id="44" point="true" tag="highway" value="speed_camera" maxzoom="15" />
<subtype id="45" point="true" tag="highway" value="street_lamp" maxzoom="15" />
<subtype id="50" point="true" tag="traffic_calming" value="yes" maxzoom="15" />
<subtype id="51" point="true" tag="traffic_calming" value="bump" maxzoom="15" />
<subtype id="52" point="true" tag="traffic_calming" value="chicane" maxzoom="15" />
<subtype id="53" point="true" tag="traffic_calming" value="cushion" maxzoom="15" />
<subtype id="54" point="true" tag="traffic_calming" value="hump" maxzoom="15" />
<subtype id="55" point="true" tag="traffic_calming" value="rumble_strip" maxzoom="15" />
<subtype id="56" point="true" tag="traffic_calming" value="table" maxzoom="15" />
<subtype id="57" point="true" tag="traffic_calming" value="choker" maxzoom="15" />
<subtype id="58" point="true" tag="traffic_calming" maxzoom="15" />
</type>
<type id="2" name="barrier">
<subtype id="1" polyline="true" tag="barrier" value="hedge" maxzoom="15" />
<subtype id="1" polyline="true" tag="natural" value="hedge" maxzoom="15" />
<subtype id="2" polyline="true" tag="barrier" value="fence" maxzoom="15" />
<subtype id="2" polyline="true" tag="fenced" value="yes" maxzoom="15" />
<subtype id="3" polyline="true" tag="barrier" value="wall" maxzoom="15" />
<subtype id="1" polyline="true" tag="barrier" value="ditch" maxzoom="15" />
<subtype id="4" polyline="true" tag="barrier" value="retaining_wall" maxzoom="15" />
<subtype id="5" polyline="true" tag="barrier" value="city_wall" maxzoom="13" />
<subtype id="5" polyline="true" tag="historic" value="city_walls" maxzoom="13" />
<subtype id="6" point="true" polyline="true" tag="barrier" value="bollard" maxzoom="15" />
<subtype id="16" point="true" tag="barrier" value="cycle_barrier" maxzoom="15" />
<subtype id="17" point="true" tag="barrier" value="block" maxzoom="15" />
<subtype id="18" point="true" tag="barrier" value="cattle_grid" maxzoom="15" />
<subtype id="19" point="true" tag="barrier" value="toll_booth" maxzoom="15" />
<subtype id="20" point="true" tag="barrier" value="entrance" maxzoom="15" />
<subtype id="21" point="true" tag="barrier" value="gate" maxzoom="15" />
<subtype id="21" point="true" tag="highway" value="gate" maxzoom="15" />
<subtype id="22" point="true" tag="barrier" value="lift_gate" maxzoom="15" />
<subtype id="23" point="true" tag="barrier" value="stile" maxzoom="15" />
<subtype id="24" point="true" tag="barrier" value="horse_stile" maxzoom="15" />
<subtype id="25" point="true" tag="barrier" value="kissing_gate" maxzoom="15" />
<subtype id="26" point="true" tag="barrier" value="sally_port" maxzoom="15" />
<subtype id="27" point="true" tag="barrier" value="turnstile" maxzoom="15" />
<subtype id="28" point="true" tag="barrier" value="kent_carriage_gap" maxzoom="15" />
</type>
<type id="3" name="waterway">
<subtype id="1" polyline="true" tag="waterway" value="stream" maxzoom="13" />
<subtype id="3" polygon="true" tag="waterway" value="riverbank" maxzoom="9" />
<subtype id="2" polyline="true" tag="waterway" value="river" maxzoom="9" />
<subtype id="4" polyline="true" tag="waterway" value="canal" maxzoom="10" />
<subtype id="5" polyline="true" tag="waterway" value="ditch" maxzoom="15" />
<subtype id="6" polyline="true" tag="waterway" value="drain" maxzoom="15" />
<subtype id="7" point="true" polygon_center="true" tag="waterway" value="dock" maxzoom="13" />
<subtype id="8" point="true" tag="waterway" value="lock_gate" maxzoom="15" />
<subtype id="8" point="true" tag="waterway" value="lock" maxzoom="15" />
<subtype id="9" point="true" tag="waterway" value="turning_point" maxzoom="15" />
<subtype id="10" point="true" tag="waterway" value="boatyard" maxzoom="15" />
<subtype id="11" point="true" polyline="true" tag="waterway" value="weir" maxzoom="15" />
<subtype id="12" polyline="true" tag="waterway" value="dam" maxzoom="13" />
<subtype id="13" point="true" polygon_center="true" tag="waterway" value="mill_pond" maxzoom="13" />
</type>
<type id="4" name="railway">
<subtype id="1" polyline="true" tag="railway" value="rail" maxzoom="7" />
<subtype id="2" polyline="true" tag="railway" value="tram" maxzoom="13" />
<subtype id="3" polyline="true" tag="railway" value="light_rail" maxzoom="13" />
<subtype id="4" polyline="true" tag="railway" value="abandoned" maxzoom="15" />
<subtype id="5" polyline="true" tag="railway" value="disused" maxzoom="15" />
<subtype id="6" polyline="true" tag="railway" value="subway" maxzoom="13" />
<subtype id="7" polyline="true" tag="railway" value="preserved" maxzoom="13" />
<subtype id="8" polyline="true" tag="railway" value="narrow_gauge" maxzoom="15" />
<subtype id="9" polyline="true" tag="railway" value="construction" maxzoom="15" />
<subtype id="10" polyline="true" tag="railway" value="monorail" maxzoom="15" />
<subtype id="11" polyline="true" tag="railway" value="funicular" maxzoom="15" />
<subtype id="12" polyline="true" tag="railway" value="platform" maxzoom="15" />
<subtype id="13" point="true" polygon_center="true" tag="railway" value="station" maxzoom="12" />
<subtype id="14" point="true" tag="railway" value="turntable" maxzoom="15" />
<subtype id="22" point="true" tag="railway" value="halt" maxzoom="15" />
<subtype id="23" point="true" tag="railway" value="tram_stop" maxzoom="15" />
<subtype id="24" point="true" tag="railway" value="crossing" maxzoom="15" />
<subtype id="25" point="true" tag="railway" value="level_crossing" maxzoom="15" />
<subtype id="26" point="true" tag="railway" value="subway_entrance" maxzoom="15" />
<subtype id="27" point="true" tag="railway" value="buffer_stop" maxzoom="15" />
</type>
<type id="5" name="aeroway">
<subtype id="1" point="true" polygon_center="true" tag="aeroway" value="aerodrome" maxzoom="12" />
<subtype id="2" point="true" polygon_center="true" tag="aeroway" value="terminal" maxzoom="15" />
<subtype id="3" point="true" polygon_center="true" tag="aeroway" value="helipad" maxzoom="12" />
<subtype id="7" polyline="true" tag="aeroway" value="runway" maxzoom="12" />
<subtype id="8" polyline="true" tag="aeroway" value="taxiway" maxzoom="12" />
<subtype id="9" polygon="true" tag="aeroway" value="apron" maxzoom="12" />
<subtype id="10" point="true" polygon_center="true" tag="aeroway" value="airport" maxzoom="12" />
<subtype id="12" point="true" tag="aeroway" value="gate" maxzoom="15" />
<subtype id="13" point="true" tag="aeroway" value="windsock" maxzoom="15" />
</type>
<type id="6" name="aerialway">
<subtype id="1" polyline="true" tag="aerialway" value="cable_car" maxzoom="13" />
<subtype id="2" polyline="true" tag="aerialway" value="gondola" maxzoom="13" />
<subtype id="3" polyline="true" tag="aerialway" value="chair_lift" maxzoom="13" />
<subtype id="4" polyline="true" tag="aerialway" value="mixed_lift" maxzoom="13" />
<subtype id="5" polyline="true" tag="aerialway" value="drag_lift" maxzoom="13" />
<subtype id="6" polyline="true" tag="aerialway" value="goods" maxzoom="15" />
<subtype id="7" building="true" tag="aerialway" value="station" maxzoom="15" />
<subtype id="8" point="true" tag="aerialway" value="pylon" maxzoom="15" />
<subtype id="9" polyline="true" tag="aerialway" value="goods" maxzoom="15" />
</type>
<type id="7" name="power">
<subtype id="1" point="true" tag="power" value="tower" maxzoom="13" />
<subtype id="2" point="true" tag="power" value="pole" maxzoom="15" />
<subtype id="3" polyline="true" tag="power" value="line" maxzoom="13" />
<subtype id="4" polyline="true" tag="power" value="minor_line" maxzoom="15" />
<subtype id="5" point="true" polygon="true" tag="power" value="station" maxzoom="1" />
<subtype id="6" point="true" polygon="true" tag="power" value="sub_station" maxzoom="1" />
<subtype id="7" point="true" tag="power" value="generator" maxzoom="15" />
<subtype id="8" point="true" tag="power" value="cable_distribution_cabinet" maxzoom="15" />
</type>
<type id="8" name="man_made">
<subtype id="1" polygon="true" tag="building" value="yes" maxzoom="15" />
<subtype id="1" polygon="true" tag="building" maxzoom="15" />
<subtype id="2" point="true" polygon="true" tag="man_made" value="wastewater_plant" maxzoom="15" />
<subtype id="3" building="true" tag="man_made" value="water_works" maxzoom="15" />
<subtype id="4" point="true" polygon="true" tag="man_made" value="works" maxzoom="15" />
<subtype id="5" polygon="true" tag="building" value="garages" maxzoom="15" />
<subtype id="7" polyline="true" tag="man_made" value="cutline" maxzoom="15" />
<subtype id="8" polyline="true" tag="man_made" value="groyne" maxzoom="13" />
<subtype id="8" polyline="true" tag="man_made" value="breakwater" maxzoom="13" />
<subtype id="9" polyline="true" tag="man_made" value="pier" maxzoom="13" />
<subtype id="10" polyline="true" tag="man_made" value="pipeline" maxzoom="15" />
<subtype id="11" polygon="true" tag="man_made" value="reservoir_covered" maxzoom="15" />
<subtype id="12" polyline="true" tag="man_made" value="embankment" maxzoom="15" />
<subtype id="15" point="true" tag="man_made" value="beacon" maxzoom="15" />
<subtype id="16" point="true" tag="man_made" value="crane" maxzoom="15" />
<subtype id="17" point="true" tag="man_made" value="lighthouse" maxzoom="15" />
<subtype id="18" point="true" tag="man_made" value="mineshaft" maxzoom="15" />
<subtype id="19" point="true" tag="man_made" value="adit" maxzoom="15" />
<subtype id="20" point="true" tag="man_made" value="petroleum_well" maxzoom="15" />
<subtype id="21" point="true" tag="man_made" value="surveillance" maxzoom="15" />
<subtype id="22" point="true" tag="man_made" value="survey_point" maxzoom="15" />
<subtype id="23" point="true" tag="man_made" value="tower" maxzoom="15" />
<subtype id="24" point="true" tag="man_made" value="watermill" maxzoom="15" />
<subtype id="25" point="true" tag="man_made" value="water_tower" maxzoom="15" />
<subtype id="26" point="true" tag="man_made" value="water_well" maxzoom="15" />
<subtype id="27" point="true" tag="man_made" value="windmill" maxzoom="15" />
</type>
<type id="9" name="leisure">
<subtype id="1" point="true" polygon="true" tag="leisure" value="dog_park" maxzoom="15" />
<subtype id="2" point="true" polygon="true" tag="leisure" value="sports_centre" maxzoom="15" />
<subtype id="3" point="true" polygon="true" tag="leisure" value="golf_course" maxzoom="15" />
<subtype id="4" point="true" polygon="true" tag="leisure" value="stadium" maxzoom="15" />
<subtype id="5" polyline="true" polygon="true" tag="leisure" value="track" maxzoom="13" />
<subtype id="6" point="true" polygon="true" tag="leisure" value="pitch" maxzoom="15" />
<subtype id="7" point="true" polygon="true" tag="leisure" value="water_park" maxzoom="15" />
<subtype id="8" point="true" polyline="true" tag="leisure" value="marina" maxzoom="13" />
<subtype id="9" point="true" polygon="true" tag="leisure" value="slipway" maxzoom="15" />
<subtype id="10" point="true" polygon="true" tag="leisure" value="fishing" maxzoom="15" />
<subtype id="11" point="true" polygon="true" tag="leisure" value="nature_reserve" maxzoom="9" />
<subtype id="12" point="true" polygon="true" tag="natural" value="park" maxzoom="13" />
<subtype id="12" point="true" polygon="true" tag="leisure" value="park" maxzoom="13" />
<subtype id="12" point="true" polygon="true" tag="leisure" value="recreation_ground" maxzoom="13" />
<subtype id="13" point="true" polygon="true" tag="leisure" value="playground" maxzoom="15" />
<subtype id="14" point="true" polygon="true" tag="leisure" value="garden" maxzoom="13" />
<subtype id="15" point="true" polygon="true" tag="leisure" value="common" maxzoom="13" />
<subtype id="16" point="true" polygon="true" tag="leisure" value="ice_rink" maxzoom="15" />
<subtype id="17" point="true" polygon="true" tag="leisure" value="miniature_golf" maxzoom="15" />
<subtype id="18" point="true" polygon="true" tag="leisure" value="dance" maxzoom="15" />
</type>
<type id="10" name="office">
<subtype id="5" point="true" tag="office" value="accountant" maxzoom="15" />
<subtype id="6" point="true" tag="office" value="architect" maxzoom="15" />
<subtype id="7" point="true" tag="office" value="company" maxzoom="15" />
<subtype id="8" point="true" tag="office" value="employment_agency" maxzoom="15" />
<subtype id="9" point="true" tag="office" value="estate_agent" maxzoom="15" />
<subtype id="10" point="true" tag="office" value="government" maxzoom="15" />
<subtype id="11" point="true" tag="office" value="insurance" maxzoom="15" />
<subtype id="12" point="true" tag="office" value="it" maxzoom="15" />
<subtype id="13" point="true" tag="office" value="lawyer" maxzoom="15" />
<subtype id="14" point="true" tag="office" value="ngo" maxzoom="15" />
<subtype id="15" point="true" tag="office" value="quango" maxzoom="15" />
<subtype id="16" point="true" tag="office" value="research" maxzoom="15" />
<subtype id="17" point="true" tag="office" value="telecommunication" maxzoom="15" />
<subtype id="18" point="true" tag="office" value="travel_agent" maxzoom="15" />
<subtype id="19" point="true" tag="amenity" value="architect_office" maxzoom="15" />
</type>
<type id="11" name="shop">
<subtype id="41" point="true" tag="shop" value="alcohol" maxzoom="15" />
<subtype id="42" point="true" tag="shop" value="bakery" maxzoom="15" />
<subtype id="43" point="true" tag="shop" value="beauty" maxzoom="15" />
<subtype id="44" point="true" tag="shop" value="beverages" maxzoom="15" />
<subtype id="45" point="true" tag="shop" value="bicycle" maxzoom="15" />
<subtype id="46" point="true" tag="shop" value="books" maxzoom="15" />
<subtype id="47" point="true" tag="shop" value="boutique" maxzoom="15" />
<subtype id="48" point="true" tag="shop" value="butcher" maxzoom="15" />
<subtype id="49" point="true" tag="shop" value="car" maxzoom="15" />
<subtype id="50" point="true" tag="shop" value="car_repair" maxzoom="15" />
<subtype id="11" point="true" tag="shop" value="charity" maxzoom="15" />
<subtype id="12" point="true" tag="shop" value="chemist" maxzoom="15" />
<subtype id="13" point="true" tag="shop" value="clothes" maxzoom="15" />
<subtype id="13" point="true" tag="shop" value="fashion" maxzoom="15" />
<subtype id="14" point="true" tag="shop" value="computer" maxzoom="15" />
<subtype id="15" point="true" tag="shop" value="confectionery" maxzoom="15" />
<subtype id="16" point="true" tag="shop" value="convenience" maxzoom="15" />
<subtype id="17" point="true" tag="shop" value="department_store" maxzoom="15" />
<subtype id="18" point="true" tag="shop" value="dry_cleaning" maxzoom="15" />
<subtype id="19" point="true" tag="shop" value="doityourself" maxzoom="15" />
<subtype id="20" point="true" tag="shop" value="electronics" maxzoom="15" />
<subtype id="21" point="true" tag="shop" value="fabrics" maxzoom="15" />
<subtype id="22" point="true" tag="shop" value="farm" maxzoom="15" />
<subtype id="23" point="true" tag="shop" value="florist" maxzoom="15" />
<subtype id="24" point="true" tag="shop" value="funeral_directors" maxzoom="15" />
<subtype id="25" point="true" tag="shop" value="furniture" maxzoom="15" />
<subtype id="26" point="true" tag="shop" value="garden_centre" maxzoom="15" />
<subtype id="27" point="true" tag="shop" value="general" maxzoom="15" />
<subtype id="28" point="true" tag="shop" value="gift" maxzoom="15" />
<subtype id="29" point="true" tag="shop" value="glaziery" maxzoom="15" />
<subtype id="30" point="true" tag="shop" value="greengrocer" maxzoom="15" />
<subtype id="31" point="true" tag="shop" value="hairdresser" maxzoom="15" />
<subtype id="32" point="true" tag="shop" value="hardware" maxzoom="15" />
<subtype id="33" point="true" tag="shop" value="hearing_aids" maxzoom="15" />
<subtype id="34" point="true" tag="shop" value="hifi" maxzoom="15" />
<subtype id="35" point="true" tag="shop" value="ice_cream" maxzoom="15" />
<subtype id="40" point="true" tag="shop" value="jewelry" maxzoom="15" />
<subtype id="51" point="true" tag="shop" value="kiosk" maxzoom="15" />
<subtype id="52" point="true" tag="shop" value="laundry" maxzoom="15" />
<subtype id="53" point="true" tag="shop" value="mall" maxzoom="15" />
<subtype id="54" point="true" tag="shop" value="massage" maxzoom="15" />
<subtype id="55" point="true" tag="shop" value="money_lender" maxzoom="15" />
<subtype id="56" point="true" tag="shop" value="motorcycle" maxzoom="15" />
<subtype id="57" point="true" tag="shop" value="newsagent" maxzoom="15" />
<subtype id="58" point="true" tag="shop" value="optician" maxzoom="15" />
<subtype id="59" point="true" tag="shop" value="organic" maxzoom="15" />
<subtype id="60" point="true" tag="shop" value="outdoor" maxzoom="15" />
<subtype id="61" point="true" tag="shop" value="pawnbroker" maxzoom="15" />
<subtype id="62" point="true" tag="shop" value="second_hand" maxzoom="15" />
<subtype id="63" point="true" tag="shop" value="sports" maxzoom="15" />
<subtype id="64" point="true" tag="shop" value="stationery" maxzoom="15" />
<subtype id="65" point="true" tag="shop" value="supermarket" maxzoom="15" />
<subtype id="66" point="true" tag="shop" value="shoes" maxzoom="15" />
<subtype id="67" point="true" tag="shop" value="tattoo" maxzoom="15" />
<subtype id="68" point="true" tag="shop" value="toys" maxzoom="15" />
<subtype id="69" point="true" tag="shop" value="travel_agency" maxzoom="15" />
<subtype id="70" point="true" tag="shop" value="variety_store" maxzoom="15" />
<subtype id="71" point="true" tag="shop" value="video" maxzoom="15" />
<subtype id="75" point="true" tag="shop" maxzoom="15" />
</type>
<type id="12" name="emergency">
<subtype id="1" building="true" tag="emergency" value="ambulance_station" maxzoom="15" />
<subtype id="2" building="true" tag="emergency" value="ses_station" maxzoom="15" />
<subtype id="3" point="true" tag="emergency" value="fire_extinguisher" maxzoom="15" />
<subtype id="4" point="true" tag="emergency" value="fire_flapper" maxzoom="15" />
<subtype id="5" point="true" tag="emergency" value="fire_hose" maxzoom="15" />
<subtype id="6" point="true" tag="emergency" value="fire_hydrant" maxzoom="15" />
<subtype id="7" point="true" tag="emergency" value="phone" maxzoom="15" />
<subtype id="9" point="true" tag="emergency" value="siren" maxzoom="15" />
<subtype id="10" point="true" tag="amenity" value="fire_station" maxzoom="15" />
</type>
<type id="13" name="tourism">
<subtype id="2" point="true" polygon="true" tag="tourism" value="attraction" maxzoom="13" />
<subtype id="3" point="true" polygon="true" tag="tourism" value="artwork" maxzoom="15" />
<subtype id="4" point="true" polygon="true" tag="tourism" value="camp_site" maxzoom="15" />
<subtype id="5" point="true" polygon="true" tag="tourism" value="caravan_site" maxzoom="15" />
<subtype id="6" point="true" polygon="true" tag="tourism" value="picnic_site" maxzoom="15" />
<subtype id="7" point="true" polygon="true" tag="tourism" value="theme_park" maxzoom="13" />
<subtype id="8" point="true" polygon="true" tag="tourism" value="zoo" maxzoom="15" />
<subtype id="9" building="true" tag="tourism" value="alpine_hut" maxzoom="15" />
<subtype id="10" building="true" tag="tourism" value="chalet" maxzoom="15" />
<subtype id="11" building="true" tag="tourism" value="guest_house" maxzoom="15" />
<subtype id="12" building="true" tag="tourism" value="hostel" maxzoom="15" />
<subtype id="13" building="true" tag="tourism" value="hotel" maxzoom="15" />
<subtype id="14" building="true" tag="tourism" value="motel" maxzoom="15" />
<subtype id="15" building="true" tag="tourism" value="museum" maxzoom="15" />
<subtype id="16" point="true" tag="tourism" value="information" maxzoom="15" />
<subtype id="17" point="true" tag="tourism" value="viewpoint" maxzoom="15" />
<subtype id="18" point="true" tag="tourism" maxzoom="15" />
</type>
<type id="14" name="historic">
<subtype id="1" point="true" polygon="true" tag="historic" value="archaeological_site" maxzoom="15" />
<subtype id="2" point="true" polygon="true" tag="historic" value="battlefield" maxzoom="15" />
<subtype id="4" point="true" polygon="true" tag="historic" value="castle" maxzoom="15" />
<subtype id="5" point="true" polygon="true" tag="historic" value="fort" maxzoom="15" />
<subtype id="8" point="true" polygon="true" tag="historic" value="ruins" maxzoom="15" />
<subtype id="7" building="true" tag="historic" value="monument" maxzoom="15" />
<subtype id="3" point="true" tag="historic" value="boundary_stone" maxzoom="15" />
<subtype id="6" point="true" tag="historic" value="memorial" maxzoom="15" />
<subtype id="9" point="true" tag="historic" value="wayside_cross" maxzoom="15" />
<subtype id="10" point="true" tag="historic" value="wayside_shrine" maxzoom="15" />
<subtype id="11" point="true" tag="historic" value="wreck" maxzoom="15" />
<subtype id="12" point="true" tag="historic" maxzoom="15" />
</type>
<type id="15" name="landuse">
<subtype id="1" polygon="true" tag="landuse" value="allotments" maxzoom="11" />
<subtype id="2" point="true" polygon="true" tag="landuse" value="basin" maxzoom="11" />
<subtype id="3" point="true" polygon="true" tag="landuse" value="brownfield" maxzoom="11" />
<subtype id="4" polygon="true" tag="landuse" value="cemetery" maxzoom="11" />
<subtype id="4" polygon="true" tag="landuse" value="grave_yard" maxzoom="15" />
<subtype id="5" polygon="true" tag="landuse" value="commercial" maxzoom="11" />
<subtype id="6" point="true" polygon="true" tag="landuse" value="construction" maxzoom="11" />
<subtype id="7" polygon="true" tag="landuse" value="farm" maxzoom="11" />
<subtype id="7" polygon="true" tag="landuse" value="farmland" maxzoom="11" />
<subtype id="9" polygon="true" tag="landuse" value="farmyard" maxzoom="11" />
<subtype id="10" polygon="true" tag="landuse" value="forest" maxzoom="8" />
<subtype id="11" polygon="true" tag="landuse" value="garages" maxzoom="15" />
<subtype id="12" polygon="true" tag="landuse" value="grass" maxzoom="11" />
<subtype id="13" polygon="true" tag="landuse" value="greenfield" maxzoom="11" />
<subtype id="14" polygon="true" tag="landuse" value="greenhouse_horticulture" maxzoom="11" />
<subtype id="15" polygon="true" tag="landuse" value="industrial" maxzoom="11" />
<subtype id="16" polygon="true" tag="landuse" value="landfill" maxzoom="11" />
<subtype id="17" point="true" polygon="true" tag="landuse" value="meadow" maxzoom="11" />
<subtype id="18" polygon="true" tag="landuse" value="military" maxzoom="10" />
<subtype id="19" polygon="true" tag="landuse" value="orchard" maxzoom="11" />
<subtype id="20" polygon="true" tag="landuse" value="railway" maxzoom="11" />
<subtype id="21" polygon="true" tag="landuse" value="recreation_ground" maxzoom="11" />
<subtype id="21" polygon="true" tag="landuse" value="conservation" maxzoom="11" />
<subtype id="21" polygon="true" tag="landuse" value="village_green" maxzoom="11" />
<subtype id="22" point="true" polygon="true" tag="landuse" value="reservoir" maxzoom="7" />
<subtype id="22" point="true" polygon="true" tag="landuse" value="water" maxzoom="7" />
<subtype id="23" polygon="true" tag="landuse" value="residential" maxzoom="11" />
<subtype id="24" polygon="true" tag="landuse" value="retail" maxzoom="11" />
<subtype id="25" point="true" polygon="true" tag="landuse" value="salt_pond" maxzoom="11" />
<subtype id="26" point="true" polygon="true" tag="landuse" value="quarry" maxzoom="11" />
<subtype id="27" polygon="true" tag="landuse" value="vineyard" maxzoom="11" />
<subtype id="28" polygon="true" tag="landuse" value="field" maxzoom="11" />
<subtype id="28" polygon="true" tag="natural" value="field" maxzoom="11" />
</type>
<type id="16" name="military">
<subtype id="1" point="true" polygon_center="true" tag="military" value="airfield" maxzoom="15" />
<subtype id="2" point="true" polygon_center="true" tag="military" value="bunker" maxzoom="15" />
<subtype id="3" polygon="true" tag="military" value="barracks" maxzoom="15" />
<subtype id="4" point="true" polygon_center="true" tag="military" value="danger_area" maxzoom="15" />
<subtype id="5" point="true" polygon="true" tag="military" value="range" maxzoom="15" />
<subtype id="6" point="true" polygon="true" tag="military" value="naval_base" maxzoom="15" />
<subtype id="7" point="true" polygon="true" tag="military" maxzoom="15" />
</type>
<type id="17" name="natural">
<subtype id="5" polygon="true" tag="natural" value="coastline" maxzoom="5" />
<subtype id="1" point="true" polygon="true" tag="natural" value="bay" maxzoom="15" />
<subtype id="2" point="true" polygon="true" tag="natural" value="beach" maxzoom="12" />
<subtype id="3" point="true" polygon_center="true" tag="natural" value="cave_entrance" maxzoom="13" />
<subtype id="4" point="true" polyline="true" tag="natural" value="cliff" maxzoom="15" />
<subtype id="6" point="true" polygon="true" tag="natural" value="fell" maxzoom="15" />
<subtype id="7" point="true" polygon="true" tag="natural" value="glacier" maxzoom="7" />
<subtype id="8" point="true" polygon="true" tag="natural" value="heath" maxzoom="13" />
<subtype id="9" point="true" polygon="true" tag="natural" value="land" maxzoom="13" />
<subtype id="11" point="true" polygon="true" tag="natural" value="marsh" maxzoom="13" />
<subtype id="12" point="true" polygon="true" tag="natural" value="mud" maxzoom="13" />
<subtype id="13" point="true" tag="natural" value="peak" maxzoom="12" />
<subtype id="14" point="true" polygon="true" tag="natural" value="sand" maxzoom="15" />
<subtype id="15" point="true" polygon="true" tag="natural" value="scree" maxzoom="15" />
<subtype id="16" point="true" polygon="true" tag="natural" value="scrub" maxzoom="13" />
<subtype id="17" point="true" tag="natural" value="spring" maxzoom="15" />
<subtype id="18" point="true" tag="natural" value="stone" maxzoom="15" />
<subtype id="19" point="true" tag="natural" value="tree" maxzoom="15" />
<subtype id="20" point="true" tag="natural" value="volcano" maxzoom="11" />
<subtype id="21" point="true" polygon="true" tag="natural" value="water" maxzoom="8" />
<subtype id="21" point="true" polygon="true" tag="natural" value="lake" maxzoom="8" />
<subtype id="22" point="true" polygon="true" tag="natural" value="wetland" maxzoom="13" />
<subtype id="23" point="true" polygon="true" tag="natural" value="wood" maxzoom="8" />
<subtype id="23" point="true" polygon="true" tag="landuse" value="wood" maxzoom="8" />
<subtype id="31" point="true" polygon="true" tag="natural" maxzoom="15" />
</type>
<type id="18" name="sustenance">
<subtype id="1" building="true" tag="amenity" value="restaurant" maxzoom="15" />
<subtype id="2" building="true" tag="amenity" value="cafe" maxzoom="15" />
<subtype id="3" building="true" tag="amenity" value="food_court" maxzoom="15" />
<subtype id="4" building="true" tag="amenity" value="fast_food" maxzoom="15" />
<subtype id="5" building="true" tag="amenity" value="pub" maxzoom="15" />
<subtype id="6" building="true" tag="amenity" value="bar" maxzoom="15" />
<subtype id="7" building="true" tag="amenity" value="biergarten" maxzoom="15" />
<subtype id="8" point="true" tag="amenity" value="drinking_water" maxzoom="15" />
<subtype id="9" point="true" tag="amenity" value="bbq" maxzoom="15" />
</type>
<type id="19" name="education">
<subtype id="1" point="true" polygon_center="true" tag="amenity" value="kindergarten" maxzoom="15" />
<subtype id="2" point="true" polygon_center="true" tag="amenity" value="school" maxzoom="15" />
<subtype id="3" point="true" polygon_center="true" tag="amenity" value="college" maxzoom="15" />
<subtype id="4" point="true" tag="amenity" value="library" maxzoom="15" />
<subtype id="5" point="true" polygon_center="true" tag="amenity" value="university" maxzoom="15" />
</type>
<type id="20" name="transportation">
<subtype id="1" point="true" polygon_center="true" tag="amenity" value="parking" maxzoom="15" />
<subtype id="2" point="true" polygon_center="true" tag="amenity" value="bicycle_parking" maxzoom="15" />
<subtype id="3" point="true" polygon="true" tag="amenity" value="ferry_terminal" maxzoom="12" />
<subtype id="4" point="true" tag="amenity" value="fuel" maxzoom="13" />
<subtype id="16" point="true" tag="amenity" value="taxi" maxzoom="15" />
<subtype id="17" point="true" tag="amenity" value="bicycle_rental" maxzoom="15" />
<subtype id="18" point="true" tag="amenity" value="bus_station" maxzoom="13" />
<subtype id="19" point="true" tag="amenity" value="car_rental" maxzoom="15" />
<subtype id="20" point="true" tag="amenity" value="car_sharing" maxzoom="15" />
<subtype id="21" point="true" tag="amenity" value="car_wash" maxzoom="15" />
<subtype id="22" point="true" tag="amenity" value="grit_bin" maxzoom="15" />
</type>
<type id="21" name="finance">
<subtype id="1" point="true" tag="amenity" value="atm" maxzoom="15" />
<subtype id="2" building="true" tag="amenity" value="bank" maxzoom="15" />
<subtype id="3" point="true" tag="amenity" value="bureau_de_change" maxzoom="15" />
</type>
<type id="22" name="healthcare">
<subtype id="1" building="true" tag="amenity" value="pharmacy" maxzoom="15" />
<subtype id="2" point="true" polygon_center="true" tag="amenity" value="hospital" maxzoom="15" />
<subtype id="3" point="true" tag="amenity" value="baby_hatch" maxzoom="15" />
<subtype id="4" point="true" tag="amenity" value="dentist" maxzoom="15" />
<subtype id="5" point="true" tag="amenity" value="doctors" maxzoom="15" />
<subtype id="6" point="true" tag="amenity" value="veterinary" maxzoom="15" />
<subtype id="7" point="true" tag="amenity" value="first_aid" maxzoom="15" />
</type>
<type id="23" name="entertainment">
<subtype id="2" point="true" tag="amenity" value="arts_centre" maxzoom="15" />
<subtype id="3" point="true" polygon_center="true" tag="amenity" value="cinema" maxzoom="15" />
<subtype id="4" point="true" tag="amenity" value="community_centre" maxzoom="15" />
<subtype id="5" point="true" tag="amenity" value="social_centre" maxzoom="15" />
<subtype id="6" building="true" tag="amenity" value="nightclub" maxzoom="15" />
<subtype id="7" point="true" tag="amenity" value="stripclub" maxzoom="15" />
<subtype id="8" point="true" tag="amenity" value="studio" maxzoom="15" />
<subtype id="9" building="true" tag="amenity" value="theatre" maxzoom="15" />
<subtype id="10" point="true" tag="amenity" value="sauna" maxzoom="15" />
<subtype id="11" building="true" tag="amenity" value="brothel" maxzoom="15" />
</type>
<type id="24" name="amenity_other">
<subtype id="1" point="true" polygon="true" tag="amenity" value="marketplace" maxzoom="15" />
<subtype id="5" building="true" tag="amenity" value="courthouse" maxzoom="15" />
<subtype id="6" building="true" tag="amenity" value="crematorium" maxzoom="15" />
<subtype id="7" point="true" tag="amenity" value="embassy" maxzoom="15" />
<subtype id="8" point="true" tag="amenity" value="grave_yard" maxzoom="15" />
<subtype id="9" point="true" tag="amenity" value="hunting_stand" maxzoom="15" />
<subtype id="10" point="true" tag="amenity" value="police" maxzoom="15" />
<subtype id="11" point="true" tag="amenity" value="post_box" maxzoom="15" />
<subtype id="12" building="true" tag="amenity" value="post_office" maxzoom="15" />
<subtype id="13" point="true" tag="amenity" value="prison" maxzoom="15" />
<subtype id="14" point="true" tag="amenity" value="public_building" maxzoom="15" />
<subtype id="15" point="true" tag="amenity" value="recycling" maxzoom="15" />
<subtype id="16" point="true" tag="amenity" value="shelter" maxzoom="15" />
<subtype id="17" point="true" tag="amenity" value="telephone" maxzoom="15" />
<subtype id="18" point="true" tag="amenity" value="toilets" maxzoom="15" />
<subtype id="19" building="true" tag="amenity" value="townhall" maxzoom="15" />
<subtype id="20" point="true" tag="amenity" value="vending_machine" maxzoom="15" />
<subtype id="21" point="true" tag="amenity" value="waste_basket" maxzoom="15" />
<subtype id="22" point="true" tag="amenity" value="waste_disposal" maxzoom="15" />
<subtype id="23" point="true" tag="amenity" value="fountain" maxzoom="15" />
<subtype id="24" point="true" tag="amenity" value="bench" maxzoom="15" />
<subtype id="25" point="true" tag="amenity" value="clock" maxzoom="15" />
<subtype id="26" point="true" tag="amenity" value="place_of_worship" maxzoom="15" />
<subtype id="30" point="true" tag="amenity" maxzoom="15" />
</type>
<type id="25" name="administrative">
<subtype id="41" point="true" tag="place" value="continent" maxzoom="5" />
<subtype id="42" point="true" tag="place" value="country" maxzoom="5" />
<subtype id="43" point="true" tag="place" value="state" maxzoom="5" />
<subtype id="44" point="true" tag="place" value="region" maxzoom="5" />
<subtype id="45" point="true" tag="place" value="county" maxzoom="5" />
<subtype id="6" point="true" polygon_center="true" tag="place" value="city" maxzoom="6" />
<subtype id="7" point="true" polygon_center="true" tag="place" value="town" maxzoom="7" />
<subtype id="8" point="true" polygon_center="true" tag="place" value="village" maxzoom="10" />
<subtype id="9" point="true" polygon_center="true" tag="place" value="hamlet" maxzoom="10" />
<subtype id="10" point="true" polygon_center="true" tag="place" value="suburb" maxzoom="10" />
<subtype id="11" point="true" polygon_center="true" tag="place" value="locality" maxzoom="10" />
<subtype id="12" point="true" polygon_center="true" tag="place" value="island" maxzoom="10" />
<!-- register(st, "boundary", "administrative", ADMINISTRATIVE, 15, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$ -->
<subtype id="21" polyline="true" tag="admin_level" value="1" maxzoom="15" />
<subtype id="22" polyline="true" tag="admin_level" value="2" maxzoom="5" />
<subtype id="23" polyline="true" tag="admin_level" value="3" maxzoom="5" />
<subtype id="24" polyline="true" tag="admin_level" value="4" maxzoom="5" />
<subtype id="25" polyline="true" tag="admin_level" value="5" maxzoom="6" />
<subtype id="26" polyline="true" tag="admin_level" value="6" maxzoom="6" />
<subtype id="27" polyline="true" tag="admin_level" value="7" maxzoom="6" />
<subtype id="28" polyline="true" tag="admin_level" value="8" maxzoom="10" />
<subtype id="29" polyline="true" tag="admin_level" value="9" maxzoom="11" />
<subtype id="30" polyline="true" tag="admin_level" value="10" maxzoom="12" />
<subtype id="16" polyline="true" tag="boundary" value="civil" maxzoom="7" />
<subtype id="17" polyline="true" tag="boundary" value="political" maxzoom="7" />
<subtype id="18" polyline="true" tag="boundary" value="maritime" maxzoom="7" />
<subtype id="19" polyline="true" tag="boundary" value="national_park" maxzoom="7" />
<subtype id="20" polyline="true" tag="boundary" value="protected_area" maxzoom="7" />
<subtype id="33" point="true" tag="addr:housenumber" maxzoom="15" />
</type>
<type id="27" name="sport">
<subtype id="1" point="true" tag="sport" value="9pin" maxzoom="15" />
<subtype id="2" point="true" tag="sport" value="10pin" maxzoom="15" />
<subtype id="3" point="true" tag="sport" value="archery" maxzoom="15" />
<subtype id="4" point="true" tag="sport" value="athletics" maxzoom="15" />
<subtype id="5" point="true" tag="sport" value="australian_football" maxzoom="15" />
<subtype id="6" point="true" tag="sport" value="baseball" maxzoom="15" />
<subtype id="7" point="true" tag="sport" value="basketball" maxzoom="15" />
<subtype id="8" point="true" tag="sport" value="beachvolleyball" maxzoom="15" />
<subtype id="9" point="true" tag="sport" value="boules" maxzoom="15" />
<subtype id="10" point="true" tag="sport" value="bowls" maxzoom="15" />
<subtype id="11" point="true" tag="sport" value="canoe" maxzoom="15" />
<subtype id="12" point="true" tag="sport" value="chess" maxzoom="15" />
<subtype id="13" point="true" tag="sport" value="climbing" maxzoom="15" />
<subtype id="14" point="true" tag="sport" value="cricket" maxzoom="15" />
<subtype id="15" point="true" tag="sport" value="cricket_nets" maxzoom="15" />
<subtype id="16" point="true" tag="sport" value="croquet" maxzoom="15" />
<subtype id="17" point="true" tag="sport" value="cycling" maxzoom="15" />
<subtype id="18" point="true" tag="sport" value="diving" maxzoom="15" />
<subtype id="19" point="true" tag="sport" value="dog_racing" maxzoom="15" />
<subtype id="20" point="true" tag="sport" value="equestrian" maxzoom="15" />
<subtype id="21" point="true" tag="sport" value="football" maxzoom="15" />
<subtype id="22" point="true" tag="sport" value="golf" maxzoom="15" />
<subtype id="23" point="true" tag="sport" value="gymnastics" maxzoom="15" />
<subtype id="24" point="true" tag="sport" value="hockey" maxzoom="15" />
<subtype id="25" point="true" tag="sport" value="horse_racing" maxzoom="15" />
<subtype id="26" point="true" tag="sport" value="ice_stock" maxzoom="15" />
<subtype id="27" point="true" tag="sport" value="korfball" maxzoom="15" />
<subtype id="28" point="true" tag="sport" value="motor" maxzoom="15" />
<subtype id="29" point="true" tag="sport" value="multi" maxzoom="15" />
<subtype id="30" point="true" tag="sport" value="orienteering" maxzoom="15" />
<subtype id="31" point="true" tag="sport" value="paddle_tennis" maxzoom="15" />
<subtype id="32" point="true" tag="sport" value="paragliding" maxzoom="15" />
<subtype id="33" point="true" tag="sport" value="pelota" maxzoom="15" />
<subtype id="34" point="true" tag="sport" value="racquet" maxzoom="15" />
<subtype id="35" point="true" tag="sport" value="rowing" maxzoom="15" />
<subtype id="36" point="true" tag="sport" value="rugby" maxzoom="15" />
<subtype id="37" point="true" tag="sport" value="shooting" maxzoom="15" />
<subtype id="38" point="true" tag="sport" value="skating" maxzoom="15" />
<subtype id="39" point="true" tag="sport" value="skateboard" maxzoom="15" />
<subtype id="40" point="true" tag="sport" value="skiing" maxzoom="15" />
<subtype id="41" point="true" tag="sport" value="soccer" maxzoom="15" />
<subtype id="42" point="true" tag="sport" value="swimming" maxzoom="15" />
<subtype id="43" point="true" tag="sport" value="table_tennis" maxzoom="15" />
<subtype id="44" point="true" tag="sport" value="team_handball" maxzoom="15" />
<subtype id="45" point="true" tag="sport" value="tennis" maxzoom="15" />
<subtype id="46" point="true" tag="sport" value="toboggan" maxzoom="15" />
<subtype id="47" point="true" tag="sport" value="volleyball" maxzoom="15" />
<subtype id="50" point="true" tag="sport" maxzoom="15" />
</type>
</osmand_types>