auto-sync: 2026-05-04 11:30:01
This commit is contained in:
@@ -282,28 +282,43 @@ def calc_route_stats(geometry: dict, conn) -> dict | None:
|
|||||||
if grid_key in grid_cache:
|
if grid_key in grid_cache:
|
||||||
hw, tt = grid_cache[grid_key]
|
hw, tt = grid_cache[grid_key]
|
||||||
else:
|
else:
|
||||||
# Bbox ~300м вокруг точки
|
# Tight bbox ~150m — index on (min_lon, max_lon, min_lat, max_lat) is used
|
||||||
delta = 0.003
|
# No ORDER BY to avoid full scan; first bbox hit is good enough for stats
|
||||||
|
delta = 0.0015
|
||||||
try:
|
try:
|
||||||
cur.execute("""
|
cur.execute("""
|
||||||
SELECT highway_type, track_type
|
SELECT highway_type, track_type
|
||||||
FROM trails
|
FROM trails
|
||||||
WHERE min_lon <= ? AND max_lon >= ?
|
WHERE min_lon <= ? AND max_lon >= ?
|
||||||
AND min_lat <= ? AND max_lat >= ?
|
AND min_lat <= ? AND max_lat >= ?
|
||||||
ORDER BY ABS((min_lon + max_lon) / 2.0 - ?) +
|
|
||||||
ABS((min_lat + max_lat) / 2.0 - ?)
|
|
||||||
LIMIT 1
|
LIMIT 1
|
||||||
""", (
|
""", (
|
||||||
mid_lon + delta, mid_lon - delta,
|
mid_lon + delta, mid_lon - delta,
|
||||||
mid_lat + delta, mid_lat - delta,
|
mid_lat + delta, mid_lat - delta,
|
||||||
mid_lon, mid_lat
|
|
||||||
))
|
))
|
||||||
row = cur.fetchone()
|
row = cur.fetchone()
|
||||||
if row:
|
if row:
|
||||||
hw = (row["highway_type"] or "").lower()
|
hw = (row["highway_type"] or "").lower()
|
||||||
tt = (row["track_type"] or "").lower()
|
tt = (row["track_type"] or "").lower()
|
||||||
else:
|
else:
|
||||||
hw, tt = "asphalt", ""
|
# Widen search to ~500m if nothing found nearby
|
||||||
|
delta2 = 0.005
|
||||||
|
cur.execute("""
|
||||||
|
SELECT highway_type, track_type
|
||||||
|
FROM trails
|
||||||
|
WHERE min_lon <= ? AND max_lon >= ?
|
||||||
|
AND min_lat <= ? AND max_lat >= ?
|
||||||
|
LIMIT 1
|
||||||
|
""", (
|
||||||
|
mid_lon + delta2, mid_lon - delta2,
|
||||||
|
mid_lat + delta2, mid_lat - delta2,
|
||||||
|
))
|
||||||
|
row = cur.fetchone()
|
||||||
|
if row:
|
||||||
|
hw = (row["highway_type"] or "").lower()
|
||||||
|
tt = (row["track_type"] or "").lower()
|
||||||
|
else:
|
||||||
|
hw, tt = "asphalt", ""
|
||||||
except Exception:
|
except Exception:
|
||||||
hw, tt = "asphalt", ""
|
hw, tt = "asphalt", ""
|
||||||
grid_cache[grid_key] = (hw, tt)
|
grid_cache[grid_key] = (hw, tt)
|
||||||
|
|||||||
Reference in New Issue
Block a user