mirror of
https://github.com/osm-search/Nominatim.git
synced 2024-11-27 10:43:02 +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
|
RETURNS GEOMETRY
|
||||||
AS $$
|
AS $$
|
||||||
BEGIN
|
BEGIN
|
||||||
RETURN ST_Split(line, ST_ClosestPoint(line, point));
|
RETURN ST_Split(ST_Snap(line, point, 0.0005), point);
|
||||||
END;
|
END;
|
||||||
$$
|
$$
|
||||||
LANGUAGE plpgsql;
|
LANGUAGE plpgsql;
|
||||||
|
@ -229,8 +229,8 @@ Feature: Import of address interpolations
|
|||||||
Given the place nodes
|
Given the place nodes
|
||||||
| osm_id | class | type | housenumber | geometry
|
| osm_id | class | type | housenumber | geometry
|
||||||
| 1 | place | house | 2 | 1 1
|
| 1 | place | house | 2 | 1 1
|
||||||
| 2 | place | house | 8 | 1.001 1.001
|
| 2 | place | house | 14 | 1.001 1.001
|
||||||
| 3 | place | house | 4 | 1 1.001
|
| 3 | place | house | 10 | 1 1.001
|
||||||
And the place ways
|
And the place ways
|
||||||
| osm_id | class | type | housenumber | geometry
|
| osm_id | class | type | housenumber | geometry
|
||||||
| 1 | place | houses | even | 1 1, 1 1.001, 1.001 1.001
|
| 1 | place | houses | even | 1 1, 1 1.001, 1.001 1.001
|
||||||
@ -240,7 +240,52 @@ Feature: Import of address interpolations
|
|||||||
When importing
|
When importing
|
||||||
Then way 1 expands to housenumbers
|
Then way 1 expands to housenumbers
|
||||||
| housenumber | centroid
|
| 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
|
Scenario: Even three point interpolation with odd center point
|
||||||
Given the place nodes
|
Given the place nodes
|
||||||
@ -359,4 +404,21 @@ Feature: Import of address interpolations
|
|||||||
And way 10 expands exactly to housenumbers 4
|
And way 10 expands exactly to housenumbers 4
|
||||||
And way 11 expands exactly to housenumbers 14
|
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