]> git.openstreetmap.org Git - nominatim.git/blobdiff - tests/features/db/import/interpolation.feature
Merge remote-tracking branch 'origin/master' into osmline
[nominatim.git] / tests / features / db / import / interpolation.feature
index 9a4856f2d329efb6c11d02b8278682ab989beeb7..356c7e16156cc9e9b4bb92482850717ec955555f 100644 (file)
 Feature: Import of address interpolations
     Tests that interpolated addresses are added correctly
 
-    Scenario: Simple even two point interpolation
+    Scenario: Simple even interpolation line with two points
         Given the place nodes
-          | osm_id | class | type  | housenumber | geometry
-          | 1      | place | house | 2           | 1 1
-          | 2      | place | house | 6           | 1 1.001
+          | osm_id | osm_type | class | type  | housenumber | geometry
+          | 1      | N        | place | house | 2           | 1 1
+          | 2      | N        | place | house | 6           | 1 1.001
         And the place ways
-          | osm_id | class | type   | housenumber | geometry
-          | 1      | place | houses | even        | 1 1, 1 1.001
+          | osm_id | osm_type | class | type   | housenumber | geometry
+          | 1      | W        | place | houses | even        | 1 1, 1 1.001
         And the ways
           | id | nodes
           | 1  | 1,2
         When importing
-        Then node 1 expands to housenumbers
-          | housenumber | centroid
-          | 2           | 1,1
-          | 4           | 1,1.0005
-        And node 2 expands to housenumbers
-          | housenumber | centroid
-          | 6           | 1,1.001
+        Then way 1 expands to lines
+          | startnumber | endnumber | geometry
+          | 2           | 6         | 1 1, 1 1.001
 
-    Scenario: Simple even two point interpolation with zero beginning
+    Scenario: Backwards even two point interpolation line
         Given the place nodes
           | osm_id | class | type  | housenumber | geometry
-          | 1      | place | house | 0           | 1 1
-          | 2      | place | house | 8           | 1 1.001
+          | 1      | place | house | 2           | 1 1
+          | 2      | place | house | 6           | 1 1.001
         And the place ways
           | osm_id | class | type   | housenumber | geometry
-          | 1      | place | houses | even        | 1 1, 1 1.001
+          | 1      | place | houses | even        | 1 1.001, 1 1
         And the ways
           | id | nodes
-          | 1  | 1,2
+          | 1  | 2,1
         When importing
-        Then node 1 expands to housenumbers
-          | housenumber | centroid
-          | 0           | 1,1
-          | 2           | 1,1.00025
-          | 4           | 1,1.0005
-          | 6           | 1,1.00075
-        And node 2 expands to housenumbers
-          | housenumber | centroid
-          | 8           | 1,1.001
+        Then way 1 expands to lines
+          | startnumber | endnumber | geometry
+          | 2           | 6         | 1 1, 1 1.001
 
-    Scenario: Backwards even two point interpolation
+      Scenario: Simple odd two point interpolation
         Given the place nodes
           | osm_id | class | type  | housenumber | geometry
-          | 1      | place | house | 2           | 1 1
-          | 2      | place | house |           | 1 1.001
+          | 1      | place | house | 1           | 1 1
+          | 2      | place | house | 11          | 1 1.001
         And the place ways
           | osm_id | class | type   | housenumber | geometry
-          | 1      | place | houses | even        | 1 1.001, 1 1
+          | 1      | place | houses | odd         | 1 1, 1 1.001
         And the ways
           | id | nodes
-          | 1  | 2,1
+          | 1  | 1,2
         When importing
-        Then node 1 expands to housenumbers
-          | housenumber | centroid
-          | 2           | 1,1
-        And node 2 expands to housenumbers
-          | housenumber | centroid
-          | 4           | 1,1.0005
-          | 6           | 1,1.001
+        Then way 1 expands to lines
+          | startnumber | endnumber | geometry
+          | 1           | 11        | 1 1, 1 1.001
 
-    Scenario: Even two point interpolation with odd beginning
+     Scenario: Simple all two point interpolation
         Given the place nodes
           | osm_id | class | type  | housenumber | geometry
-          | 1      | place | house | 11          | 1 1
-          | 2      | place | house | 16          | 1 1.001
+          | 1      | place | house | 1           | 1 1
+          | 2      | place | house |           | 1 1.001
         And the place ways
           | osm_id | class | type   | housenumber | geometry
-          | 1      | place | houses | even        | 1 1, 1 1.001
+          | 1      | place | houses | all         | 1 1, 1 1.001
         And the ways
           | id | nodes
           | 1  | 1,2
         When importing
-        Then node 1 expands to housenumbers
-          | housenumber | centroid
-          | 11          | 1,1
-          | 12          | 1,1.0002
-          | 14          | 1,1.0006
-        And node 2 expands to housenumbers
-          | housenumber | centroid
-          | 16          | 1,1.001
+        Then way 1 expands to lines
+          | startnumber | endnumber | geometry
+          | 1           | 3         | 1 1, 1 1.001
 
-    Scenario: Even two point interpolation with odd end
+    Scenario: Even two point interpolation line with intermediate empty node
         Given the place nodes
           | osm_id | class | type  | housenumber | geometry
-          | 1      | place | house | 10          | 1 1
-          | 2      | place | house | 15          | 1 1.001
+          | 1      | place | house |           | 1 1
+          | 2      | place | house | 10          | 1.001 1.001
         And the place ways
           | osm_id | class | type   | housenumber | geometry
-          | 1      | place | houses | even        | 1 1, 1 1.001
+          | 1      | place | houses | even        | 1 1, 1 1.001, 1.001 1.001
         And the ways
           | id | nodes
-          | 1  | 1,2
+          | 1  | 1,3,2
         When importing
-        Then node 1 expands to housenumbers
-          | housenumber | centroid
-          | 10          | 1,1
-          | 12          | 1,1.0004
-          | 14          | 1,1.0008
-        And node 2 expands to housenumbers
-          | housenumber | centroid
-          | 15          | 1,1.001
+        Then way 1 expands to lines
+          | startnumber | endnumber | geometry
+          | 2           | 10         | 1 1, 1 1.001, 1.001 1.001
 
-    Scenario: Reverse even two point interpolation with odd beginning
+    Scenario: Even two point interpolation line with intermediate duplicated empty node
         Given the place nodes
           | osm_id | class | type  | housenumber | geometry
-          | 1      | place | house | 11          | 1 1
-          | 2      | place | house | 16          | 1 1.001
+          | 1      | place | house |           | 1 1
+          | 2      | place | house | 10          | 1.001 1.001
         And the place ways
           | osm_id | class | type   | housenumber | geometry
-          | 1      | place | houses | even        | 1 1.001, 1 1
+          | 1      | place | houses | even        | 1 1, 1 1.001, 1.001 1.001
         And the ways
           | id | nodes
-          | 1  | 2,1
+          | 1  | 1,3,3,2
         When importing
-        Then node 1 expands to housenumbers
-          | housenumber | centroid
-          | 11          | 1,1
-        And node 2 expands to housenumbers
-          | housenumber | centroid
-          | 12          | 1,1.0002
-          | 14          | 1,1.0006
-          | 16          | 1,1.001
+        Then way 1 expands to lines
+          | startnumber | endnumber | geometry
+          | 2           | 10         | 1 1, 1 1.001, 1.001 1.001
 
-    Scenario: Reverse even two point interpolation with odd end
+    Scenario: Simple even three point interpolation line
         Given the place nodes
           | osm_id | class | type  | housenumber | geometry
-          | 1      | place | house | 10          | 1 1
-          | 2      | place | house | 15          | 1 1.001
+          | 1      | place | house | 2           | 1 1
+          | 2      | place | house | 14          | 1.001 1.001
+          | 3      | place | house | 10          | 1 1.001
         And the place ways
           | osm_id | class | type   | housenumber | geometry
-          | 1      | place | houses | even        | 1 1.001, 1 1
+          | 1      | place | houses | even        | 1 1, 1 1.001, 1.001 1.001
         And the ways
           | id | nodes
-          | 1  | 2,1
+          | 1  | 1,3,2
         When importing
-        Then node 1 expands to housenumbers
-          | housenumber | centroid
-          | 10          | 1,1
-        And node 2 expands to housenumbers
-          | housenumber | centroid
-          | 12          | 1,1.0004
-          | 14          | 1,1.0008
-          | 15          | 1,1.001
+        Then way 1 expands to lines
+          | startnumber | endnumber | geometry
+          | 2           | 10        | 1 1, 1 1.001
+          | 10          | 14        | 1 1.001, 1.001 1.001
 
