diff --git a/src/main/java/org/openmaptiles/generated/OpenMapTilesSchema.java b/src/main/java/org/openmaptiles/generated/OpenMapTilesSchema.java
index 55ec4e54..6018d0f7 100644
--- a/src/main/java/org/openmaptiles/generated/OpenMapTilesSchema.java
+++ b/src/main/java/org/openmaptiles/generated/OpenMapTilesSchema.java
@@ -48,9 +48,9 @@ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
import org.openmaptiles.Layer;
/**
- * All vector tile layer definitions, attributes, and allowed values generated from the
- * OpenMapTiles vector tile schema
- * master.
+ * All vector tile layer definitions, attributes, and allowed values generated from the OpenMapTiles
+ * vector tile schema 3cf77e2a542d8a369bb08bf2538cdde0b3effb2b.
*/
@SuppressWarnings("unused")
public class OpenMapTilesSchema {
@@ -95,8 +95,8 @@ public static List createInstances(Translations translations, PlanetilerC
* polygons to improve rendering performance. This however can lead to less rendering options in clients since these
* boundaries show up. So you might not be able to use border styling for ocean water features.
*
- * Generated from
- * water.yaml
+ * Generated from water.yaml
*/
public interface Water extends Layer {
double BUFFER_SIZE = 4.0;
@@ -194,8 +194,8 @@ final class FieldMappings {
* there is also canal
generated, starting z13 there is no generalization according to class
* field applied. Waterways do not have a subclass
field.
*
- * Generated from
- * waterway.yaml
+ * Generated from waterway.yaml
*/
public interface Waterway extends Layer {
double BUFFER_SIZE = 4.0;
@@ -280,7 +280,7 @@ final class FieldMappings {
* layer is to style wood (class=wood
) and grass (class=grass
) areas.
*
* Generated from landcover.yaml
+ * "https://github.com/openmaptiles/openmaptiles/blob/3cf77e2a542d8a369bb08bf2538cdde0b3effb2b/layers/landcover/landcover.yaml">landcover.yaml
*/
public interface Landcover extends Layer {
double BUFFER_SIZE = 4.0;
@@ -436,8 +436,8 @@ final class FieldMappings {
* Landuse is used to describe use of land by humans. At lower zoom levels this is from Natural Earth data for
* residential (urban) areas and at higher zoom levels mostly OSM landuse
tags.
*
- * Generated from
- * landuse.yaml
+ * Generated from landuse.yaml
*/
public interface Landuse extends Layer {
double BUFFER_SIZE = 4.0;
@@ -533,7 +533,7 @@ final class FieldMappings {
* Natural peaks
*
* Generated from mountain_peak.yaml
+ * "https://github.com/openmaptiles/openmaptiles/blob/3cf77e2a542d8a369bb08bf2538cdde0b3effb2b/layers/mountain_peak/mountain_peak.yaml">mountain_peak.yaml
*/
public interface MountainPeak extends Layer {
double BUFFER_SIZE = 64.0;
@@ -611,8 +611,8 @@ final class FieldMappings {
* Indigenous boundaries are not parks, but they are included in this layer for technical reasons related to data
* processing. These boundaries represent areas with special legal and administrative status for indigenous peoples.
*
- * Generated from
- * park.yaml
+ * Generated from park.yaml
*/
public interface Park extends Layer {
double BUFFER_SIZE = 4.0;
@@ -672,8 +672,8 @@ final class FieldMappings {
* admin_level
* but for most styles it makes sense to just style admin_level=2
and admin_level=4
.
*
- * Generated from
- * boundary.yaml
+ * Generated from boundary.yaml
*/
public interface Boundary extends Layer {
double BUFFER_SIZE = 4.0;
@@ -773,8 +773,8 @@ final class FieldMappings {
* buildings are contained in the building layer but all other airport related polygons can be found
* in the aeroway layer.
*
- * Generated from
- * aeroway.yaml
+ * Generated from aeroway.yaml
*/
public interface Aeroway extends Layer {
double BUFFER_SIZE = 4.0;
@@ -834,7 +834,7 @@ final class FieldMappings {
* features like plazas.
*
* Generated from transportation.yaml
+ * "https://github.com/openmaptiles/openmaptiles/blob/3cf77e2a542d8a369bb08bf2538cdde0b3effb2b/layers/transportation/transportation.yaml">transportation.yaml
*/
public interface Transportation extends Layer {
double BUFFER_SIZE = 4.0;
@@ -1178,8 +1178,8 @@ final class FieldMappings {
* (building=
). Only buildings with tag
* location:underground are excluded.
*
- * Generated from
- * building.yaml
+ * Generated from building.yaml
*/
public interface Building extends Layer {
double BUFFER_SIZE = 4.0;
@@ -1221,7 +1221,7 @@ final class FieldMappings {
* from OSM water bodies. Only the most important lakes contain labels.
*
* Generated from water_name.yaml
+ * "https://github.com/openmaptiles/openmaptiles/blob/3cf77e2a542d8a369bb08bf2538cdde0b3effb2b/layers/water_name/water_name.yaml">water_name.yaml
*/
public interface WaterName extends Layer {
double BUFFER_SIZE = 256.0;
@@ -1291,7 +1291,7 @@ final class FieldMappings {
* while for other roads you should use name
.
*
* Generated from transportation_name.yaml
+ * "https://github.com/openmaptiles/openmaptiles/blob/3cf77e2a542d8a369bb08bf2538cdde0b3effb2b/layers/transportation_name/transportation_name.yaml">transportation_name.yaml
*/
public interface TransportationName extends Layer {
double BUFFER_SIZE = 8.0;
@@ -1520,8 +1520,8 @@ final class FieldMappings {
* of the more important layers to create a beautiful map. We suggest you use different font styles and sizes to
* create a text hierarchy.
*
- * Generated from
- * place.yaml
+ * Generated from place.yaml
*/
public interface Place extends Layer {
double BUFFER_SIZE = 256.0;
@@ -1632,7 +1632,7 @@ final class FieldMappings {
* tag are prioritized for preservation).
*
* Generated from housenumber.yaml
+ * "https://github.com/openmaptiles/openmaptiles/blob/3cf77e2a542d8a369bb08bf2538cdde0b3effb2b/layers/housenumber/housenumber.yaml">housenumber.yaml
*/
public interface Housenumber extends Layer {
double BUFFER_SIZE = 8.0;
@@ -1664,7 +1664,8 @@ final class FieldMappings {
* Points of interests containing a of a variety
* of OpenStreetMap tags. Mostly contains amenities, sport, shop and tourist POIs.
*
- * Generated from poi.yaml
+ * Generated from poi.yaml
*/
public interface Poi extends Layer {
double BUFFER_SIZE = 64.0;
@@ -1693,6 +1694,7 @@ final class Fields {
* allowed values:
*
* - shop
+ *
- office
*
- town_hall
*
- golf
*
- fast_food
@@ -1788,6 +1790,7 @@ final class Fields {
/** Attribute values for map elements in the poi layer. */
final class FieldValues {
public static final String CLASS_SHOP = "shop";
+ public static final String CLASS_OFFICE = "office";
public static final String CLASS_TOWN_HALL = "town_hall";
public static final String CLASS_GOLF = "golf";
public static final String CLASS_FAST_FOOD = "fast_food";
@@ -1821,8 +1824,8 @@ final class FieldValues {
public static final String CLASS_SWIMMING = "swimming";
public static final String CLASS_CASTLE = "castle";
public static final String CLASS_ATM = "atm";
- public static final Set CLASS_VALUES = Set.of("shop", "town_hall", "golf", "fast_food", "park", "bus",
- "railway", "aerialway", "entrance", "campsite", "laundry", "grocery", "library", "college", "lodging",
+ public static final Set CLASS_VALUES = Set.of("shop", "office", "town_hall", "golf", "fast_food", "park",
+ "bus", "railway", "aerialway", "entrance", "campsite", "laundry", "grocery", "library", "college", "lodging",
"ice_cream", "post", "cafe", "school", "alcohol_shop", "bar", "harbor", "car", "hospital", "cemetery",
"attraction", "beer", "music", "stadium", "art_gallery", "clothing_store", "swimming", "castle", "atm");
}
@@ -1837,6 +1840,16 @@ final class FieldMappings {
"locksmith", "lamps", "mall", "massage", "motorcycle", "mobile_phone", "newsagent", "optician", "outdoor",
"paint", "perfumery", "perfume", "pet", "photo", "second_hand", "shoes", "sports", "stationery", "tailor",
"tattoo", "ticket", "tobacco", "toys", "travel_agency", "watches", "weapons", "wholesale")),
+ MultiExpression.entry("office",
+ matchAny("subclass", "accountant", "advertising_agency", "architect", "association", "bail_bond_agent",
+ "charity", "company", "construction_company", "consulting", "cooperative", "courier", "coworking",
+ "diplomatic", "educational_institution", "employment_agency", "energy_supplier", "engineer", "estate_agent",
+ "financial", "financial_advisor", "forestry", "foundation", "geodesist", "government", "graphic_design",
+ "guide", "harbour_master", "health_insurance", "insurance", "interior_design", "it", "lawyer", "logistics",
+ "marketing", "moving_company", "newspaper", "ngo", "notary", "physician", "political_party",
+ "private_investigator", "property_management", "publisher", "quango", "religion", "research", "security",
+ "surveyor", "tax_advisor", "taxi", "telecommunication", "therapist", "translator", "travel_agent",
+ "tutoring", "union", "university", "water_utility", "web_design", "wedding_planner")),
MultiExpression.entry("town_hall",
matchAny("subclass", "townhall", "public_building", "courthouse", "community_centre")),
MultiExpression.entry("golf", matchAny("subclass", "golf", "golf_course", "miniature_golf")),
@@ -1883,7 +1896,7 @@ final class FieldMappings {
* Aerodrome labels
*
* Generated from aerodrome_label.yaml
+ * "https://github.com/openmaptiles/openmaptiles/blob/3cf77e2a542d8a369bb08bf2538cdde0b3effb2b/layers/aerodrome_label/aerodrome_label.yaml">aerodrome_label.yaml
*/
public interface AerodromeLabel extends Layer {
double BUFFER_SIZE = 64.0;
diff --git a/src/main/java/org/openmaptiles/generated/Tables.java b/src/main/java/org/openmaptiles/generated/Tables.java
index dfcf2478..dbbe732d 100644
--- a/src/main/java/org/openmaptiles/generated/Tables.java
+++ b/src/main/java/org/openmaptiles/generated/Tables.java
@@ -50,8 +50,9 @@ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
/**
* OSM element parsers generated from the imposm3 table definitions
- * in the OpenMapTiles vector tile
- * schema.
+ * in the OpenMapTiles
+ * vector tile schema.
*
* These filter and parse the raw OSM key/value attribute pairs on tags into records with fields that match the columns
* in the tables that imposm3 would generate. Layer implementations can "subscribe" to elements from each "table" but
@@ -725,7 +726,15 @@ public OsmPoiPoint(SourceFeature source, String mappingKey) {
matchAny("leisure", "dog_park", "escape_game", "garden", "golf_course", "ice_rink", "hackerspace", "marina",
"miniature_golf", "park", "pitch", "playground", "sports_centre", "stadium", "swimming_area", "swimming_pool",
"water_park"),
- matchAny("office", "diplomatic"),
+ matchAny("office", "accountant", "advertising_agency", "architect", "association", "bail_bond_agent", "charity",
+ "company", "construction_company", "consulting", "cooperative", "courier", "coworking", "diplomatic",
+ "educational_institution", "employment_agency", "energy_supplier", "engineer", "estate_agent", "financial",
+ "financial_advisor", "forestry", "foundation", "geodesist", "government", "graphic_design", "guide",
+ "harbour_master", "health_insurance", "insurance", "interior_design", "it", "lawyer", "logistics", "marketing",
+ "moving_company", "newspaper", "ngo", "notary", "physician", "political_party", "private_investigator",
+ "property_management", "publisher", "quango", "religion", "research", "security", "surveyor", "tax_advisor",
+ "taxi", "telecommunication", "therapist", "translator", "travel_agent", "tutoring", "union", "university",
+ "water_utility", "web_design", "wedding_planner"),
matchAny("railway", "halt", "station", "subway_entrance", "train_station_entrance", "tram_stop"),
matchAny("shop", "accessories", "alcohol", "antiques", "art", "bag", "bakery", "beauty", "bed", "beverages",
"bicycle", "books", "boutique", "butcher", "camera", "car", "car_repair", "car_parts", "carpet", "charity",
@@ -795,7 +804,15 @@ public OsmPoiPolygon(SourceFeature source, String mappingKey) {
matchAny("leisure", "dog_park", "escape_game", "garden", "golf_course", "ice_rink", "hackerspace", "marina",
"miniature_golf", "park", "pitch", "playground", "sports_centre", "stadium", "swimming_area", "swimming_pool",
"water_park"),
- matchAny("office", "diplomatic"),
+ matchAny("office", "accountant", "advertising_agency", "architect", "association", "bail_bond_agent", "charity",
+ "company", "construction_company", "consulting", "cooperative", "courier", "coworking", "diplomatic",
+ "educational_institution", "employment_agency", "energy_supplier", "engineer", "estate_agent", "financial",
+ "financial_advisor", "forestry", "foundation", "geodesist", "government", "graphic_design", "guide",
+ "harbour_master", "health_insurance", "insurance", "interior_design", "it", "lawyer", "logistics", "marketing",
+ "moving_company", "newspaper", "ngo", "notary", "physician", "political_party", "private_investigator",
+ "property_management", "publisher", "quango", "religion", "research", "security", "surveyor", "tax_advisor",
+ "taxi", "telecommunication", "therapist", "translator", "travel_agent", "tutoring", "union", "university",
+ "water_utility", "web_design", "wedding_planner"),
matchAny("railway", "halt", "station", "subway_entrance", "train_station_entrance", "tram_stop"),
matchAny("shop", "accessories", "alcohol", "antiques", "art", "bag", "bakery", "beauty", "bed", "beverages",
"bicycle", "books", "boutique", "butcher", "camera", "car", "car_repair", "car_parts", "carpet", "charity",
diff --git a/src/test/java/org/openmaptiles/layers/PoiTest.java b/src/test/java/org/openmaptiles/layers/PoiTest.java
index 9eacb30a..8f63613f 100644
--- a/src/test/java/org/openmaptiles/layers/PoiTest.java
+++ b/src/test/java/org/openmaptiles/layers/PoiTest.java
@@ -352,7 +352,7 @@ void testGridRank() throws GeometryException {
void testEmbassy() {
assertFeatures(7, List.of(Map.of(
"_layer", "poi",
- "class", "diplomatic",
+ "class", "office",
"subclass", "diplomatic",
"name", "The Embassy"
)), process(pointFeature(Map.of(