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.

name

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