State Planner

Ohio · October 21, 2026

Adopted Highway Segments by Group Type

This is a real answer State Planner produced from Ohio’s public data.

Start for free to ask your own version of this question, or anything else about your state.

Start for free →
  1. Map Ohio's Adopt-A-Highway segments, colored by the kind of group that adopted them. How many segments does each ODOT district have and how many are adopted, and which groups have logged the most pickups and bags of litter?


    Adopt-A-Highway segments by ODOT district, status as of the 2026-10-19 load

    DistrictSegmentsAdoptedShare adoptedRetiredCancelledNon-adoptableNo status
    0127311241%1032542
    022916322%1880391
    032518534%4871092
    041546744%01851
    052397933%957562
    0658318131%4038414
    0736914740%14419590
    081819653%101713
    091301310%203940
    103407622%17339466
    1125112449%4153330
    1252318435%24222732
    Ohio3,5851,22734%1,0681541,10333

    "Adopted" means segment status is Adopted. Share adopted is adopted divided by all segments in the district, so it includes the non-adoptable and retired ones in the denominator.

    Currently adopted segments by group type

    Group typeAdopted segmentsGroupsPickupsBags
    Business1751293785
    Service Club127982330
    Other113696841
    Fraternity/Sorority103510189
    Community Service95620889
    In Memory76571842
    Family/Friends7251098
    School48388335
    Church35280288
    Youth Group161600
    Individual11600
    Type not recorded35629715447

    Bags here are per segment as recorded. The pickup and bag figures are the group's own logs, not an audit. Most of the adopted segments are linked to no permit record, so pickups are sparse.

    Groups with the most bags logged (all segments, any status)

    GroupTypeSegmentsPickupsBags
    In Memory of SPC Aaron GardnerIn Memory10565
    Citizens' Climate LobbyCommunity Service10458
    Owens CorningBusiness37241
    Muskingum Adult ProbationOther10205
    Meadow View Church of ChristChurch10166
    CovestroBusiness10134
    Amazon Web ServicesBusiness50117
    AORD Athens Ohio Roller DerbyOther30114
    Licking Valley Lions ClubService Club10105
    New Concord United M Church(blank)2395

    Groups with the most pickups logged (all segments, any status)

    GroupTypeSegmentsPickupsBags
    Garver Asset ProtectionBusiness3941
    Shelly & Sands(blank)2893
    Owens CorningBusiness37241
    Hocking College Dental Hygiene ClinicSchool3525
    Fairfield Co Democratic PartyOther3475
    Central Ohio Roller Derby(blank)1444
    Boy Scout #826(blank)1418
    Wayne Grange(blank)1415

    Map: adopted segments coloured by group type

    Adopted Highway Segments by Group TypeAdopted Highway Segments by Group Type⬇ Image

    Legend (1,227 adopted segments):

    • Blue: Business
    • Green: Community Service
    • Orange: Service Club
    • Purple: In Memory
    • Brown: Other
    • Pink: Fraternity/Sorority
    • Red: Family/Friends
    • Teal: School
    • Yellow-green: Church
    • Navy: Youth Group
    • Light pink: Individual
    • Grey: type not recorded

    Caveats

    • Pickups are recorded per permit, and only 197 adopted segments carry a permit number. Pickup totals are therefore small and incomplete. Bags are recorded per segment, so the bag totals are the more complete measure.
    • Group names are free text. A group that appears under two spellings is counted twice, and the ranking tables use the name as typed.
    • The group-type rows are roughly tallied. The 356 "not recorded" segments are counted separately.

Layers

  • …
    • …
    • …
    • …
    • …
    • …
    • …
    • …
    • …
    • …
    • …
    • …
    • …

Click anything on the map for its details.

The transcript below the answer shows every query it ran. Shapefiles of every layer, at full detail, can be downloaded in State Planner: sign up to ask your own question and export any map.

Data sets used

Ask your own question about Ohio

Send takes you to a free sign-up, no card needed, or to sign in if you have an account. Your question will be waiting in your new chat.

Transcript

What follows is the transcript of this chat as State Planner generated it. It is here to show how the answer above was arrived at: every query State Planner ran, what each one returned, and where the data came from.

transcript.md

↑ Contents

State Planner chat · https://stateplanner.com

  • State: Ohio (OH)
  • Started: October 21, 2026, 11:43 PM UTC
  • Runtime: 42 sec
  • Status: completed
