for _ in range(int(random.random()*30))))
if self.columns['osm_type'] == 'N' and self.geometry is None:
- self.geometry = "ST_SetSRID(ST_Point(%f, %f), 4326)" % (
- random.random()*360 - 180, random.random()*180 - 90)
+ pt = self.context.osm.grid_node(self.columns['osm_id'])
+ if pt is None:
+ pt = (random.random()*360 - 180, random.random()*180 - 90)
+
+ self.geometry = "ST_SetSRID(ST_Point(%f, %f), 4326)" % pt
else:
assert_is_not_none(self.geometry, "Geometry missing")
query = 'INSERT INTO place (%s, geometry) values(%s, %s)' % (
geometry)
select * from place where not (class='place' and type='houses' and osm_type='W')""")
cur.execute(
- """select insert_osmline (osm_id, housenumber, street, addr_place,
- postcode, country_code, geometry)
- from place where class='place' and type='houses' and osm_type='W'""")
+ """insert into location_property_osmline
+ (osm_id, interpolationtype, street, addr_place,
+ postcode, calculated_country_code, linegeo)
+ SELECT osm_id, housenumber, street, addr_place,
+ postcode, country_code, geometry from place
+ WHERE class='place' and type='houses' and osm_type='W'
+ and ST_GeometryType(geometry) = 'ST_LineString'""")
context.db.commit()
context.nominatim.run_setup_script('index', 'index-noanalyse')
col.db_insert(cur)
context.db.commit()
- context.nominatim.run_update_script('index')
+
+ while True:
+ context.nominatim.run_update_script('index')
+
+ cur = context.db.cursor()
+ cur.execute("SELECT 'a' FROM placex WHERE indexed_status != 0 LIMIT 1")
+ if cur.rowcount == 0:
+ break
@when("marking for delete (?P<oids>.*)")
def delete_places(context, oids):
where, params = NominatimID(oid).table_select()
cur.execute("DELETE FROM place WHERE " + where, params)
context.db.commit()
- context.nominatim.run_update_script('index')
+
+ while True:
+ context.nominatim.run_update_script('index')
+
+ cur = context.db.cursor()
+ cur.execute("SELECT 'a' FROM placex WHERE indexed_status != 0 LIMIT 1")
+ if cur.rowcount == 0:
+ break
@then("placex contains(?P<exact> exactly)?")
def check_placex_contents(context, exact):
eq_('W', nid.typ, "interpolation must be a way")
cur.execute("""SELECT *, ST_AsText(linegeo) as geomtxt
- FROM location_property_osmline WHERE osm_id = %s""",
+ FROM location_property_osmline
+ WHERE osm_id = %s AND startnumber IS NOT NULL""",
(nid.oid, ))
if neg: