mirror of
https://github.com/osm-search/Nominatim.git
synced 2024-11-23 13:44:36 +03:00
interpolations: snap lines to points, not vice versa
Avoids the occasional rounding problem which might occur when splitting a line anywhere but on a support point, see postgis doc for ST_Split. Fixes #253
This commit is contained in:
parent
555362eabe
commit
6f98fa0fb3
@ -4,7 +4,7 @@ CREATE OR REPLACE FUNCTION split_line_on_node(line GEOMETRY, point GEOMETRY)
|
||||
RETURNS GEOMETRY
|
||||
AS $$
|
||||
BEGIN
|
||||
RETURN ST_Split(line, ST_ClosestPoint(line, point));
|
||||
RETURN ST_Split(ST_Snap(line, point, 0.0005), point);
|
||||
END;
|
||||
$$
|
||||
LANGUAGE plpgsql;
|
||||
|
@ -229,8 +229,8 @@ Feature: Import of address interpolations
|
||||
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
|
||||
| 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, 1 1.001, 1.001 1.001
|
||||
@ -240,7 +240,52 @@ Feature: Import of address interpolations
|
||||
When importing
|
||||
Then way 1 expands to housenumbers
|
||||
| housenumber | centroid
|
||||
| 6 | 1.0005,1.001
|
||||
| 4 | 1,1.00025
|
||||
| 6 | 1,1.0005
|
||||
| 8 | 1,1.00075
|
||||
| 12 | 1.0005,1.001
|
||||
|
||||
Scenario: Simple even four point interpolation
|
||||
Given the place nodes
|
||||
| osm_id | class | type | housenumber | geometry
|
||||
| 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 | even | 1 1, 1 1.001, 1.001 1.001, 1.001 1.002
|
||||
And the ways
|
||||
| id | nodes
|
||||
| 1 | 1,3,2,4
|
||||
When importing
|
||||
Then way 1 expands to housenumbers
|
||||
| housenumber | centroid
|
||||
| 4 | 1,1.00025
|
||||
| 6 | 1,1.0005
|
||||
| 8 | 1,1.00075
|
||||
| 12 | 1.0005,1.001
|
||||
| 16 | 1.001,1.0015
|
||||
|
||||
Scenario: Reverse simple even three point interpolation
|
||||
Given the place nodes
|
||||
| osm_id | class | type | housenumber | geometry
|
||||
| 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.001 1.001, 1 1.001, 1 1
|
||||
And the ways
|
||||
| id | nodes
|
||||
| 1 | 2,3,1
|
||||
When importing
|
||||
Then way 1 expands to housenumbers
|
||||
| housenumber | centroid
|
||||
| 4 | 1,1.00025
|
||||
| 6 | 1,1.0005
|
||||
| 8 | 1,1.00075
|
||||
| 12 | 1.0005,1.001
|
||||
|
||||
Scenario: Even three point interpolation with odd center point
|
||||
Given the place nodes
|
||||
@ -359,4 +404,21 @@ Feature: Import of address interpolations
|
||||
And way 10 expands exactly to housenumbers 4
|
||||
And way 11 expands exactly to housenumbers 14
|
||||
|
||||
Scenario: Geometry of points and way don't match (github #253)
|
||||
Given the place nodes
|
||||
| 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 | 144.9632341 -37.76163,144.9630541 -37.7628172,144.9629794 -37.7630755
|
||||
And the ways
|
||||
| id | nodes
|
||||
| 1 | 1,2,3
|
||||
When importing
|
||||
Then way 1 expands to housenumbers
|
||||
| housenumber | centroid
|
||||
| 4 | 144.963016723312,-37.7629464422819+-0.000005
|
||||
| 8 | 144.9631440856,-37.762223694978+-0.000005
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user