diff --git a/schema/derive.sql b/schema/derive.sql index 6ed5c4a..99d07b6 100644 --- a/schema/derive.sql +++ b/schema/derive.sql @@ -303,15 +303,25 @@ SELECT NULL::text AS state, src.category, CASE - WHEN COALESCE(NULLIF(src.name, ''), '') = '' AND src.category = 'restArea' + WHEN src.category = 'restArea' AND ( + COALESCE(NULLIF(src.name, ''), '') = '' + OR (COALESCE(src.tags_json->>'name', '') = '' + AND COALESCE(src.tags_json->>'brand', '') = '') + ) THEN 'Rest Area' ELSE src.name END AS name, - COALESCE( - NULLIF(src.display_name, ''), - NULLIF(src.name, ''), - CASE WHEN src.category = 'restArea' THEN 'Rest Area' END - ) AS display_name, + CASE + WHEN src.category = 'restArea' AND ( + COALESCE(src.tags_json->>'name', '') = '' + AND COALESCE(src.tags_json->>'brand', '') = '') + THEN 'Rest Area' + ELSE COALESCE( + NULLIF(src.display_name, ''), + NULLIF(src.name, ''), + CASE WHEN src.category = 'restArea' THEN 'Rest Area' END + ) + END AS display_name, src.brand, src.geom, src.tags_json diff --git a/schema/osm2pgsql/openinterstate.lua b/schema/osm2pgsql/openinterstate.lua index 2481563..69f6c8d 100644 --- a/schema/osm2pgsql/openinterstate.lua +++ b/schema/osm2pgsql/openinterstate.lua @@ -125,10 +125,13 @@ function osm2pgsql.process_node(object) local cat = classify_poi(tags) if cat ~= nil then - local display_name = tags.brand or tags.name or tags.operator + -- operator fallback excluded: operator tags (e.g. "Florida Department + -- of Transportation") are not user-facing names. Raw tags are stored + -- in the tags jsonb column for derive-time access if needed. + local display_name = tags.brand or tags.name poi_nodes:insert({ category = cat, - name = tags.name or tags.brand or tags.operator, + name = tags.name or tags.brand, display_name = display_name, brand = tags.brand, tags = tags, @@ -172,10 +175,10 @@ function osm2pgsql.process_way(object) way_geom = object:as_linestring() end if way_geom ~= nil then - local display_name = tags.brand or tags.name or tags.operator + local display_name = tags.brand or tags.name poi_ways:insert({ category = cat, - name = tags.name or tags.brand or tags.operator, + name = tags.name or tags.brand, display_name = display_name, brand = tags.brand, tags = tags,