Prompt

Map Ohio's Adopt-A-Highway segments, colored by the kind of group that adopted them. How many segments does each ODOT district have and how many are adopted, and which groups have logged the most pickups and bags of litter?

Model: Anthropic: Claude Haiku 5.5 (anthropic/claude-haiku-5.5, via openrouter)

Response

Adopt-A-Highway segments by ODOT district, status as of the 2026-10-19 load

DistrictSegmentsAdoptedShare adoptedRetiredCancelledNon-adoptableNo status
0127311241%1032542
022916322%1880391
032518534%4871092
041546744%01851
052397933%957562
0658318131%4038414
0736914740%14419590
081819653%101713
091301310%203940
103407622%17339466
1125112449%4153330
1252318435%24222732
Ohio3,5851,22734%1,0681541,10333

"Adopted" means segment status is Adopted. Share adopted is adopted divided by all segments in the district, so it includes the non-adoptable and retired ones in the denominator.

Currently adopted segments by group type

Group typeAdopted segmentsGroupsPickupsBags
Business1751293785
Service Club127982330
Other113696841
Fraternity/Sorority103510189
Community Service95620889
In Memory76571842
Family/Friends7251098
School48388335
Church35280288
Youth Group161600
Individual11600
Type not recorded35629715447

Bags here are per segment as recorded. The pickup and bag figures are the group's own logs, not an audit. Most of the adopted segments are linked to no permit record, so pickups are sparse.

Groups with the most bags logged (all segments, any status)

GroupTypeSegmentsPickupsBags
In Memory of SPC Aaron GardnerIn Memory10565
Citizens' Climate LobbyCommunity Service10458
Owens CorningBusiness37241
Muskingum Adult ProbationOther10205
Meadow View Church of ChristChurch10166
CovestroBusiness10134
Amazon Web ServicesBusiness50117
AORD Athens Ohio Roller DerbyOther30114
Licking Valley Lions ClubService Club10105
New Concord United M Church(blank)2395

Groups with the most pickups logged (all segments, any status)

GroupTypeSegmentsPickupsBags
Garver Asset ProtectionBusiness3941
Shelly & Sands(blank)2893
Owens CorningBusiness37241
Hocking College Dental Hygiene ClinicSchool3525
Fairfield Co Democratic PartyOther3475
Central Ohio Roller Derby(blank)1444
Boy Scout #826(blank)1418
Wayne Grange(blank)1415

Map: adopted segments coloured by group type

Adopted Highway Segments by Group Type

Legend (1,227 adopted segments):

  • Blue: Business
  • Green: Community Service
  • Orange: Service Club
  • Purple: In Memory
  • Brown: Other
  • Pink: Fraternity/Sorority
  • Red: Family/Friends
  • Teal: School
  • Yellow-green: Church
  • Navy: Youth Group
  • Light pink: Individual
  • Grey: type not recorded

Caveats

  • Pickups are recorded per permit, and only 197 adopted segments carry a permit number. Pickup totals are therefore small and incomplete. Bags are recorded per segment, so the bag totals are the more complete measure.
  • Group names are free text. A group that appears under two spellings is counted twice, and the ranking tables use the name as typed.
  • The group-type rows are roughly tallied. The 356 "not recorded" segments are counted separately.
Exploratory Queries
Query 1 — See segment status and group type values
   SELECT segment_status,
          group_type,
          count(*) n,
          count(group_name) named,
          sum(total_num_pick_ups) picks,
          sum(total_num_of_bags) bags
     FROM oh_adopt_a_highway
 GROUP BY 1,
          2
 ORDER BY 3 DESC
segment_statusgroup_typennamedpicksbags
Non-Adoptable Sponsor-A-Highway69396
Retired51050933242
Non-Adoptable Unsafe4011
Adopted35635615447
AdoptedBusiness1751753785
RetiredBusiness17117119332
AdoptedService Club1271272330
AdoptedOther1131136841
AdoptedFraternity/Sorority1031030203
AdoptedCommunity Service95950889
AdoptedIn Memory76761847
AdoptedFamily/Friends7272098
RetiredCommunity Service6060129
Cancelled5643
RetiredOther5555536
RetiredFraternity/Sorority5353
AdoptedSchool48488335
RetiredSchool4444626
RetiredChurch4242210
RetiredService Club4141226
RetiredIn Memory373723
AdoptedChurch35350288
CancelledBusiness3131211
RetiredFamily/Friends303010
2713