-      Scenario: Simple odd two point interpolation
+     Scenario: Simple even four point interpolation line
         Given the place nodes
           | osm_id | class | type  | housenumber | geometry
-          | 1      | place | house | 1           | 1 1
-          | 2      | place | house | 11          | 1 1.001
+          | 1      | place | house | 2           | 1 1
+          | 2      | place | house | 14          | 1.001 1.001
+          | 3      | place | house | 10          | 1 1.001
+          | 4      | place | house | 18          | 1.001 1.002
         And the place ways
           | osm_id | class | type   | housenumber | geometry
-          | 1      | place | houses | odd         | 1 1, 1 1.001
+          | 1      | place | houses | even        | 1 1, 1 1.001, 1.001 1.001, 1.001 1.002
         And the ways
           | id | nodes
-          | 1  | 1,2
+          | 1  | 1,3,2,4
         When importing
-        Then node 1 expands to housenumbers
-          | housenumber | centroid
-          | 1           | 1,1
-          | 3           | 1,1.0002
-          | 5           | 1,1.0004
-          | 7           | 1,1.0006
-          | 9           | 1,1.0008
-        And node 2 expands to housenumbers
-          | housenumber | centroid
-          | 11           | 1,1.001
+        Then way 1 expands to lines
+          | startnumber | endnumber | geometry
+          | 2           | 10        | 1 1, 1 1.001
+          | 10          | 14        | 1 1.001, 1.001 1.001
+          | 14          | 18        | 1.001 1.001, 1.001 1.002
 
-      Scenario: Odd two point interpolation with even beginning
+    Scenario: Reverse simple even three point interpolation line
         Given the place nodes
           | osm_id | class | type  | housenumber | geometry
           | 1      | place | house | 2           | 1 1
-          | 2      | place | house | 7           | 1 1.001
+          | 2      | place | house | 14          | 1.001 1.001
+          | 3      | place | house | 10          | 1 1.001
         And the place ways
           | osm_id | class | type   | housenumber | geometry
-          | 1      | place | houses | odd         | 1 1, 1 1.001
+          | 1      | place | houses | even        | 1.001 1.001, 1 1.001, 1 1
         And the ways
           | id | nodes
-          | 1  | 1,2
+          | 1  | 2,3,1
         When importing
-        Then node 1 expands to housenumbers
-          | housenumber | centroid
-          | 2           | 1,1
-          | 3           | 1,1.0002
-          | 5           | 1,1.0006
-        And node 2 expands to housenumbers
-          | housenumber | centroid
-          | 7           | 1,1.001
+        Then way 1 expands to lines
+          | startnumber | endnumber | geometry
+          | 2           | 10        | 1 1, 1 1.001
+          | 10          | 14        | 1 1.001, 1.001 1.001
 
-     Scenario: Simple all two point interpolation
+    Scenario: Even three point interpolation line with odd center point
         Given the place nodes
           | osm_id | class | type  | housenumber | geometry
-          | 1      | place | house | 1           | 1 1
-          | 2      | place | house | 3           | 1 1.001
+          | 1      | place | house | 2           | 1 1
+          | 2      | place | house | 8           | 1.001 1.001
+          | 3      | place | house | 7           | 1 1.001
         And the place ways
           | osm_id | class | type   | housenumber | geometry
-          | 1      | place | houses | all         | 1 1, 1 1.001
+          | 1      | place | houses | even        | 1 1, 1 1.001, 1.001 1.001
         And the ways
           | id | nodes
-          | 1  | 1,2
+          | 1  | 1,3,2
         When importing
-        Then node 1 expands to housenumbers
-          | housenumber | centroid
-          | 1           | 1,1
-          | 2           | 1,1.0005
-        And node 2 expands to housenumbers
-          | housenumber | centroid
-          | 3           | 1,1.001
+        Then way 1 expands to lines
+          | startnumber | endnumber | geometry
+          | 2           | 7         | 1 1, 1 1.001
+          | 7           | 8         | 1 1.001, 1.001 1.001
 
-    Scenario: Simple numbered two point interpolation
+    Scenario: Interpolation line with self-intersecting way
         Given the place nodes
           | osm_id | class | type  | housenumber | geometry
-          | 1      | place | house | 3           | 1 1
-          | 2      | place | house | 9           | 1 1.001
+          | 1      | place | house | 2           | 0 0
+          | 2      | place | house | 6           | 0 0.001
+          | 3      | place | house | 10          | 0 0.002
         And the place ways
           | osm_id | class | type   | housenumber | geometry
