]> git.openstreetmap.org Git - nominatim.git/blobdiff - docs/customize/Import-Styles.md
Merge pull request #3586 from lonvia/reduce-lookup-calls
[nominatim.git] / docs / customize / Import-Styles.md
index 1f171c16fb732879ceab2fb920fa0b2ef935631a..003e56e383034da603b702a499bf2a6e875ccbe8 100644 (file)
@@ -49,7 +49,9 @@ during the processing.
     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:
@@ -91,10 +93,12 @@ key, then this is used as default for values that are not listed.
 
 !!! 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'
     }
     ```
 
@@ -123,7 +127,7 @@ to the user when requested, but are not used otherwise.
   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:
@@ -134,9 +138,11 @@ Any other string is matched exactly against tag keys.
 
 !!! 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'
@@ -168,7 +174,9 @@ They take _key match lists_ for main and extra names respectively.
 
 !!! 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'}
                       }
@@ -183,16 +191,16 @@ They take _key match lists_ for main and extra names respectively.
 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
@@ -204,11 +212,13 @@ are accepted, all other values are discarded.
 
 !!! 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'}
     }
     ```
 
@@ -217,7 +227,7 @@ are accepted, all other values are discarded.
     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.
@@ -239,6 +249,8 @@ above.
 
 !!! example
     ``` lua
+    local flex = require('import-full')
+
     flex.set_address_tags{
         main = {'addr:housenumber'},
         extra = {'addr:*', 'tiger:county'}
@@ -268,12 +280,14 @@ kinds of geometries can be used:
 * __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
     ```
 
@@ -292,6 +306,8 @@ logic.
 
 !!! 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)
@@ -312,6 +328,8 @@ responsible for filtering the tags and writing out the rows into Postgresql.
 
 !!! Example
     ``` lua
+    local flex = require('import-full')
+
     local original_process_tags = flex.process_tags
 
     function flex.process_tags(o)