25 out of 47 are listed here.

data/turn-1-query-1.csv

Query 2 — Count segments and adopted segments per ODOT district
   SELECT odot_district,
          count(*) segments,
          count(*) FILTER (
              WHERE group_name IS NOT NULL
                AND group_name <> ''
          ) adopted,
          count(*) FILTER (
              WHERE segment_status ILIKE '%avail%'
          ) available
     FROM oh_adopt_a_highway
 GROUP BY 1
 ORDER BY 1
odot_districtsegmentsadoptedavailable
012732180
022912510
032511470
04154840
052391840
065832720
073693100
081811070
09130360
103402800
112512190
125234450

data/turn-1-query-2.csv

Query 3 — Break district segment counts down by status
   SELECT odot_district,
          count(*) segments,
          count(*) FILTER (
              WHERE segment_status = 'Adopted'
          ) adopted,
          count(*) FILTER (
              WHERE segment_status = 'Retired'
          ) retired,
          count(*) FILTER (
              WHERE segment_status = 'Cancelled'
          ) cancelled,
          count(*) FILTER (
              WHERE segment_status LIKE 'Non-Adoptable%'
          ) non_adoptable,
          count(*) FILTER (
              WHERE segment_status IS NULL
          ) no_status
     FROM oh_adopt_a_highway
 GROUP BY 1
 ORDER BY 1
odot_districtsegmentsadoptedretiredcancellednon_adoptableno_status
012731121032542
02291631880391
03251854871092
041546701851
0523979957562
065831814038414
0736914714419590
0818196101713
0913013203940
103407617339466
112511244153330
1252318424222732

data/turn-1-query-3.csv

Query 4 — Check whether pickup counts repeat across segments sharing a permit
   SELECT count(*) segs,
          count(DISTINCT permit_id) permits,
          count(DISTINCT current_permit_number) cur_permits,
          count(DISTINCT group_name) groups,
          count(*) FILTER (
              WHERE permit_id IS NULL
          ) no_permit
     FROM oh_adopt_a_highway
    WHERE segment_status = 'Adopted'
segspermitscur_permitsgroupsno_permit
12271973368791030

data/turn-1-query-4.csv

Query 5 — Check how pickups and bags repeat across segments of one permit
     WITH a AS (
             SELECT *
               FROM oh_adopt_a_highway
              WHERE segment_status = 'Adopted'
          )
   SELECT count(*) FILTER (
              WHERE permit_id IS NOT NULL
          ) segs_with_permit,
          count(DISTINCT permit_id) permits,
          sum(total_num_pick_ups) FILTER (
              WHERE permit_id IS NOT NULL
          ) raw_picks_with_permit,
          (
             SELECT sum(p)
               FROM (
                       SELECT max(total_num_pick_ups) p
                         FROM a
                        WHERE permit_id IS NOT NULL
                     GROUP BY permit_id
                    ) x
          ) dedup_picks,
          sum(total_num_pick_ups) FILTER (
              WHERE permit_id IS NULL
          ) picks_no_permit,
          sum(total_num_of_bags) FILTER (
              WHERE permit_id IS NULL
          ) bags_no_permit,
          (
             SELECT sum(p)
               FROM (
                       SELECT max(total_num_of_bags) p
                         FROM a
                        WHERE permit_id IS NOT NULL
                     GROUP BY permit_id
                    ) x
          ) dedup_bags
     FROM a
segs_with_permitpermitsraw_picks_with_permitdedup_pickspicks_no_permitbags_no_permitdedup_bags
197197353504606457

data/turn-1-query-5.csv

Query 6 — See whether bag totals repeat across a group's segments
     WITH a AS (
             SELECT *
               FROM oh_adopt_a_highway
              WHERE segment_status = 'Adopted'
          )
   SELECT count(*) groups,
          sum(segs) segs,
          sum(
          CASE
                    WHEN distinct_bags = 1
                          AND segs > 1 THEN 1
                              ELSE 0
          END
          ) groups_same_bags_multi,
          sum(
          CASE
                    WHEN segs > 1 THEN 1
                    ELSE 0
          END
          ) multi_seg_groups,
          max(segs) max_segs
     FROM (
             SELECT group_name,
                    count(*) segs,
                    count(DISTINCT total_num_of_bags) distinct_bags
               FROM a
           GROUP BY group_name
          ) g
