CartoType uses a standard set of map layers and attributes. These are used by the import rules built into makemap, and by the standard style sheet. You can override them completely by using your own import rules and style sheets, but it is better to use the standard set, adding new layers and attributes where needed, or omitting unnecessary ones. The reason for using the standard set is that they used by the address searching system. In general, attributes and layers are described according to how they are imported from OpenStreetMap data.
Integer attributes
Every CartoType map object has a single 32-bit integer attribute.
Roads use all 32 bits, split up into fields, to specify the road type, vehicle type restrictions, etc. This is rather complicated: see TRoadType in the C++ API documentation. (Use the search box in the top-right corner; a link cannot be given here because links to individual identifiers are automatically generated and change frequently.) However, road types can be referred to quite easily using expressions; you can supply an expression as part of the parameters to the Find function.
Non-road layers often put a 3-letter code, the 'OSM type' into the top 15 bits: each letter is encoded in 5 bits. There are API functions for creating OSM types for searching, and OSM types can also be referred to in expressions used in Find parameters. Non-road layers sometimes also use a plain number as the integer attribute. For example, if you create multiple routes at the same time using different route profiles, the main profile's route object has an integer attribute of 0, the next one has 1, and so on.
String attributes
CartoType map objects can have an unlimited number of string attributes. Each one is a key-value pair: both key and value are strings. All attributes have non-empty keys except the main name (the 'label') of a map object, which has an empty key. It may be referred to using the key $ when a list of keys is required in the API.
Attribute naming rules
CartoType attributes can have arbitrary names, but there is one important rule. Attributes with names starting with an underscore, like _ele (elevation above sea-level in metres) are not put into the full-text index.
Attributes used in all layers
The following attributes are imported as-is from OpenStreetMap. An asterisk (*) is used as a wild-card: name:* means all attributes starting with name:, like name:en, name:de, etc.
alt_name (alternative name)
int_name (international name)
name:* (localized names, etc.)
is_in:* (addressing)
addr:* (addressing)
left:* (used on administrative boundaries)
The following attributes are imported under different names.
postal_code becomes pco (postcode)
tiger:zip_left becomes pcol (postcode on left side of road)
tiger:zip_right becomes pcor (postcode on right side of road)
ele becomes _ele (elevation above sea level in metres)
Attributes used in all road layers
The integer attribute is used for the road type and other road-related attributes; see TRoadType in the C++ API documentation, as mentioned above.
ref becomes ref
maxspeed becomes _s
surface becomes _su
destination becomes _d
layer, bridge, tunnel, toll, oneway and roundabout are used to set the relevant flags in the integer attribute.
access, vehicle, motor_vehicle, bicycle, wheelchair, motorcyvle, motorcar, hov, disabled, goods, hgv, psv, bus, taxi, tourist_bus, agricultural, forestry, emergency and hazmat are used to set the access flags in the integer attribute, which are used by the routing system.
Layers
In the following description, expressions in like highway=secondary refer to the values of OpenStreetMap tags. The OSM type refers to a three-letter code placed in the top 15 bits of the integer attribute, as described above.
outline
Used for land areas. Usually no OSM type. Most coastline data is not imported from OSM directly but from land polygons in shapefile format: see this article for details.
Apart from the data imported from shapefiles, OSM data with place=island, place=islet and natural=coastline is imported, with OSM types isl, isl and coa respectively.
boundary/major
Lines or polygons with admin_level < 3.
Attributes: OSM type = bou. Low 17 bits of integer attribute = admin_level.
boundary/minor
Lines or polygons with admin_level >= 3.
Attributes. OSM type = bou. Low 17 bits of integer attribute = admin_level.
postcode
boundary=postal_code
land/major
boundary=national park -> OSM type nap.
boundary=protected_area -> OSM type pra.
Values of the OSM landuse tag are converted to OSM types as follows: conservation (polygon)->cnv, farmland (polygon)->far, forest (polygon)->for.
land/minor
Values of the OSM leisure tag are converted to OSM types as follows: common->com, dog_park->dog, garden->gdn, golf_course->gol, marina->mna, park->par.
Values of the OSM natural tag are converted to OSM types as follows: bare_rock->brc, beach->bea, cave_entrance->cav, cliff->clf, fell->fel, grassland->gra, heath->hea, marsh->mar, mud->mud, peak->pea, reef->ree, ridge->rij, rock->roc, sand->san, scree->scr, scrub->scb, stone->sto, tree->tre, tree->row->trr, volcano->vol.
Values of the OSM landuse tag are converted to OSM types as follows: conservation (point)->cnv, farmland (point)->far, forest (point)->for, allotments->all, basin->bas, cemetery->cem, commercial->cmr, construction->cns, garages->gar, grass->gra, farm->far, farmyard->fay, industrial->ind, meadow->mea, orchard->orc, quarry->qar, recreation_ground->rec, residential->rsd, retail->ret, village_green->vig, vineyard->vin.
aeroway=apron -> OSM type apr
road/major
Lines with highway=motorway, highway=motorway_link, highway=trunk, highway=trunk_link, highway=primary, highway=primary_link
road/mid
Lines with highway=secondary, highway=secondary_link, highway=tertiary, highway=tertiary_link
road/minor
Lines with highway=residential, highway=road, highway=unclassified, highway=living_street, highway=mini_roundabout, highway=turning_circle, highway=track, highway=service, highway=pedestrian
path
Lines with highway=footway (OSM type = foo), highway=path (OSM type = foo), highway=bridleway (OSM type = bri), highway=cycleway (OSM type = cyc), highway=steps (OSM type = ste)
amenity/major
Values of the OSM aeroway tag, where the objects are polygons or lines, are converted to OSM types as follows: aerodrome->aer, runway->run, taxiway->twy.
amenity/minor
Points with highway=bus_stop (OSM type = bsp), highway=turning_circle (OSM type = tci), highway=traffic_signals (OSM type = trf), highway=crossing (OSM type = cro), highway=motorway_junction (OSM type = jct, ref attribute becomes _jr, exit_to attribute becomes _je).
railway=station -> OSM type stn
railway=platform -> OSM type plf
Values of the OSM leisure tag are converted to OSM types as follows: fishing->fsh, fitness_station->fit, horse_riding->hor, ice_rink->ice, miniature_golf->mrg, nature_reserve->nat, picnic_table->pct, pitch->spp, playground->ply, recreation_ground->rec, sauna->sau, slipway->sli, sports_centre->spo, swimming_pool->swi, stadium->stm, track->spt, water_park->wap.
Values of the OSM amenity tag are converted to OSM types as follows: parking->pkg, school->sch, university->uni, college->col, place_of_worship->plw, restaurant->rst, bar->bar, bench->ben, fuel->fue, grave_yard->gry, post_box->pbx, fast_food->ffd, bank->bnk, hospital->hos, pub->pub, recycling->rcy, cafe->caf, post_office->pof, pharmacy->pha, telephone->pho, kindergarten->kin, fire_station->fis, swimming_pool->swi, bus_station->bst, police->pol, atm->atm, taxi->tax, theatre->the, cinema->cin, toilets->toi.
Values of the OSM aeroway tag, where the objects are points, are converted to OSM types as follows: aerodrome->aer, runway->run, taxiway->twy, helipad->hel, holding_position->ahp, gate->agt, windsock->wis.
railway
All objects with an OSM railway tag except station and platform (see amenity/minor).
Line objects convert following values of the railway tag to these OSM types: rail->rly, subway->swy, narrow_gauge->nar, abandoned->aba, disused->dis, tram->tra, light_rail->lir, preserved->pry.
waterway/major
waterway=river, canal, articifial -> OSM type riv
waterway=dock -> OSM type doc
waterway=riverbank -> OSM type rvb
natural=water (polygon) -> OSM type wat
landuse=reservoir (polygon) -> OSM type rsv
waterway/minor
waterway=stream -> OSM type str
waterway=drain -> OSM type dra
waterway=ditch -> OSM type dit
waterway=dam -> OSM type dam
waterway=weir -> OSM type wer
waterway=rapids -> OSM type rap
natural=bay (point) -> OSM type bay
natural=spring -> OSM type spr
natural=waterfall -> OSM type waf
natural=wetland -> OSM type wet
landuse=reservoir (point) -> OSM type rsv
place/major
The high 15 bits of the integer attribute can take an OSM type; the low 17 bits can take a population rank (from 1, less than 250, to 9, greater than 4 million).
place=city -> OSM type cit, unless population less than 100,000 -> tow (if population less than 1000, becomes vil and is assigned to place/minor)
place=town -> OSM type tow, unless population less than 1000
Other place values are converted to OSM types as follows: continent->con, country->cry, state->sta, region->reg, county->cou, island or islet (if point)->isl.
place/minor
The high 15 bits of the integer attribute can take an OSM type; the low 17 bits can take a population rank (from 1, less than 250, to 9, greater than 4 million).
place=city and population < 1000 -> OSM type vil (village)
place=village -> OSM type vil unless population less than 250 -> ham (hamlet)
Other place values are converted to OSM types as follows: neighbourhood->nei, locality->loc, isolated_dwelling->iso, farm->far, municipality->mun, borough->bor
building
building not null, or building:part not null, or shop not null, or man_made not null, or amenity=public_building, or aeroway=terminal, or aeroway=hangar.
The OSM type is bui except when
amenity=public_building->pbu
man_made=survey_point->sur
man_made=tower->twr
man_made=storage_tank->tan
man_made=cutline->cut
man_made=works->wor
man_made=pipeline->pip
man_made=water_tower->wtt
man_made=water_well->wtw
aeroway=terminal->ter
aeroway=hangar->han
The following OSM tags are converted into attributes:
shop becomes shop
man_made becomes man_made
height becomes _t
min_height becomes _b
address
addr:housenumber not null, or addr:housename not null, BUT must not also be a building (i.e., must not fit the conditions for the building layer).
tourism
Values of the OSM tourism tag are converted to OSM types as follows: alpine_hut->alp, attraction->att, artwork->art, bed_and_breakfast->bed, cabin->cab, camp_site->cam, caravan_site->cvn, chalet->chl, guest_house->gue, hostel->hst, hotel->hot, information->inf, motel->mot, museum->mus, picnic_site->pic, theme_park->thp, viewpoint->viw, zoo->zoo.
ferry
route=ferry