-          | 1      | place | houses | 3           | 1 1, 1 1.001
+          | 1      | place | houses | even        | 0 0, 0 0.001, 0 0.002, 0 0.001
         And the ways
           | id | nodes
-          | 1  | 1,2
+          | 1  | 1,2,3,2
         When importing
-        Then node 1 expands to housenumbers
-          | housenumber | centroid
-          | 3           | 1,1
-          | 6           | 1,1.0005
-        And node 2 expands to housenumbers
-          | housenumber | centroid
-          | 9           | 1,1.001
+        Then way 1 expands to lines
+          | startnumber | endnumber | geometry
+          | 2           | 6         | 0 0, 0 0.001
+          | 6           | 10        | 0 0.001, 0 0.002
 
-    Scenario: Even two point interpolation with intermediate empty node
+    Scenario: Interpolation line with self-intersecting way II
         Given the place nodes
           | osm_id | class | type  | housenumber | geometry
-          | 1      | place | house | 2           | 1 1
-          | 2      | place | house | 10          | 1.001 1.001
+          | 1      | place | house | 2           | 0 0
+          | 2      | place | house | 6           | 0 0.001
         And the place ways
           | osm_id | class | type   | housenumber | geometry
-          | 1      | place | houses | even        | 1 1, 1 1.001, 1.001 1.001
+          | 1      | place | houses | even        | 0 0, 0 0.001, 0 0.002, 0 0.001
         And the ways
           | id | nodes
-          | 1  | 1,3,2
+          | 1  | 1,2,3,2
         When importing
-        Then node 1 expands to housenumbers
-          | housenumber | centroid
-          | 2           | 1,1
-          | 4           | 1,1.0005
-          | 6           | 1,1.001
-          | 8           | 1.0005,1.001
-        And node 2 expands to housenumbers
-          | housenumber | centroid
-          | 10          | 1.001,1.001
+        Then way 1 expands to lines
+          | startnumber | endnumber | geometry
+          | 2           | 6         | 0 0, 0 0.001
 
 
-    Scenario: Even two point interpolation with intermediate duplicated empty node
-        Given the place nodes
+    Scenario: addr:street on interpolation way
+        Given the scene parallel-road
+        And the place nodes
           | osm_id | class | type  | housenumber | geometry
-          | 1      | place | house | 2           | 1 1
-          | 2      | place | house | 10          | 1.001 1.001
+          | 1      | place | house | 2           | :n-middle-w
+          | 2      | place | house | 6           | :n-middle-e
+          | 3      | place | house | 12          | :n-middle-w
+          | 4      | place | house | 16          | :n-middle-e
         And the place ways
-          | osm_id | class | type   | housenumber | geometry
-          | 1      | place | houses | even        | 1 1, 1 1.001, 1.001 1.001
+          | osm_id | class   | type    | housenumber | street       | geometry
+          | 10     | place   | houses  | even        |              | :w-middle
+          | 11     | place   | houses  | even        | Cloud Street | :w-middle
+        And the place ways
+          | osm_id | class   | type     | name                    | geometry
+          | 2      | highway | tertiary | 'name' : 'Sun Way'      | :w-north
+          | 3      | highway | tertiary | 'name' : 'Cloud Street' | :w-south
         And the ways
           | id | nodes
-          | 1  | 1,3,3,2
+          | 10  | 1,100,101,102,2
+          | 11  | 3,200,201,202,4
         When importing
-        Then node 1 expands to housenumbers
-          | housenumber | centroid
-          | 2           | 1,1
-          | 4           | 1,1.0005
-          | 6           | 1,1.001
-          | 8           | 1.0005,1.001
-        And node 2 expands to housenumbers
-          | housenumber | centroid
-          | 10          | 1.001,1.001
+        Then table placex contains
+          | object | parent_place_id
+          | N1     | W2
+          | N2     | W2
+          | N3     | W3
+          | N4     | W3
+        Then table location_property_osmline contains
+          | object | parent_place_id | startnumber | endnumber
+          | W10    | W2              | 2           | 6
+          | W11    | W3              | 12          | 16
 