groupssegsgroups_same_bags_multimulti_seg_groupsmax_segs
87912272916311

data/turn-1-query-6.csv

Query 7 — Rank groups by bags of litter
     WITH r AS (
             SELECT group_name,
                    group_type,
                    coalesce(permit_id, segment_id) k,
                    segment_status,
                    max(total_num_pick_ups) pk,
                    max(total_num_of_bags) bg,
                    count(*) segs
               FROM oh_adopt_a_highway
              WHERE group_name IS NOT NULL
                AND group_name <> ''
           GROUP BY 1,
                    2,
                    3,
                    4
          ),
          g AS (
             SELECT group_name,
                    max(group_type) gt,
                    string_agg(DISTINCT segment_status, ', ') statuses,
                    sum(segs) segments,
                    sum(coalesce(pk, 0)) picks,
                    sum(coalesce(bg, 0)) bags
               FROM r
           GROUP BY group_name
          )
   SELECT group_name AS "Group",
          gt AS "Type",
          statuses AS "Segment status",
          segments AS "Segments",
          picks AS "Pickups",
          bags AS "Bags"
     FROM g
 ORDER BY bags DESC
    LIMIT 20
GroupTypeSegment statusSegmentsPickupsBags
In Memory of SPC Aaron GardnerIn MemoryAdopted10565
Citizens' Climate LobbyCommunity ServiceAdopted10458
Owens CorningBusinessCancelled, Retired37241
Muskingum Adult ProbationOtherAdopted10205
Meadow View Church of ChristChurchAdopted10166
CovestroBusinessAdopted10134
Amazon Web ServicesBusinessAdopted50117
AORD Athens Ohio Roller DerbyOtherAdopted, Cancelled, Retired30114
Licking Valley Lions ClubService ClubAdopted10105
New Concord United M ChurchRetired2395
Shelly & SandsAdopted2893
Memory of Johnathan P WoodIn MemoryAdopted2092
Judge Drew Canon, Adult Prob.OtherAdopted2181
Zane State College Natural ResourcesSchoolAdopted1081
River View Student CouncilSchoolAdopted2176
Fairfield Co Democratic PartyOtherAdopted3475
Friends of 690Community ServiceAdopted1071
Williamson Committee (Shane & Rona & Ray Ray)OtherAdopted1071
Progressive Foam Tech.BusinessAdopted3162
Oldcastle InfrastructureBusinessAdopted1059

data/turn-1-query-7.csv

Query 8 — Rank groups by pickups
     WITH r AS (
             SELECT group_name,
                    group_type,
                    coalesce(permit_id, segment_id) k,
                    segment_status,
                    max(total_num_pick_ups) pk,
                    max(total_num_of_bags) bg,
                    count(*) segs
               FROM oh_adopt_a_highway
              WHERE group_name IS NOT NULL
                AND group_name <> ''
           GROUP BY 1,
                    2,
                    3,
                    4
          ),
          g AS (
             SELECT group_name,
                    max(group_type) gt,
                    string_agg(DISTINCT segment_status, ', ') statuses,
                    sum(segs) segments,
                    sum(coalesce(pk, 0)) picks,
                    sum(coalesce(bg, 0)) bags
               FROM r
           GROUP BY group_name
          )
   SELECT group_name AS "Group",
          gt AS "Type",
          statuses AS "Segment status",
          segments AS "Segments",
          picks AS "Pickups",
          bags AS "Bags"
     FROM g
 ORDER BY picks DESC,
          bags DESC
    LIMIT 20
GroupTypeSegment statusSegmentsPickupsBags
Garver Asset ProtectionBusinessAdopted, Retired3941
Shelly & SandsAdopted2893
Owens CorningBusinessCancelled, Retired37241
Hocking College Dental Hygiene ClinicSchoolCancelled, Retired3525
Fairfield Co Democratic PartyOtherAdopted3475
Central Ohio Roller DerbyRetired1444
Boy Scout #826Retired1418
Wayne GrangeRetired1415
New Concord United M ChurchRetired2395
Mt. Vernon Nazarene Univ. A.D.SchoolAdopted2354
North Valley BankBusinessRetired1350
Gamblers MCCOtherRetired1322
Cowboy's CaretakersRetired130
The Gels HomeRetired130
Lakewood National Honor SocietySchoolAdopted2220
Zane State Criminal JusticeSchoolAdopted2219
Muskingum Hills RuritanOtherRetired1214
EMerge Real EstateBusinessCancelled2211
16:15 Skate MinistryRetired1211
Keene UMCChurchRetired1210

