Filter out urban roads from BLM layer

- Exclude ARTERIAL and COLLECTOR functional classes
- Exclude any route with HWY_CLASS (highways)
- Keeps RESOURCE, LOCAL, and UNKNOWN in rural areas

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Matt 2026-04-30 20:58:58 +00:00
commit f788aefae6

View file

@ -1038,10 +1038,20 @@ function addBlmTrails(map) {
const lineWidth = ["interpolate", ["linear"], ["zoom"], 10, 1.5, 14, 2.5, 16, 3.5] const lineWidth = ["interpolate", ["linear"], ["zoom"], 10, 1.5, 14, 2.5, 16, 3.5]
// Filter out solid surface (paved) // Filter out solid surface (paved)
const excludePaved = [ // Filter out paved surfaces, arterial/collector roads, and highways
const excludeUrban = [
"all", "all",
// Exclude paved
["!=", ["get", "OBSRVE_SRFCE_TYPE"], "SOLID SURFACE"], ["!=", ["get", "OBSRVE_SRFCE_TYPE"], "SOLID SURFACE"],
["!=", ["get", "OBSRVE_SRFCE_TYPE"], "Solid Surface"] ["!=", ["get", "OBSRVE_SRFCE_TYPE"], "Solid Surface"],
// Exclude arterial roads
["!=", ["get", "OBSRVE_FUNC_CLASS"], "ARTERIAL"],
["!=", ["get", "OBSRVE_FUNC_CLASS"], "Arterial"],
// Exclude collector roads
["!=", ["get", "OBSRVE_FUNC_CLASS"], "COLLECTOR"],
["!=", ["get", "OBSRVE_FUNC_CLASS"], "Collector"],
// Exclude designated highways
["!", ["has", "HWY_CLASS"]]
] ]
// Invisible hit-area layer for clicking // Invisible hit-area layer for clicking
@ -1051,7 +1061,7 @@ function addBlmTrails(map) {
source: BLM_SOURCE, source: BLM_SOURCE,
"source-layer": "blm_routes", "source-layer": "blm_routes",
minzoom: 10, minzoom: 10,
filter: excludePaved, filter: excludeUrban,
paint: { paint: {
"line-color": "#000000", "line-color": "#000000",
"line-opacity": 0, "line-opacity": 0,
@ -1066,7 +1076,7 @@ function addBlmTrails(map) {
source: BLM_SOURCE, source: BLM_SOURCE,
"source-layer": "blm_routes", "source-layer": "blm_routes",
minzoom: 10, minzoom: 10,
filter: ["all", excludePaved, filter: ["all", excludeUrban,
["any", ["any",
["==", ["get", "OBSRVE_SRFCE_TYPE"], "NATURAL"], ["==", ["get", "OBSRVE_SRFCE_TYPE"], "NATURAL"],
["==", ["get", "OBSRVE_SRFCE_TYPE"], "Natural"] ["==", ["get", "OBSRVE_SRFCE_TYPE"], "Natural"]
@ -1086,7 +1096,7 @@ function addBlmTrails(map) {
source: BLM_SOURCE, source: BLM_SOURCE,
"source-layer": "blm_routes", "source-layer": "blm_routes",
minzoom: 10, minzoom: 10,
filter: ["all", excludePaved, filter: ["all", excludeUrban,
["any", ["any",
["==", ["get", "OBSRVE_SRFCE_TYPE"], "NATURAL IMPROVED"], ["==", ["get", "OBSRVE_SRFCE_TYPE"], "NATURAL IMPROVED"],
["==", ["get", "OBSRVE_SRFCE_TYPE"], "Natural Improved"] ["==", ["get", "OBSRVE_SRFCE_TYPE"], "Natural Improved"]
@ -1107,7 +1117,7 @@ function addBlmTrails(map) {
source: BLM_SOURCE, source: BLM_SOURCE,
"source-layer": "blm_routes", "source-layer": "blm_routes",
minzoom: 10, minzoom: 10,
filter: ["all", excludePaved, filter: ["all", excludeUrban,
["any", ["any",
["==", ["get", "OBSRVE_SRFCE_TYPE"], "AGGREGATE"], ["==", ["get", "OBSRVE_SRFCE_TYPE"], "AGGREGATE"],
["==", ["get", "OBSRVE_SRFCE_TYPE"], "Aggregate"] ["==", ["get", "OBSRVE_SRFCE_TYPE"], "Aggregate"]
@ -1128,7 +1138,7 @@ function addBlmTrails(map) {
source: BLM_SOURCE, source: BLM_SOURCE,
"source-layer": "blm_routes", "source-layer": "blm_routes",
minzoom: 10, minzoom: 10,
filter: ["all", excludePaved, filter: ["all", excludeUrban,
["any", ["any",
["==", ["get", "OBSRVE_SRFCE_TYPE"], "SNOW"], ["==", ["get", "OBSRVE_SRFCE_TYPE"], "SNOW"],
["==", ["get", "OBSRVE_SRFCE_TYPE"], "Snow"] ["==", ["get", "OBSRVE_SRFCE_TYPE"], "Snow"]
@ -1149,7 +1159,7 @@ function addBlmTrails(map) {
source: BLM_SOURCE, source: BLM_SOURCE,
"source-layer": "blm_routes", "source-layer": "blm_routes",
minzoom: 10, minzoom: 10,
filter: ["all", excludePaved, filter: ["all", excludeUrban,
["!", ["any", ["!", ["any",
["==", ["get", "OBSRVE_SRFCE_TYPE"], "NATURAL"], ["==", ["get", "OBSRVE_SRFCE_TYPE"], "NATURAL"],
["==", ["get", "OBSRVE_SRFCE_TYPE"], "Natural"], ["==", ["get", "OBSRVE_SRFCE_TYPE"], "Natural"],
@ -1176,7 +1186,7 @@ function addBlmTrails(map) {
source: BLM_SOURCE, source: BLM_SOURCE,
"source-layer": "blm_routes", "source-layer": "blm_routes",
minzoom: 12, minzoom: 12,
filter: ["all", excludePaved, ["has", "ROUTE_PRMRY_NM"]], filter: ["all", excludeUrban, ["has", "ROUTE_PRMRY_NM"]],
layout: { layout: {
"text-field": ["get", "ROUTE_PRMRY_NM"], "text-field": ["get", "ROUTE_PRMRY_NM"],
"text-size": 10, "text-size": 10,