There are no built-in defaults for the tag lists, so all the functions
need to be called from your style script to fully process the data.
Make sure you start from one of the default style and only modify
- the data you are interested in.
+ the data you are interested in. You can also derive your style from an
+ existing style by importing the appropriate module, e.g.
+ `local flex = require('import-street')`.
Many of the following functions take _key match lists_. These lists can
contain three kinds of strings to match against tag keys:
!!! example
``` lua
+ local flex = require('import-full')
+
flex.set_main_tags{
- boundary = {'administrative' = named},
- highway = {'always', street_lamp = 'named'}
- landuse = 'fallback',
+ boundary = {administrative = 'named'},
+ highway = {'always', street_lamp = 'named'},
+ landuse = 'fallback'
}
```
values. Tags with matching key/value pairs are deleted.
* __extra_keys__ is a _key match list_ for tags which should be saved into
extratags
-* __delete_tags__ contains a table of tag keys pointing to a list of tag
+* __extra_tags__ contains a table of tag keys pointing to a list of tag
values. Tags with matching key/value pairs are moved to extratags.
Key list may contain three kinds of strings:
!!! example
``` lua
+ local flex = require('import-full')
+
flex.set_prefilters{
delete_keys = {'source', 'source:*'},
- extra_tags = {'amenity' = {'yes', 'no'}
+ extra_tags = {amenity = {'yes', 'no'}}
}
flex.set_main_tags{
amenity = 'always'
!!! example
``` lua
- flex.set_main_tags{'highway' = {'traffic_light' = 'named'}}
+ local flex = require('flex-base')
+
+ flex.set_main_tags{highway = {traffic_light = 'named'}}
flex.set_name_tags{main = {'name', 'name:*'},
extra = {'ref'}
}
Address tags will be used to build up the address of an object.
`set_address_tags()` takes a table with arbitrary fields pointing to
-_key match lists_. To fields have a special meaning:
+_key match lists_. Two fields have a special meaning:
-__main__ defines
+* __main__: defines
the tags that make a full address object out of the OSM object. This
is usually the housenumber or variants thereof. If a main address tag
appears, then the object will always be included, if necessary with a
fallback of `place=house`. If the key has a prefix of `addr:` or `is_in:`
this will be stripped.
-__extra__ defines all supplementary tags for addresses, tags like `addr:street`, `addr:city` etc. If the key has a prefix of `addr:` or `is_in:` this will be stripped.
+* __extra__: defines all supplementary tags for addresses, tags like `addr:street`, `addr:city` etc. If the key has a prefix of `addr:` or `is_in:` this will be stripped.
All other fields will be handled as summary fields. If a key matches the
key match list, then its value will be added to the address tags with the
!!! example
``` lua
+ local flex = require('import-full')
+
flex.set_address_tags{
main = {'addr:housenumber'},
extra = {'addr:*'},
postcode = {'postal_code', 'postcode', 'addr:postcode'},
- country = {'country-code', 'ISO3166-1'}
+ country = {'country_code', 'ISO3166-1'}
}
```
object will fall back to be entered as a `place=house` in the database
unless there is another interested main tag to be found.
- Tags with keys `country-code` and `ISO3166-1` are saved with their
+ Tags with keys `country_code` and `ISO3166-1` are saved with their
value under `country` in the address tag list. The same thing happens
to postcodes, they will always be saved under the key `postcode` thus
normalizing the multitude of keys that are used in the OSM database.
!!! example
``` lua
+ local flex = require('import-full')
+
flex.set_address_tags{
main = {'addr:housenumber'},
extra = {'addr:*', 'tiger:county'}
* __relation_as_multipolygon__ creates a (Multi)Polygon from the ways in
the relation. If the ways do not form a valid area, then the object is
silently discarded.
-* __relation_as_multiline__ creates a (Mutli)LineString from the ways in
+* __relation_as_multiline__ creates a (Multi)LineString from the ways in
the relations. Ways are combined as much as possible without any regards
to their order in the relation.
!!! Example
``` lua
+ local flex = require('import-full')
+
flex.RELATION_TYPES['site'] = flex.relation_as_multipolygon
```
!!! Example
``` lua
+ local flex = require('import-full')
+
function osm2pgsql.process_relation(object)
if object.tags.boundary ~= 'administrative' or object.tags.admin_level ~= '2' then
flex.process_relation(object)
!!! Example
``` lua
+ local flex = require('import-full')
+
local original_process_tags = flex.process_tags
function flex.process_tags(o)