mirror of
https://github.com/osm-search/Nominatim.git
synced 2026-03-07 10:34:08 +00:00
@@ -207,16 +207,16 @@ async def get_simple_place(conn: SearchConnection, place: ntyp.PlaceRef,
|
|||||||
out = []
|
out = []
|
||||||
|
|
||||||
if details.geometry_simplification > 0.0:
|
if details.geometry_simplification > 0.0:
|
||||||
col = col.ST_SimplifyPreserveTopology(details.geometry_simplification)
|
col = sa.func.ST_SimplifyPreserveTopology(col, details.geometry_simplification)
|
||||||
|
|
||||||
if details.geometry_output & ntyp.GeometryFormat.GEOJSON:
|
if details.geometry_output & ntyp.GeometryFormat.GEOJSON:
|
||||||
out.append(col.ST_AsGeoJSON().label('geometry_geojson'))
|
out.append(sa.func.ST_AsGeoJSON(col).label('geometry_geojson'))
|
||||||
if details.geometry_output & ntyp.GeometryFormat.TEXT:
|
if details.geometry_output & ntyp.GeometryFormat.TEXT:
|
||||||
out.append(col.ST_AsText().label('geometry_text'))
|
out.append(sa.func.ST_AsText(col).label('geometry_text'))
|
||||||
if details.geometry_output & ntyp.GeometryFormat.KML:
|
if details.geometry_output & ntyp.GeometryFormat.KML:
|
||||||
out.append(col.ST_AsKML().label('geometry_kml'))
|
out.append(sa.func.ST_AsKML(col).label('geometry_kml'))
|
||||||
if details.geometry_output & ntyp.GeometryFormat.SVG:
|
if details.geometry_output & ntyp.GeometryFormat.SVG:
|
||||||
out.append(col.ST_AsSVG().label('geometry_svg'))
|
out.append(sa.func.ST_AsSVG(col).label('geometry_svg'))
|
||||||
|
|
||||||
return sql.add_columns(*out)
|
return sql.add_columns(*out)
|
||||||
|
|
||||||
|
|||||||
@@ -100,3 +100,54 @@ def test_lookup_multiple_places(apiobj):
|
|||||||
assert len(result) == 2
|
assert len(result) == 2
|
||||||
|
|
||||||
assert set(r.place_id for r in result) == {332, 4924}
|
assert set(r.place_id for r in result) == {332, 4924}
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.parametrize('gtype', list(napi.GeometryFormat))
|
||||||
|
def test_simple_place_with_geometry(apiobj, gtype):
|
||||||
|
apiobj.add_placex(place_id=332, osm_type='W', osm_id=4,
|
||||||
|
class_='highway', type='residential',
|
||||||
|
name={'name': 'Road'}, address={'city': 'Barrow'},
|
||||||
|
extratags={'surface': 'paved'},
|
||||||
|
parent_place_id=34, linked_place_id=55,
|
||||||
|
admin_level=15, country_code='gb',
|
||||||
|
housenumber='4',
|
||||||
|
postcode='34425', wikipedia='en:Faa',
|
||||||
|
rank_search=27, rank_address=26,
|
||||||
|
importance=0.01,
|
||||||
|
centroid=(23, 34),
|
||||||
|
geometry='POLYGON((23 34, 23.1 34, 23.1 34.1, 23 34))')
|
||||||
|
|
||||||
|
result = apiobj.api.lookup([napi.OsmID('W', 4)],
|
||||||
|
geometry_output=gtype)
|
||||||
|
|
||||||
|
assert len(result) == 1
|
||||||
|
assert result[0].place_id == 332
|
||||||
|
|
||||||
|
if gtype == napi.GeometryFormat.NONE:
|
||||||
|
assert list(result[0].geometry.keys()) == []
|
||||||
|
else:
|
||||||
|
assert list(result[0].geometry.keys()) == [gtype.name.lower()]
|
||||||
|
|
||||||
|
|
||||||
|
def test_simple_place_with_geometry_simplified(apiobj):
|
||||||
|
apiobj.add_placex(place_id=332, osm_type='W', osm_id=4,
|
||||||
|
class_='highway', type='residential',
|
||||||
|
name={'name': 'Road'}, address={'city': 'Barrow'},
|
||||||
|
extratags={'surface': 'paved'},
|
||||||
|
parent_place_id=34, linked_place_id=55,
|
||||||
|
admin_level=15, country_code='gb',
|
||||||
|
housenumber='4',
|
||||||
|
postcode='34425', wikipedia='en:Faa',
|
||||||
|
rank_search=27, rank_address=26,
|
||||||
|
importance=0.01,
|
||||||
|
centroid=(23, 34),
|
||||||
|
geometry='POLYGON((23 34, 22.999 34, 23.1 34, 23.1 34.1, 23 34))')
|
||||||
|
|
||||||
|
result = apiobj.api.lookup([napi.OsmID('W', 4)],
|
||||||
|
geometry_output=napi.GeometryFormat.TEXT,
|
||||||
|
geometry_simplification=0.1)
|
||||||
|
|
||||||
|
assert len(result) == 1
|
||||||
|
assert result[0].place_id == 332
|
||||||
|
assert result[0].geometry == {'text': 'POLYGON((23 34,23.1 34,23.1 34.1,23 34))'}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user