fix address interpolation for self-intersecting ways

This commit is contained in:
Sarah Hoffmann
2014-11-03 22:41:12 +01:00
parent 4b8632d1e5
commit 59de7c5a9b
4 changed files with 93 additions and 5 deletions

View File

@@ -326,4 +326,50 @@ Feature: Import of address interpolations
| housenumber | centroid
| 8 | 1.001,1.001
Scenario: Interpolation on self-intersecting way
Given the place nodes
| osm_id | class | type | housenumber | geometry
| 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 | even | 0 0, 0 0.001, 0 0.002, 0 0.001
And the ways
| id | nodes
| 1 | 1,2,3,2
When importing
Then node 1 expands to housenumbers
| housenumber | centroid
| 2 | 0,0
| 4 | 0,0.0005
Then node 2 expands to housenumbers
| housenumber | centroid
| 6 | 0,0.001
| 8 | 0,0.0015
Then node 3 expands to housenumbers
| housenumber | centroid
| 10 | 0,0.002
| 8 | 0,0.0015
Scenario: Interpolation on self-intersecting way II
Given the place nodes
| osm_id | class | type | housenumber | geometry
| 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 | 0 0, 0 0.001, 0 0.002, 0 0.001
And the ways
| id | nodes
| 1 | 1,2,3,2
When importing
Then node 1 expands to housenumbers
| housenumber | centroid
| 2 | 0,0
| 4 | 0,0.0005
Then node 2 expands to housenumbers
| housenumber | centroid
| 6 | 0,0.001

View File

@@ -0,0 +1,37 @@
@DB
Feature: Import of objects with broken geometries by osm2pgsql
@Fail
Scenario: Import way with double nodes
Given the osm nodes:
| id | geometry
| 100 | 0 0
| 101 | 0 0.1
| 102 | 0.1 0.2
And the osm ways:
| id | tags | nodes
| 1 | 'highway' : 'primary' | 100 101 101 102
When loading osm data
Then table place contains
| object | class | type | geometry
| W1 | highway | primary | (0 0, 0 0.1, 0.1 0.2)
Scenario: Import of ballon areas
Given the osm nodes:
| id | geometry
| 1 | 0 0
| 2 | 0 0.0001
| 3 | 0.00001 0.0001
| 4 | 0.00001 0
| 5 | -0.00001 0
And the osm ways:
| id | tags | nodes
| 1 | 'highway' : 'unclassified' | 1 2 3 4 1 5
| 2 | 'highway' : 'unclassified' | 1 2 3 4 1
| 3 | 'highway' : 'unclassified' | 1 2 3 4 3
When loading osm data
Then table place contains
| object | geometrytype
| W1 | ST_LineString
| W2 | ST_Polygon
| W3 | ST_LineString

View File

@@ -49,6 +49,7 @@ def check_placex_content(step, tablename):
q = 'SELECT *'
if tablename == 'placex':
q = q + ", ST_X(centroid) as clat, ST_Y(centroid) as clon"
q = q + ", ST_GeometryType(geometry) as geometrytype"
q = q + ' FROM %s where osm_type = %%s and osm_id = %%s' % (tablename,)
if cls is None:
params = (osmtype, osmid)