-    Scenario: Simple even three point interpolation
+    Scenario: addr:street on housenumber way
+        Given the scene parallel-road
+        And the place nodes
+          | osm_id | class | type  | housenumber | street       | geometry
+          | 1      | place | house | 2           |              | :n-middle-w
+          | 2      | place | house | 6           |              | :n-middle-e
+          | 3      | place | house | 12          | Cloud Street | :n-middle-w
+          | 4      | place | house | 16          | Cloud Street | :n-middle-e
+        And the place ways
+          | osm_id | class   | type    | housenumber | geometry
+          | 10     | place   | houses  | even        | :w-middle
+          | 11     | place   | houses  | even        | :w-middle
+        And the place ways
+          | osm_id | class   | type     | name                    | geometry
+          | 2      | highway | tertiary | 'name' : 'Sun Way'      | :w-north
+          | 3      | highway | tertiary | 'name' : 'Cloud Street' | :w-south
+        And the ways
+          | id  | nodes
+          | 10  | 1,100,101,102,2
+          | 11  | 3,200,201,202,4
+        When importing
+        Then table placex contains
+          | object | parent_place_id
+          | N1     | W2
+          | N2     | W2
+          | N3     | W3
+          | N4     | W3
+        And table location_property_osmline contains
+          | object | parent_place_id | startnumber | endnumber
+          | W10    | W2              | 2           | 6
+          | W11    | W3              | 12          | 16
+
+    Scenario: Geometry of points and way don't match (github #253)
         Given the place nodes
-          | osm_id | class | type  | housenumber | geometry
-          | 1      | place | house | 2           | 1 1
-          | 2      | place | house | 8           | 1.001 1.001
-          | 3      | place | house | 4           | 1 1.001
+          | osm_id | class | type   | housenumber | geometry
+          | 1      | place | house  | 10          | 144.9632341 -37.76163
+          | 2      | place | house  | 6           | 144.9630541 -37.7628174
+          | 3      | shop  | supermarket | 2      | 144.9629794 -37.7630755
         And the place ways
           | osm_id | class | type   | housenumber | geometry
-          | 1      | place | houses | even        | 1 1, 1 1.001, 1.001 1.001
+          | 1      | place | houses | even        | 144.9632341 -37.76163,144.9630541 -37.7628172,144.9629794 -37.7630755
         And the ways
           | id | nodes
-          | 1  | 1,3,2
+          | 1  | 1,2,3
         When importing
-        Then node 1 expands to housenumbers
-          | housenumber | centroid
-          | 2           | 1,1
-        Then node 3 expands to housenumbers
-          | housenumber | centroid
-          | 4           | 1,1.001
-          | 6           | 1.0005,1.001
-        And node 2 expands to housenumbers
-          | housenumber | centroid
-          | 8           | 1.001,1.001
+        Then way 1 expands to lines
+          | startnumber | endnumber | geometry
+          | 2           | 6         | 144.9629794 -37.7630755, 144.9630541 -37.7628174
+          | 6           | 10        | 144.9630541 -37.7628174, 144.9632341 -37.76163
 
-    Scenario: Even three point interpolation with odd center point
+    Scenario: Place with missing address information
         Given the place nodes
-          | osm_id | class | type  | housenumber | geometry
-          | 1      | place | house | 2           | 1 1
-          | 2      | place | house | 8           | 1.001 1.001
-          | 3      | place | house | 7           | 1 1.001
+          | osm_id | class   | type   | housenumber | geometry
+          | 1      | place   | house  | 23          | 0.0001 0.0001
+          | 2      | amenity | school |             | 0.0001 0.0002
+          | 3      | place   | house  | 29          | 0.0001 0.0004
         And the place ways
           | osm_id | class | type   | housenumber | geometry
-          | 1      | place | houses | even        | 1 1, 1 1.001, 1.001 1.001
+          | 1      | place | houses | odd         | 0.0001 0.0001,0.0001 0.0002,0.0001 0.0004
         And the ways
           | id | nodes
-          | 1  | 1,3,2
+          | 1  | 1,2,3
         When importing
-        Then node 1 expands to housenumbers
-          | housenumber | centroid
-          | 2           | 1,1
-          | 4           | 1,1.0004
-          | 6           | 1,1.0008
-        Then node 3 expands to housenumbers
-          | housenumber | centroid
-          | 7           | 1,1.001
-        And node 2 expands to housenumbers
-          | housenumber | centroid
-          | 8           | 1.001,1.001
-
-
+        Then way 1 expands to lines
+          | startnumber | endnumber | geometry
+          | 23          | 29        | 0.0001 0.0001, 0.0001 0.0002, 0.0001 0.0004