data/turn-1-query-8.csv

Query 9 — Totals by group type for currently adopted segments
     WITH r AS (
             SELECT group_type,
                    coalesce(permit_id, segment_id) k,
                    segment_status,
                    group_name,
                    max(total_num_pick_ups) pk,
                    max(total_num_of_bags) bg
               FROM oh_adopt_a_highway
              WHERE segment_status = 'Adopted'
           GROUP BY 1,
                    2,
                    3,
                    4
          )
   SELECT coalesce(group_type, '(blank)') AS "Group type",
          count(*) AS "Adopted segments",
          count(DISTINCT group_name) AS "Groups",
          sum(coalesce(pk, 0)) AS "Pickups",
          sum(coalesce(bg, 0)) AS "Bags"
     FROM r
 GROUP BY 1
 ORDER BY "Bags" DESC
Group typeAdopted segmentsGroupsPickupsBags
Community Service94620889
In Memory73571842
Other112696841
Business1741293785
(blank)35529715447
School48388335
Service Club127982330
Church35280288
Fraternity/Sorority101510189
Family/Friends7251098
Youth Group161600
Individual11600

data/turn-1-query-9.csv

Map Layer Queries
Adopted segments — colored by "group_kind": Business (#1f77b4), Community Service (#2ca02c), Service Club (#ff7f0e), In Memory (#9467bd), Other (#8c564b), Fraternity/Sorority (#e377c2), Family/Friends (#d62728), School (#17becf), Church (#bcbd22), Youth Group (#000080), Individual (#ff99cc), Type not recorded (#555555)
   SELECT geom,
          coalesce(nullif(trim(group_type), ''), 'Not recorded') AS group_kind,
          group_name AS "Group",
          route_type || ' ' || route_nbr AS "Route",
          county AS "County",
          odot_district AS "ODOT district",
          total_num_pick_ups AS "Pickups(permit)",
          total_num_of_bags AS "Bags"
     FROM oh_adopt_a_highway
    WHERE segment_status = 'Adopted'

Picture: maps/turn-1-adopt-a-highway-group-types.png

Used Data Sets

data/turn-1-query-1.csv

↑ Contents
segment_statusgroup_typennamedpicksbags
Non-Adoptable Sponsor-A-Highway69396
Retired51050933242
Non-Adoptable Unsafe4011
Adopted35635615447
AdoptedBusiness1751753785
RetiredBusiness17117119332
AdoptedService Club1271272330
AdoptedOther1131136841
AdoptedFraternity/Sorority1031030203
AdoptedCommunity Service95950889
AdoptedIn Memory76761847
AdoptedFamily/Friends7272098
RetiredCommunity Service6060129
Cancelled5643
RetiredOther5555536
RetiredFraternity/Sorority5353
AdoptedSchool48488335
RetiredSchool4444626
RetiredChurch4242210
RetiredService Club4141226
RetiredIn Memory373723
AdoptedChurch35350288
CancelledBusiness3131211
RetiredFamily/Friends303010
2713
RetiredYouth Group2222
CancelledCommunity Service1717
AdoptedYouth Group161600
CancelledService Club1414
CancelledFamily/Friends1111
AdoptedIndividual1111
CancelledChurch77
CancelledSchool66
CancelledOther66
Non-Adoptable Construction Zone50
Community Service44
CancelledIn Memory44
Non-Adoptable Inmate20
RetiredOther 11
Non-Adoptable Sponsor-A-HighwayOther11
CancelledFraternity/Sorority11
Non-Adoptable UnsafeYouth Group11
RetiredIndividual11
Business11
Other11
CancelledOther 11
Retired11

47 rows.

data/turn-1-query-2.csv

↑ Contents
odot_districtsegmentsadoptedavailable
012732180
022912510
032511470
04154840
052391840
065832720
073693100
081811070
09130360
103402800
112512190
125234450

12 rows.

data/turn-1-query-3.csv

↑ Contents
odot_districtsegmentsadoptedretiredcancellednon_adoptableno_status
012731121032542
02291631880391
03251854871092
041546701851
0523979957562
065831814038414
0736914714419590
0818196101713
0913013203940
103407617339466
112511244153330
1252318424222732

12 rows.

data/turn-1-query-4.csv

↑ Contents
segspermitscur_permitsgroupsno_permit
12271973368791030

1 row.

data/turn-1-query-5.csv

↑ Contents
segs_with_permitpermitsraw_picks_with_permitdedup_pickspicks_no_permitbags_no_permitdedup_bags
197197353504606457

1 row.

data/turn-1-query-6.csv

↑ Contents
groupssegsgroups_same_bags_multimulti_seg_groupsmax_segs
87912272916311

1 row.

data/turn-1-query-7.csv

↑ Contents
GroupTypeSegment statusSegmentsPickupsBags
In Memory of SPC Aaron GardnerIn MemoryAdopted10565
Citizens' Climate LobbyCommunity ServiceAdopted10458
Owens CorningBusinessCancelled, Retired37241
Muskingum Adult ProbationOtherAdopted10205
Meadow View Church of ChristChurchAdopted10166
Covestro BusinessAdopted10134
Amazon Web ServicesBusinessAdopted50117
AORD Athens Ohio Roller DerbyOther Adopted, Cancelled, Retired30114
Licking Valley Lions ClubService ClubAdopted10105
New Concord United M ChurchRetired2395
Shelly & SandsAdopted2893
Memory of Johnathan P WoodIn MemoryAdopted2092
Judge Drew Canon, Adult Prob.OtherAdopted2181
Zane State College Natural ResourcesSchoolAdopted1081
River View Student CouncilSchoolAdopted2176
Fairfield Co Democratic PartyOtherAdopted3475
Friends of 690Community ServiceAdopted1071
Williamson Committee (Shane & Rona & Ray Ray)OtherAdopted1071
Progressive Foam Tech.BusinessAdopted3162
Oldcastle InfrastructureBusinessAdopted1059

20 rows.

data/turn-1-query-8.csv

↑ Contents
GroupTypeSegment statusSegmentsPickupsBags
Garver Asset ProtectionBusinessAdopted, Retired3941
Shelly & SandsAdopted2893
Owens CorningBusinessCancelled, Retired37241
Hocking College Dental Hygiene ClinicSchoolCancelled, Retired3525
Fairfield Co Democratic PartyOtherAdopted3475
Central Ohio Roller DerbyRetired1444
Boy Scout #826Retired1418
Wayne GrangeRetired1415
New Concord United M ChurchRetired2395
Mt. Vernon Nazarene Univ. A.D.SchoolAdopted2354
North Valley BankBusinessRetired1350
Gamblers MCC OtherRetired1322
Cowboy's CaretakersRetired130
The Gels HomeRetired130
Lakewood National Honor SocietySchoolAdopted2220
Zane State Criminal JusticeSchoolAdopted2219
Muskingum Hills RuritanOtherRetired1214
EMerge Real EstateBusinessCancelled2211
16:15 Skate MinistryRetired1211
Keene UMCChurchRetired1210

20 rows.

data/turn-1-query-9.csv

↑ Contents
Group typeAdopted segmentsGroupsPickupsBags
Community Service94620889
In Memory73571842
Other112696841
Business1741293785
(blank)35529715447
School48388335
Service Club127982330
Church35280288
Fraternity/Sorority101510189
Family/Friends7251098
Youth Group161600
Individual11600

12 rows.

provenance/oh_adopt_a_highway.md

↑ Contents

Provenance: oh_adopt_a_highway

This file describes how the rows in PostgreSQL table oh_adopt_a_highway were obtained from an external source: where they were fetched and how fields were renamed and typed. Field meanings are in the mapping table below.

Identity
Pipeline (TIMS family)

Ohio DOT TIMS publishes this layer on the TIMS data page. The catalog behind that page is GET https://tims.dot.state.oh.us/tims/api/glossary. Each entry names a MapServer layer URL.

Data is fetched as GeoJSON from that layer's REST query endpoint (where=1=1, outFields=*, outSR=4326, f=geojson), paginated with resultOffset / resultRecordCount. GeoJSON was chosen over the portal's CSV/SHP/GDB/KMZ exports because it keeps full attribute names, keeps geometry, and loads into PostGIS via ST_GeomFromGeoJSON.

Esri field names become lowercase snake_case PostgreSQL columns (non [a-z0-9_] → _). Dates stored as Esri epoch-milliseconds become timestamptz. Geometry is ST_SetSRID(ST_GeomFromGeoJSON(…), 4326), wrapped in ST_Multi when the table's stored type is Multi*. Esri shape-area / shape-length system fields are dropped.

The same MapServer query is used whenever the table is refreshed.

Field → column mapping
Source fieldColumnEsri typeDescription
OBJECTIDobjectidesriFieldTypeOID
NLFIDnlfidesriFieldTypeStringNetwork Linear Feature Identifier of the route
CRScrsesriFieldTypeStringCounty, route and begin county milepost of route
ODOT_DISTRICTodot_districtesriFieldTypeStringODOT District Number
COUNTYcountyesriFieldTypeStringFull County Name
COUNTY_CDcounty_cdesriFieldTypeStringThree Character County Code
ROUTE_TYPEroute_typeesriFieldTypeStringType of route - IR, US, SR, CR, TR, MR, etc
ROUTE_NBRroute_nbresriFieldTypeString5 Digit Route Number
ROUTE_SUFFIXroute_suffixesriFieldTypeStringA, B, C, D, I, F, T etc.
CTL_BEGIN_NBRctl_begin_nbresriFieldTypeDoubleCounty log point of start point
CTL_END_NBRctl_end_nbresriFieldTypeDoubleCounty log point of end point
STL_BEGIN_NBRstl_begin_nbresriFieldTypeDoubleState log point of start point
STL_END_NBRstl_end_nbresriFieldTypeDoubleState log point of end point
LATITUDE_DD_BEGINlatitude_dd_beginesriFieldTypeDoubleLatitude of start point
LATITUDE_DD_ENDlatitude_dd_endesriFieldTypeDoubleLatitude of end point
LONGITUDE_DD_BEGINlongitude_dd_beginesriFieldTypeDoubleLongitude of start point
LONGITUDE_DD_ENDlongitude_dd_endesriFieldTypeDoubleLongitude of end point
PERP_DATEperp_dateesriFieldTypeDateDate of Linear Referencing System(LRS) highway segment is located against
SEGMENT_STATUSsegment_statusesriFieldTypeStringStatus of AAH segment
SEGMENT_IDsegment_idesriFieldTypeStringUnique ID for AAH segment
GROUP_NAMEgroup_nameesriFieldTypeStringName of AAH group
GROUP_TYPEgroup_typeesriFieldTypeStringType of AAH group
RECOG_SIGN_STATUSrecog_sign_statusesriFieldTypeStringStatus of AAH group's recognition sign
GOLD_STAR_GROUPgold_star_groupesriFieldTypeStringAAH group's Gold Star Status
GOLD_STAR_SIGN_STATUSgold_star_sign_statusesriFieldTypeStringStatus of AAH group's Gold Star Recognition Sign
DATE_AWARDED_GOLDdate_awarded_goldesriFieldTypeDateDate that AAH group was awarded Gold Star Status
GROUP_START_DATEgroup_start_dateesriFieldTypeDateDate the AAH group started in AAH program
CURRENT_PERMIT_NUMBERcurrent_permit_numberesriFieldTypeStringAAH group's current or most recent permit number
PERMIT_IDpermit_idesriFieldTypeStringUnique ID of record
PERMIT_STATUSpermit_statusesriFieldTypeStringStatus of AAH group's permit record
PERMIT_ISSUE_DATEpermit_issue_dateesriFieldTypeDateDate the permit was issued
PERMIT_END_DATEpermit_end_dateesriFieldTypeDateDate of permit expiration
PERMIT_COMMENTpermit_commentesriFieldTypeStringFree form comment field for permit
PERMIT_ON_FILEpermit_on_fileesriFieldTypeStringY/N field for if the permit is attached to the permit record
TOTAL_NUM_PICK_UPStotal_num_pick_upsesriFieldTypeIntegerTotal number of pickups on file for the current or most recent permit
TOTAL_NUM_OF_BAGStotal_num_of_bagsesriFieldTypeIntegerTotal number of bags reported for all pickups on file for most recent permit
LAST_PICK_UP_DATElast_pick_up_dateesriFieldTypeDateDate of the last pickup on file for the permit
(feature geometry)geomST_Multi(ST_SetSRID(ST_GeomFromGeoJSON(…), 4326))Feature geometry, WGS84
Geometry
  • SRID 4326 (WGS84). GIST index on geom.
  • Empty / null geometries stored as SQL NULL.

© 2026 State Planner