CINXE.COM
Resources - Interline Technologies
<!DOCTYPE html> <html lang="en" data-color-scheme="system" class="scroll-smooth"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>Resources - Interline Technologies</title> <meta name="HandheldFriendly" content="True" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="theme-color" content="#F3A556"> <link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link rel="preload stylesheet" href="https://fonts.googleapis.com/css2?family=DM+Sans:wght@300..800&display=swap" as="style" onload="this.onload=null;this.rel='stylesheet'" crossorigin> <style>body { --font-headings: 'DM Sans', sans-serif; }</style> <style>body { --font-body: 'DM Sans', sans-serif; }</style> <script type="module" src="https://www.interline.io/assets/built/app.js?v=5934dd6b63"></script> <link rel="stylesheet" type="text/css" href="https://www.interline.io/assets/built/app.css?v=5934dd6b63" /> <script> let preferredTheme = localStorage.getItem('PREFERRED_COLOR_SCHEME') || `system`; document.documentElement.setAttribute('data-color-scheme', preferredTheme); // Global values needed const themeGlobal = { siteUrl: 'https://www.interline.io', currentPage: parseInt(''), nextPage: parseInt(''), nextPageLink: '', maxPages: parseInt(''), lastPage: `` === `` ? true : false, postsPerPage: parseInt('12'), total: parseInt(''), searchJobsFeaturedFirst: false } function hexToRgb(hexColor) { if (hexColor.slice(0, 1) === '#') { hexColor = hexColor.slice(1); } if (hexColor.length === 3) { hexColor = hexColor.split('').map(function (hex) { return hex + hex;}).join(''); } const r = parseInt(hexColor.substr(0,2),16); const g = parseInt(hexColor.substr(2,2),16); const b = parseInt(hexColor.substr(4,2),16); return [r,g,b] } // Get contrast color; function getColorContrast(hexColor) { const rgb = hexToRgb(hexColor); let yiq = ((rgb[0] * 299) + (rgb[1] * 587) + (rgb[2] * 114)) / 1000; const colorContrast = (yiq >= 128) ? 'hsl(0 0% 0%)' : 'hsl(0 0% 100%)'; // return return colorContrast }; function hexToHsl(hexColor) { const rgb = hexToRgb(hexColor); // Make r, g, and b fractions of 1 const r = rgb[0]/255; const g = rgb[1]/255; const b = rgb[2]/255; const max = Math.max(r, g, b), min = Math.min(r, g, b); let h, s, l = (max + min) / 2; if ( max == min ) { h = s = 0; } else { let d = max - min; s = l > 0.5 ? d / (2 - max - min) : d / (max + min); switch(max){ case r: h = (g - b) / d + (g < b ? 6 : 0); break; case g: h = (b - r) / d + 2; break; case b: h = (r - g) / d + 4; break; } h /= 6; } return [Math.round(h * 360),Math.round(s * 100),Math.round(l * 100)] } function setBrandHSL(hex) { const colorHsl = hexToHsl(hex) document.documentElement.style.setProperty('--color-brand-hsl', `${colorHsl[0]} ${colorHsl[1]}% ${colorHsl[2]}%`); document.documentElement.style.setProperty('--color-brand-contrast', getColorContrast(hex)); } setBrandHSL("#F3A556"); </script> <link rel="icon" href="https://www.interline.io/content/images/2024/09/favicon.ico" type="image/x-icon"> <link rel="canonical" href="https://www.interline.io/resources/"> <meta name="referrer" content="no-referrer-when-downgrade"> <meta property="og:site_name" content="Interline Technologies"> <meta property="og:type" content="website"> <meta property="og:title" content="Resources"> <meta property="og:description" content="We're pleased to offer the following complementary resources: * Interline Blog * Applied Research Reports * Transitland website * OSM Extracts website And we're pleased to offer the following paid resources: * Expert Consulting Services"> <meta property="og:url" content="https://www.interline.io/resources/"> <meta property="article:published_time" content="2024-11-01T19:57:13.000Z"> <meta property="article:modified_time" content="2024-11-01T20:01:08.000Z"> <meta name="twitter:card" content="summary"> <meta name="twitter:title" content="Resources"> <meta name="twitter:description" content="We're pleased to offer the following complementary resources: * Interline Blog * Applied Research Reports * Transitland website * OSM Extracts website And we're pleased to offer the following paid resources: * Expert Consulting Services"> <meta name="twitter:url" content="https://www.interline.io/resources/"> <meta name="twitter:label1" content="Written by"> <meta name="twitter:data1" content="Drew Dara-Abrams"> <script type="application/ld+json"> { "@context": "https://schema.org", "@type": "Article", "publisher": { "@type": "Organization", "name": "Interline Technologies", "url": "https://www.interline.io/", "logo": { "@type": "ImageObject", "url": "https://www.interline.io/content/images/2023/10/Interline-logo-full-1.png" } }, "author": { "@type": "Person", "name": "Drew Dara-Abrams", "image": { "@type": "ImageObject", "url": "https://www.gravatar.com/avatar/4bac2feda69c215e53b72757902c7a5e?s=250&r=x&d=mp", "width": 250, "height": 250 }, "url": "https://www.interline.io/blog/author/drew/", "sameAs": [] }, "headline": "Resources", "url": "https://www.interline.io/resources/", "datePublished": "2024-11-01T19:57:13.000Z", "dateModified": "2024-11-01T20:01:08.000Z", "description": "We're pleased to offer the following complementary resources:\n\n * Interline Blog\n * Applied Research Reports\n * Transitland website\n * OSM Extracts website\n\nAnd we're pleased to offer the following paid resources:\n\n * Expert Consulting Services", "mainEntityOfPage": "https://www.interline.io/resources/" } </script> <meta name="generator" content="Ghost 5.101"> <link rel="alternate" type="application/rss+xml" title="Interline Technologies" href="https://www.interline.io/blog/rss/"> <script defer src="https://cdn.jsdelivr.net/ghost/sodo-search@~1.5/umd/sodo-search.min.js" data-key="7afadadffdaf89f0b9d751f7f4" data-styles="https://cdn.jsdelivr.net/ghost/sodo-search@~1.5/umd/main.css" data-sodo-search="https://interline.ghost.io/" data-locale="en" crossorigin="anonymous"></script> <link href="https://www.interline.io/webmentions/receive/" rel="webmention"> <script defer src="/public/cards.min.js?v=5934dd6b63"></script><style>:root {--ghost-accent-color: #F3A556;}</style> <link rel="stylesheet" type="text/css" href="/public/cards.min.css?v=5934dd6b63"> <meta name="fediverse:creator" content="@interline@mastodon.social"> <script defer data-domain="interline.io" src="https://plausible.io/js/script.file-downloads.hash.outbound-links.pageview-props.tagged-events.js"></script> <script>window.plausible = window.plausible || function() { (window.plausible.q = window.plausible.q || []).push(arguments) }</script> <style> footer .is-subitem { margin-left: 1.25em !important; font-weight: lighter !important; } </style> </head> <body class="page-template page-resources subpixel-antialiased relative overflow-x-hidden bg-bgr text-typ" x-data="{ menuOpen: false }" :class="menuOpen ? 'overflow-hidden' : 'overflow-y-auto'" data-user="visitor" @keydown.escape="menuOpen = false" @keydown.cmk.k="document.querySelector('[data-ghost-search]').click()" x-init="navigator.platform.includes('Win') && document.body.classList.add('is-win')" > <header class="px-4 sm:px-6 text-typ whitespace-nowrap sticky top-0 z-[1000] bg-bgr lg:bg-transparent" data-header x-init="renderSubmenus();window.pageYOffset > 50 ? isScrolledOnload = true : null" x-data="{ isScrolled: false, isScrolledOnload: false }" @scroll.window="isScrolled = (window.pageYOffset < 50) ? false : true;window.pageYOffset <= 50 ? isScrolledOnload = false : null" :class="[isScrolled ? 'is-scrolled' : '',isScrolledOnload ? 'is-scrolled-onload' : '']"> <div class="max-w-container mx-auto py-4 md:py-6 flex items-center justify-center gap-4 relative before:content-[''] before:absolute before:bottom-0 before:left-0 before:w-full before:h-[1px] before:bg-fading"> <div class="flex-1 flex justify-start lg:transition-move duration-300" data-header-brand> <a class="" href="https://www.interline.io" data-brand> <picture data-logo='dark'> <source srcset="/content/images/size/w100/format/webp/2024/11/interline-logo-white-on-transparent-2.png 100w, /content/images/size/w320/format/webp/2024/11/interline-logo-white-on-transparent-2.png 320w, /content/images/size/w640/format/webp/2024/11/interline-logo-white-on-transparent-2.png 600w" sizes="(max-width: 800px) 200px, 320px" type="image/webp" > <img class="h-[var(--logo-h-mobile)] w-[var(--logo-w-mobile)] md:h-[var(--logo-h-desktop)] md:w-[var(--logo-w-desktop)]" loading="eager" srcset="/content/images/size/w100/format/webp/2024/11/interline-logo-white-on-transparent-2.png 100w, /content/images/size/w320/format/webp/2024/11/interline-logo-white-on-transparent-2.png 320w, /content/images/size/w640/format/webp/2024/11/interline-logo-white-on-transparent-2.png 600w" sizes="(max-width: 800px) 200px, 320px" src="/content/images/size/w30/2024/11/interline-logo-white-on-transparent-2.png" alt="Interline Technologies" /> </picture> <picture data-logo='default'> <source srcset="/content/images/size/w100/format/webp/2023/10/Interline-logo-full-1.png 100w, /content/images/size/w320/format/webp/2023/10/Interline-logo-full-1.png 320w, /content/images/size/w640/format/webp/2023/10/Interline-logo-full-1.png 600w" sizes="(max-width: 800px) 200px, 320px" type="image/webp" > <img class="h-[var(--logo-h-mobile)] w-[var(--logo-w-mobile)] md:h-[var(--logo-h-desktop)] md:w-[var(--logo-w-desktop)]" loading="eager" srcset="/content/images/size/w100/format/webp/2023/10/Interline-logo-full-1.png 100w, /content/images/size/w320/format/webp/2023/10/Interline-logo-full-1.png 320w, /content/images/size/w640/format/webp/2023/10/Interline-logo-full-1.png 600w" sizes="(max-width: 800px) 200px, 320px" src="/content/images/size/w30/2023/10/Interline-logo-full-1.png" alt="Interline Technologies" /> </picture> </a> </div> <nav class="relative hidden transition-[width,filter] duration-300 text-sm lg:flex justify-center p-1 border border-brd rounded-theme-lg bg-bgr-opac backdrop-blur" data-nav="desktop" :class="isScrolled ? 'drop-shadow-xl' : ''"> <ul class="flex gap-0.5"> <li class="nav-transitland-platform flex relative border border-transparent hover:bg-bgr-tone rounded-theme" data-label="Transitland Platform" data-slug="transitland-platform" data-length="20"> <a class="w-full flex px-4 py-1.5 rounded-theme" href="https://www.interline.io/transitland/" > <span>Transitland Platform</span> </a> </li> <li class="nav-intro-to-transitland flex relative border border-transparent hover:bg-bgr-tone rounded-theme is-subitem" data-label="- Intro to Transitland" data-slug="intro-to-transitland" data-length="22"> <a class="w-full flex px-4 py-1.5 rounded-theme" href="https://www.interline.io/transitland/" > <span>- Intro to Transitland</span> </a> </li> <li class="nav-transitland-apis-for-developers flex relative border border-transparent hover:bg-bgr-tone rounded-theme is-subitem" data-label="- Transitland APIs for Developers" data-slug="transitland-apis-for-developers" data-length="33"> <a class="w-full flex px-4 py-1.5 rounded-theme" href="https://www.interline.io/transitland/apis-for-developers/" > <span>- Transitland APIs for Developers</span> </a> </li> <li class="nav-custom-bulk-transit-data-exports flex relative border border-transparent hover:bg-bgr-tone rounded-theme is-subitem" data-label="- Custom Bulk Transit Data Exports" data-slug="custom-bulk-transit-data-exports" data-length="34"> <a class="w-full flex px-4 py-1.5 rounded-theme" href="https://www.interline.io/transitland/custom-bulk-transit-data/" > <span>- Custom Bulk Transit Data Exports</span> </a> </li> <li class="nav-all-stops-in-the-united-states flex relative border border-transparent hover:bg-bgr-tone rounded-theme is-subitem" data-label="- All Stops in the United States" data-slug="all-stops-in-the-united-states" data-length="32"> <a class="w-full flex px-4 py-1.5 rounded-theme" href="https://www.interline.io/transitland/all-us-stops-bulk-data/" > <span>- All Stops in the United States</span> </a> </li> <li class="nav-compare-transitland flex relative border border-transparent hover:bg-bgr-tone rounded-theme is-subitem" data-label="- Compare Transitland" data-slug="compare-transitland" data-length="21"> <a class="w-full flex px-4 py-1.5 rounded-theme" href="https://www.interline.io/transitland/compare/" > <span>- Compare Transitland</span> </a> </li> <li class="nav-transitland-plans-pricing flex relative border border-transparent hover:bg-bgr-tone rounded-theme is-subitem" data-label="- Transitland Plans & Pricing" data-slug="transitland-plans-pricing" data-length="30"> <a class="w-full flex px-4 py-1.5 rounded-theme" href="https://www.transit.land/plans-pricing/" > <span>- Transitland Plans & Pricing</span> </a> </li> <li class="nav-interline-routing-platform flex relative border border-transparent hover:bg-bgr-tone rounded-theme" data-label="Interline Routing Platform" data-slug="interline-routing-platform" data-length="26"> <a class="w-full flex px-4 py-1.5 rounded-theme" href="https://www.interline.io/routing-platform/" > <span>Interline Routing Platform</span> </a> </li> <li class="nav-intro-to-valhalla flex relative border border-transparent hover:bg-bgr-tone rounded-theme is-subitem" data-label="- Intro to Valhalla" data-slug="intro-to-valhalla" data-length="19"> <a class="w-full flex px-4 py-1.5 rounded-theme" href="https://www.interline.io/valhalla/" > <span>- Intro to Valhalla</span> </a> </li> <li class="nav-valhalla-tilepacks flex relative border border-transparent hover:bg-bgr-tone rounded-theme is-subitem" data-label="- Valhalla Tilepacks" data-slug="valhalla-tilepacks" data-length="20"> <a class="w-full flex px-4 py-1.5 rounded-theme" href="https://www.interline.io/valhalla/tilepacks/" > <span>- Valhalla Tilepacks</span> </a> </li> <li class="nav-global-hosted-valhalla-apis flex relative border border-transparent hover:bg-bgr-tone rounded-theme is-subitem" data-label="- Global Hosted Valhalla APIs" data-slug="global-hosted-valhalla-apis" data-length="29"> <a class="w-full flex px-4 py-1.5 rounded-theme" href="https://rapidapi.com/interline-technologies-interline-technologies-default/api/interline-global-valhalla-navigation-and-routing-engine/" > <span>- Global Hosted Valhalla APIs</span> </a> </li> <li class="nav-transitland-routing-api flex relative border border-transparent hover:bg-bgr-tone rounded-theme is-subitem" data-label="- Transitland Routing API" data-slug="transitland-routing-api" data-length="25"> <a class="w-full flex px-4 py-1.5 rounded-theme" href="https://www.transit.land/documentation/routing-api/" > <span>- Transitland Routing API</span> </a> </li> <li class="nav-resources nav-current flex relative border border-transparent hover:bg-bgr-tone rounded-theme" data-label="Resources" data-slug="resources" data-length="9"> <a class="w-full flex px-4 py-1.5 rounded-theme" href="https://www.interline.io/resources/" > <span>Resources</span> </a> </li> <li class="nav-blog flex relative border border-transparent hover:bg-bgr-tone rounded-theme is-subitem" data-label="- Blog" data-slug="blog" data-length="6"> <a class="w-full flex px-4 py-1.5 rounded-theme" href="https://www.interline.io/blog/" > <span>- Blog</span> </a> </li> <li class="nav-consulting flex relative border border-transparent hover:bg-bgr-tone rounded-theme is-subitem" data-label="- Consulting" data-slug="consulting" data-length="12"> <a class="w-full flex px-4 py-1.5 rounded-theme" href="https://www.interline.io/consulting/" > <span>- Consulting</span> </a> </li> <li class="nav-applied-research flex relative border border-transparent hover:bg-bgr-tone rounded-theme is-subitem" data-label="- Applied Research" data-slug="applied-research" data-length="18"> <a class="w-full flex px-4 py-1.5 rounded-theme" href="https://www.interline.io/resources/applied-research/" > <span>- Applied Research</span> </a> </li> <li class="nav-osm-extracts flex relative border border-transparent hover:bg-bgr-tone rounded-theme is-subitem" data-label="- OSM Extracts" data-slug="osm-extracts" data-length="14"> <a class="w-full flex px-4 py-1.5 rounded-theme" href="https://app.interline.io/osm_extracts/interactive_view" > <span>- OSM Extracts</span> </a> </li> <li class="nav-about-interline flex relative border border-transparent hover:bg-bgr-tone rounded-theme" data-label="About Interline" data-slug="about-interline" data-length="15"> <a class="w-full flex px-4 py-1.5 rounded-theme" href="https://www.interline.io/about/" > <span>About Interline</span> </a> </li> </ul> </nav> <div class="flex flex-0 sm:flex-1 gap-2 items-center justify-end transition-move duration-300" data-header-actions> <button class="flex flex-col gap-1.5 size-8 md:size-9 items-center justify-center rounded-theme group hover:text-brand lg:hidden" data-menu-toggle aria-label="Menu toggle" aria-expanded="false" aria-haspopup="true" aria-controls="menu" @click="menuOpen = !menuOpen; event.currentTarget.setAttribute('aria-expanded', menuOpen);" > <span class="relative pointer-events-none w-5 h-0.5 rounded-sm bg-typ-tone group-hover:bg-brand transition-all" :class="menuOpen ? 'rotate-45 top-1' : 'rotate-0 top-0'"></span> <span class="relative pointer-events-none w-5 h-0.5 rounded-sm bg-typ-tone group-hover:bg-brand transition-all" :class="menuOpen ? '-rotate-45 -top-1' : ''"></span> </button> </div> </div> </header> <div class="fixed shadow-xl z-[100] top-[64px] md:top-[84px] w-full bg-bgr text-typ-tone pt-4 border-t border-brd lg:hidden fixed" :class="menuOpen ? 'block' : 'hidden'" data-menu id="menu" > <div class="px-4 sm:px-6"> <nav class="" data-nav="mobile"> <ul class="flex flex-col gap-1"> <li class="nav-transitland-platform flex relative" data-label="Transitland Platform" data-slug="transitland-platform" data-length="20"> <a class="flex py-0.5 rounded-theme hover:text-brand" href="https://www.interline.io/transitland/" > <span>Transitland Platform</span> </a> </li> <li class="nav-intro-to-transitland flex relative is-subitem" data-label="- Intro to Transitland" data-slug="intro-to-transitland" data-length="22"> <a class="flex py-0.5 rounded-theme hover:text-brand" href="https://www.interline.io/transitland/" > <span>- Intro to Transitland</span> </a> </li> <li class="nav-transitland-apis-for-developers flex relative is-subitem" data-label="- Transitland APIs for Developers" data-slug="transitland-apis-for-developers" data-length="33"> <a class="flex py-0.5 rounded-theme hover:text-brand" href="https://www.interline.io/transitland/apis-for-developers/" > <span>- Transitland APIs for Developers</span> </a> </li> <li class="nav-custom-bulk-transit-data-exports flex relative is-subitem" data-label="- Custom Bulk Transit Data Exports" data-slug="custom-bulk-transit-data-exports" data-length="34"> <a class="flex py-0.5 rounded-theme hover:text-brand" href="https://www.interline.io/transitland/custom-bulk-transit-data/" > <span>- Custom Bulk Transit Data Exports</span> </a> </li> <li class="nav-all-stops-in-the-united-states flex relative is-subitem" data-label="- All Stops in the United States" data-slug="all-stops-in-the-united-states" data-length="32"> <a class="flex py-0.5 rounded-theme hover:text-brand" href="https://www.interline.io/transitland/all-us-stops-bulk-data/" > <span>- All Stops in the United States</span> </a> </li> <li class="nav-compare-transitland flex relative is-subitem" data-label="- Compare Transitland" data-slug="compare-transitland" data-length="21"> <a class="flex py-0.5 rounded-theme hover:text-brand" href="https://www.interline.io/transitland/compare/" > <span>- Compare Transitland</span> </a> </li> <li class="nav-transitland-plans-pricing flex relative is-subitem" data-label="- Transitland Plans & Pricing" data-slug="transitland-plans-pricing" data-length="30"> <a class="flex py-0.5 rounded-theme hover:text-brand" href="https://www.transit.land/plans-pricing/" > <span>- Transitland Plans & Pricing</span> </a> </li> <li class="nav-interline-routing-platform flex relative" data-label="Interline Routing Platform" data-slug="interline-routing-platform" data-length="26"> <a class="flex py-0.5 rounded-theme hover:text-brand" href="https://www.interline.io/routing-platform/" > <span>Interline Routing Platform</span> </a> </li> <li class="nav-intro-to-valhalla flex relative is-subitem" data-label="- Intro to Valhalla" data-slug="intro-to-valhalla" data-length="19"> <a class="flex py-0.5 rounded-theme hover:text-brand" href="https://www.interline.io/valhalla/" > <span>- Intro to Valhalla</span> </a> </li> <li class="nav-valhalla-tilepacks flex relative is-subitem" data-label="- Valhalla Tilepacks" data-slug="valhalla-tilepacks" data-length="20"> <a class="flex py-0.5 rounded-theme hover:text-brand" href="https://www.interline.io/valhalla/tilepacks/" > <span>- Valhalla Tilepacks</span> </a> </li> <li class="nav-global-hosted-valhalla-apis flex relative is-subitem" data-label="- Global Hosted Valhalla APIs" data-slug="global-hosted-valhalla-apis" data-length="29"> <a class="flex py-0.5 rounded-theme hover:text-brand" href="https://rapidapi.com/interline-technologies-interline-technologies-default/api/interline-global-valhalla-navigation-and-routing-engine/" > <span>- Global Hosted Valhalla APIs</span> </a> </li> <li class="nav-transitland-routing-api flex relative is-subitem" data-label="- Transitland Routing API" data-slug="transitland-routing-api" data-length="25"> <a class="flex py-0.5 rounded-theme hover:text-brand" href="https://www.transit.land/documentation/routing-api/" > <span>- Transitland Routing API</span> </a> </li> <li class="nav-resources nav-current flex relative" data-label="Resources" data-slug="resources" data-length="9"> <a class="flex py-0.5 rounded-theme hover:text-brand" href="https://www.interline.io/resources/" > <span>Resources</span> </a> </li> <li class="nav-blog flex relative is-subitem" data-label="- Blog" data-slug="blog" data-length="6"> <a class="flex py-0.5 rounded-theme hover:text-brand" href="https://www.interline.io/blog/" > <span>- Blog</span> </a> </li> <li class="nav-consulting flex relative is-subitem" data-label="- Consulting" data-slug="consulting" data-length="12"> <a class="flex py-0.5 rounded-theme hover:text-brand" href="https://www.interline.io/consulting/" > <span>- Consulting</span> </a> </li> <li class="nav-applied-research flex relative is-subitem" data-label="- Applied Research" data-slug="applied-research" data-length="18"> <a class="flex py-0.5 rounded-theme hover:text-brand" href="https://www.interline.io/resources/applied-research/" > <span>- Applied Research</span> </a> </li> <li class="nav-osm-extracts flex relative is-subitem" data-label="- OSM Extracts" data-slug="osm-extracts" data-length="14"> <a class="flex py-0.5 rounded-theme hover:text-brand" href="https://app.interline.io/osm_extracts/interactive_view" > <span>- OSM Extracts</span> </a> </li> <li class="nav-about-interline flex relative" data-label="About Interline" data-slug="about-interline" data-length="15"> <a class="flex py-0.5 rounded-theme hover:text-brand" href="https://www.interline.io/about/" > <span>About Interline</span> </a> </li> </ul> </nav> </div> <div class="p-4 mt-4 flex gap-2 border-y border-brd"> <button class="flex gap-0.5 p-[3px] border border-brd text-typ-tone rounded-theme hover:bg-bgr-tone" aria-label="Toggle color scheme" data-color-scheme-toggle @click="toggleColorScheme(event)"> <span data-theme="light" class="px-[5px] py-0.5 border border-transparent opacity-50 rounded-theme"> <i class="icon icon-sun size-4 stroke-2"> <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-sun-filled" width="24" height="24" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> <path stroke="none" d="M0 0h24v24H0z" fill="none"/> <path d="M12 19a1 1 0 0 1 .993 .883l.007 .117v1a1 1 0 0 1 -1.993 .117l-.007 -.117v-1a1 1 0 0 1 1 -1z" stroke-width="0" fill="currentColor" /> <path d="M18.313 16.91l.094 .083l.7 .7a1 1 0 0 1 -1.32 1.497l-.094 -.083l-.7 -.7a1 1 0 0 1 1.218 -1.567l.102 .07z" stroke-width="0" fill="currentColor" /> <path d="M7.007 16.993a1 1 0 0 1 .083 1.32l-.083 .094l-.7 .7a1 1 0 0 1 -1.497 -1.32l.083 -.094l.7 -.7a1 1 0 0 1 1.414 0z" stroke-width="0" fill="currentColor" /> <path d="M4 11a1 1 0 0 1 .117 1.993l-.117 .007h-1a1 1 0 0 1 -.117 -1.993l.117 -.007h1z" stroke-width="0" fill="currentColor" /> <path d="M21 11a1 1 0 0 1 .117 1.993l-.117 .007h-1a1 1 0 0 1 -.117 -1.993l.117 -.007h1z" stroke-width="0" fill="currentColor" /> <path d="M6.213 4.81l.094 .083l.7 .7a1 1 0 0 1 -1.32 1.497l-.094 -.083l-.7 -.7a1 1 0 0 1 1.217 -1.567l.102 .07z" stroke-width="0" fill="currentColor" /> <path d="M19.107 4.893a1 1 0 0 1 .083 1.32l-.083 .094l-.7 .7a1 1 0 0 1 -1.497 -1.32l.083 -.094l.7 -.7a1 1 0 0 1 1.414 0z" stroke-width="0" fill="currentColor" /> <path d="M12 2a1 1 0 0 1 .993 .883l.007 .117v1a1 1 0 0 1 -1.993 .117l-.007 -.117v-1a1 1 0 0 1 1 -1z" stroke-width="0" fill="currentColor" /> <path d="M12 7a5 5 0 1 1 -4.995 5.217l-.005 -.217l.005 -.217a5 5 0 0 1 4.995 -4.783z" stroke-width="0" fill="currentColor" /> </svg> </i> </span> <span data-theme="dark" class="px-[5px] py-0.5 border border-transparent opacity-50 rounded-theme"> <i class="icon icon-moon size-4 stroke-2"> <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-moon-filled" width="24" height="24" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> <path stroke="none" d="M0 0h24v24H0z" fill="none"/> <path d="M12 1.992a10 10 0 1 0 9.236 13.838c.341 -.82 -.476 -1.644 -1.298 -1.31a6.5 6.5 0 0 1 -6.864 -10.787l.077 -.08c.551 -.63 .113 -1.653 -.758 -1.653h-.266l-.068 -.006l-.06 -.002z" stroke-width="0" fill="currentColor" /> </svg> </i> </span> </button> </div> </div> <main class="main"> <section class="px-4 sm:px-6" data-page-hero> <div class="max-w-2xl py-16 mx-auto flex flex-col gap-4 md:gap-8 md:flex-row"> <div class="flex flex-1 flex-col gap-4 md:gap-6 justify-center items-center text-center"> <h1 class="font-semibold tracking-tight text-2xl sm:text-3xl md:text-5xl lg:text-5xl">Resources</h1> </div> </div> </section> <article class="post no-image ghost-content prose md:prose-lg prose-theme"> <p>We're pleased to offer the following complementary resources:</p><ul><li><a href="https://www.interline.io/blog/" rel="noreferrer">Interline Blog</a></li><li><a href="https://www.interline.io/resources-applied-research/" rel="noreferrer">Applied Research Reports</a></li><li><a href="https://www.transit.land/?ref=interline.io" rel="noreferrer">Transitland</a> website</li><li><a href="https://app.interline.io/osm_extracts/interactive_view?ref=interline.io" rel="noreferrer">OSM Extracts</a> website</li></ul><p>And we're pleased to offer the following paid resources:</p><ul><li><a href="https://www.interline.io/consulting/" rel="noreferrer">Expert Consulting Services</a></li></ul> </article> </main> <footer class="px-4 sm:px-6 bg-bgr mt-16" data-footer> <div class="max-w-container mx-auto relative before:content-[''] before:absolute before:top-0 before:left-0 before:w-full before:h-[1px] before:bg-fading"> <div class="grid grid-cols-2 md:grid-cols-4 lg:grid-cols-6 gap-4 py-8 md:gap-8 md:py-12"> <div class="flex flex-col items-start gap-3 col-span-2 md:col-span-1 lg:col-span-2" data-footer-brand> <a href="https://www.interline.io" data-brand> <picture data-logo='dark'> <source srcset="/content/images/size/w100/format/webp/2024/11/interline-logo-white-on-transparent-2.png 100w, /content/images/size/w320/format/webp/2024/11/interline-logo-white-on-transparent-2.png 320w, /content/images/size/w640/format/webp/2024/11/interline-logo-white-on-transparent-2.png 600w" sizes="(max-width: 800px) 200px, 320px" type="image/webp" > <img class="h-[var(--logo-h-mobile)] w-[var(--logo-w-mobile)] md:h-[var(--logo-h-desktop)] md:w-[var(--logo-w-desktop)] will-change-[filter] transition-[filter] blur" onload="this.classList.remove('blur')" loading="lazy" srcset="/content/images/size/w100/format/webp/2024/11/interline-logo-white-on-transparent-2.png 100w, /content/images/size/w320/format/webp/2024/11/interline-logo-white-on-transparent-2.png 320w, /content/images/size/w640/format/webp/2024/11/interline-logo-white-on-transparent-2.png 600w" sizes="(max-width: 800px) 200px, 320px" src="/content/images/size/w30/2024/11/interline-logo-white-on-transparent-2.png" alt="Interline Technologies" /> </picture> <picture data-logo='default'> <source srcset="/content/images/size/w100/format/webp/2023/10/Interline-logo-full-1.png 100w, /content/images/size/w320/format/webp/2023/10/Interline-logo-full-1.png 320w, /content/images/size/w640/format/webp/2023/10/Interline-logo-full-1.png 600w" sizes="(max-width: 800px) 200px, 320px" type="image/webp" > <img class="h-[var(--logo-h-mobile)] w-[var(--logo-w-mobile)] md:h-[var(--logo-h-desktop)] md:w-[var(--logo-w-desktop)] will-change-[filter] transition-[filter] blur" onload="this.classList.remove('blur')" loading="lazy" srcset="/content/images/size/w100/format/webp/2023/10/Interline-logo-full-1.png 100w, /content/images/size/w320/format/webp/2023/10/Interline-logo-full-1.png 320w, /content/images/size/w640/format/webp/2023/10/Interline-logo-full-1.png 600w" sizes="(max-width: 800px) 200px, 320px" src="/content/images/size/w30/2023/10/Interline-logo-full-1.png" alt="Interline Technologies" /> </picture> </a> <p class="text-typ-tone">We're a product and consulting business that helps organizations understand and improve transportation networks, digitally.</p> <nav class="flex items-center gap-2 text-typ-tone text-base" data-socials="footer" x-data="socials"> <a :href="rss" :class="rss && '!block'" class="hidden p-2 border border-brd bg-bgr rounded-theme hover:bg-bgr-tone hover:text-brand hover:border-brand" aria-label="RSS"><i class="icon icon-rss w-4 h-4 stroke-2 stroke-2"> <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-rss" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> <path stroke="none" d="M0 0h24v24H0z" fill="none"/> <circle cx="5" cy="19" r="1" /> <path d="M4 4a16 16 0 0 1 16 16" /> <path d="M4 11a9 9 0 0 1 9 9" /> </svg> </i><span class="sr-only">RSS</span></a> <a :href="threads" :class="threads && '!block'" class="hidden p-2 border border-brd bg-bgr rounded-theme hover:bg-bgr-tone hover:text-brand hover:border-brand" aria-label="Threads"><i class="icon icon-threads w-4 h-4 stroke-2 stroke-2"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="icon icon-tabler icons-tabler-outline icon-tabler-brand-threads"> <path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path d="M19 7.5c-1.333 -3 -3.667 -4.5 -7 -4.5c-5 0 -8 2.5 -8 9s3.5 9 8 9s7 -3 7 -5s-1 -5 -7 -5c-2.5 0 -3 1.25 -3 2.5c0 1.5 1 2.5 2.5 2.5c2.5 0 3.5 -1.5 3.5 -5s-2 -4 -3 -4s-1.833 .333 -2.5 1" /> </svg> </i><span class="sr-only">Threads</span></a> <a :href="linkedin" :class="linkedin && '!block'" class="hidden p-2 border border-brd bg-bgr rounded-theme hover:bg-bgr-tone hover:text-brand hover:border-brand" aria-label="Linkedin"><i class="icon icon-linkedin w-4 h-4 stroke-2 stroke-2"> <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-brand-linkedin" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> <path d="M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z"></path> <rect x="2" y="9" width="4" height="12"></rect> <circle cx="4" cy="4" r="2"></circle> </svg> </i><span class="sr-only">Linkedin</span></a> <a :href="discord" :class="discord && '!block'" class="hidden p-2 border border-brd bg-bgr rounded-theme hover:bg-bgr-tone hover:text-brand hover:border-brand" aria-label="Discord"><i class="icon icon-discord w-4 h-4 stroke-2 stroke-2"> </i><span class="sr-only">Discord</span></a> <a :href="github" :class="github && '!block'" class="hidden p-2 border border-brd bg-bgr rounded-theme hover:bg-bgr-tone hover:text-brand hover:border-brand" aria-label="Github"><i class="icon icon-github w-4 h-4 stroke-2 stroke-2"> <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-brand-github" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> <desc>Download more icon variants from https://tabler-icons.io/i/brand-github</desc> <path stroke="none" d="M0 0h24v24H0z" fill="none"/> <path d="M9 19c-4.3 1.4 -4.3 -2.5 -6 -3m12 5v-3.5c0 -1 .1 -1.4 -.5 -2c2.8 -.3 5.5 -1.4 5.5 -6a4.6 4.6 0 0 0 -1.3 -3.2a4.2 4.2 0 0 0 -.1 -3.2s-1.1 -.3 -3.5 1.3a12.3 12.3 0 0 0 -6.2 0c-2.4 -1.6 -3.5 -1.3 -3.5 -1.3a4.2 4.2 0 0 0 -.1 3.2a4.6 4.6 0 0 0 -1.3 3.2c0 4.6 2.7 5.7 5.5 6c-.6 .6 -.6 1.2 -.5 2v3.5" /> </svg> </i><span class="sr-only">Github</span></a> <a :href="instagram" :class="instagram && '!block'" class="hidden p-2 border border-brd bg-bgr rounded-theme hover:bg-bgr-tone hover:text-brand hover:border-brand" aria-label="Instagram"><i class="icon icon-instagram w-4 h-4 stroke-2 stroke-2"> <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-brand-instagram" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> <desc>Download more icon variants from https://tabler-icons.io/i/brand-instagram</desc> <path stroke="none" d="M0 0h24v24H0z" fill="none"/> <rect x="4" y="4" width="16" height="16" rx="4" /> <circle cx="12" cy="12" r="3" /> <line x1="16.5" y1="7.5" x2="16.5" y2="7.501" /> </svg> </i><span class="sr-only">Instagram</span></a> <a :href="pinterest" :class="pinterest && '!block'" class="hidden p-2 border border-brd bg-bgr rounded-theme hover:bg-bgr-tone hover:text-brand hover:border-brand" aria-label="Pinterest"><i class="icon icon-pinterest w-4 h-4 stroke-2 stroke-2"> <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-brand-pinterest" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> <path stroke="none" d="M0 0h24v24H0z" fill="none"/> <line x1="8" y1="20" x2="12" y2="11" /> <path d="M10.7 14c.437 1.263 1.43 2 2.55 2c2.071 0 3.75 -1.554 3.75 -4a5 5 0 1 0 -9.7 1.7" /> <circle cx="12" cy="12" r="9" /> </svg> </i><span class="sr-only">Pinterest</span></a> <a :href="reddit" :class="reddit && '!block'" class="hidden p-2 border border-brd bg-bgr rounded-theme hover:bg-bgr-tone hover:text-brand hover:border-brand" aria-label="Reddit"><i class="icon icon-reddit w-4 h-4 stroke-2 stroke-2"> <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-brand-reddit" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> <path stroke="none" d="M0 0h24v24H0z" fill="none"/> <path d="M12 8c2.648 0 5.028 .826 6.675 2.14a2.5 2.5 0 0 1 2.326 4.36c0 3.59 -4.03 6.5 -9 6.5c-4.875 0 -8.845 -2.8 -9 -6.294l-1 -.206a2.5 2.5 0 0 1 2.326 -4.36c1.646 -1.313 4.026 -2.14 6.674 -2.14z" /> <path d="M12 8l1 -5l6 1" /> <circle cx="19" cy="4" r="1" /> <circle cx="9" cy="13" r=".5" fill="currentColor" /> <circle cx="15" cy="13" r=".5" fill="currentColor" /> <path d="M10 17c.667 .333 1.333 .5 2 .5s1.333 -.167 2 -.5" /> </svg> </i><span class="sr-only">Reddit</span></a> <a :href="telegram" :class="telegram && '!block'" class="hidden p-2 border border-brd bg-bgr rounded-theme hover:bg-bgr-tone hover:text-brand hover:border-brand" aria-label="Telegram"><i class="icon icon-telegram w-4 h-4 stroke-2 stroke-2"> <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-brand-telegram" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> <desc>Download more icon variants from https://tabler-icons.io/i/brand-telegram</desc> <path stroke="none" d="M0 0h24v24H0z" fill="none"/> <path d="M15 10l-4 4l6 6l4 -16l-18 7l4 2l2 6l3 -4" /> </svg> </i><span class="sr-only">Telegram</span></a> <a :href="tiktok" :class="tiktok && '!block'" class="hidden p-2 border border-brd bg-bgr rounded-theme hover:bg-bgr-tone hover:text-brand hover:border-brand" aria-label="Tiktok"><i class="icon icon-tiktok w-4 h-4 stroke-2 stroke-2"> <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-brand-tiktok" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> <desc>Download more icon variants from https://tabler-icons.io/i/brand-tiktok</desc> <path stroke="none" d="M0 0h24v24H0z" fill="none"/> <path d="M9 12a4 4 0 1 0 4 4v-12a5 5 0 0 0 5 5" /> </svg> </i><span class="sr-only">Tiktok</span></a> <a :href="whatsapp" :class="whatsapp && '!block'" class="hidden p-2 border border-brd bg-bgr rounded-theme hover:bg-bgr-tone hover:text-brand hover:border-brand" aria-label="Whatsapp"><i class="icon icon-whatsapp w-4 h-4 stroke-2 stroke-2"> <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-brand-whatsapp" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> <desc>Download more icon variants from https://tabler-icons.io/i/brand-whatsapp</desc> <path stroke="none" d="M0 0h24v24H0z" fill="none"/> <path d="M3 21l1.65 -3.8a9 9 0 1 1 3.4 2.9l-5.05 .9" /> <path d="M9 10a0.5 .5 0 0 0 1 0v-1a0.5 .5 0 0 0 -1 0v1a5 5 0 0 0 5 5h1a0.5 .5 0 0 0 0 -1h-1a0.5 .5 0 0 0 0 1" /> </svg> </i><span class="sr-only">Whatsapp</span></a> <a :href="youtube" :class="youtube && '!block'" class="hidden p-2 border border-brd bg-bgr rounded-theme hover:bg-bgr-tone hover:text-brand hover:border-brand" aria-label="Youtube"><i class="icon icon-youtube w-4 h-4 stroke-2 stroke-2"> <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-brand-youtube" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> <desc>Download more icon variants from https://tabler-icons.io/i/brand-youtube</desc> <path stroke="none" d="M0 0h24v24H0z" fill="none"/> <rect x="3" y="5" width="18" height="14" rx="4" /> <path d="M10 9l5 3l-5 3z" /> </svg> </i><span class="sr-only">Youtube</span></a> <a rel="me" :href="mastodon" :class="mastodon && '!block'" class="hidden p-2 border border-brd bg-bgr rounded-theme hover:bg-bgr-tone hover:text-brand hover:border-brand" aria-label="Mastodon"><i class="icon icon-mastodon w-4 h-4 stroke-2 stroke-2"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="icon icon-tabler icons-tabler-outline icon-tabler-brand-mastodon" ><path stroke="none" d="M0 0h24v24H0z" fill="none" /><path d="M18.648 15.254c-1.816 1.763 -6.648 1.626 -6.648 1.626a18.262 18.262 0 0 1 -3.288 -.256c1.127 1.985 4.12 2.81 8.982 2.475c-1.945 2.013 -13.598 5.257 -13.668 -7.636l-.026 -1.154c0 -3.036 .023 -4.115 1.352 -5.633c1.671 -1.91 6.648 -1.666 6.648 -1.666s4.977 -.243 6.648 1.667c1.329 1.518 1.352 2.597 1.352 5.633s-.456 4.074 -1.352 4.944z" /><path d="M12 11.204v-2.926c0 -1.258 -.895 -2.278 -2 -2.278s-2 1.02 -2 2.278v4.722m4 -4.722c0 -1.258 .895 -2.278 2 -2.278s2 1.02 2 2.278v4.722" /></svg> </i><span class="sr-only">Mastodon</span></a> </nav> </div> <span class="hidden lg:block"></span> <div class="flex flex-col gap-2 mt-2" data-footer-nav="primary"> <span class="font-semibold">Navigate to</span> <nav class=""> <ul class="flex flex-col items-start gap-2 text-typ-tone text-sm"> <li class="nav-transitland-platform flex flex-col relative" data-label="Transitland Platform" data-slug="transitland-platform" data-length="20"> <a class="flex hover:text-brand" href="https://www.interline.io/transitland/" > <span>Transitland Platform</span> </a> </li> <li class="nav-intro-to-transitland flex flex-col relative is-subitem" data-label="- Intro to Transitland" data-slug="intro-to-transitland" data-length="22"> <a class="flex hover:text-brand" href="https://www.interline.io/transitland/" > <span>- Intro to Transitland</span> </a> </li> <li class="nav-transitland-apis-for-developers flex flex-col relative is-subitem" data-label="- Transitland APIs for Developers" data-slug="transitland-apis-for-developers" data-length="33"> <a class="flex hover:text-brand" href="https://www.interline.io/transitland/apis-for-developers/" > <span>- Transitland APIs for Developers</span> </a> </li> <li class="nav-custom-bulk-transit-data-exports flex flex-col relative is-subitem" data-label="- Custom Bulk Transit Data Exports" data-slug="custom-bulk-transit-data-exports" data-length="34"> <a class="flex hover:text-brand" href="https://www.interline.io/transitland/custom-bulk-transit-data/" > <span>- Custom Bulk Transit Data Exports</span> </a> </li> <li class="nav-all-stops-in-the-united-states flex flex-col relative is-subitem" data-label="- All Stops in the United States" data-slug="all-stops-in-the-united-states" data-length="32"> <a class="flex hover:text-brand" href="https://www.interline.io/transitland/all-us-stops-bulk-data/" > <span>- All Stops in the United States</span> </a> </li> <li class="nav-compare-transitland flex flex-col relative is-subitem" data-label="- Compare Transitland" data-slug="compare-transitland" data-length="21"> <a class="flex hover:text-brand" href="https://www.interline.io/transitland/compare/" > <span>- Compare Transitland</span> </a> </li> <li class="nav-transitland-plans-pricing flex flex-col relative is-subitem" data-label="- Transitland Plans & Pricing" data-slug="transitland-plans-pricing" data-length="30"> <a class="flex hover:text-brand" href="https://www.transit.land/plans-pricing/" > <span>- Transitland Plans & Pricing</span> </a> </li> <li class="nav-interline-routing-platform flex flex-col relative" data-label="Interline Routing Platform" data-slug="interline-routing-platform" data-length="26"> <a class="flex hover:text-brand" href="https://www.interline.io/routing-platform/" > <span>Interline Routing Platform</span> </a> </li> <li class="nav-intro-to-valhalla flex flex-col relative is-subitem" data-label="- Intro to Valhalla" data-slug="intro-to-valhalla" data-length="19"> <a class="flex hover:text-brand" href="https://www.interline.io/valhalla/" > <span>- Intro to Valhalla</span> </a> </li> <li class="nav-valhalla-tilepacks flex flex-col relative is-subitem" data-label="- Valhalla Tilepacks" data-slug="valhalla-tilepacks" data-length="20"> <a class="flex hover:text-brand" href="https://www.interline.io/valhalla/tilepacks/" > <span>- Valhalla Tilepacks</span> </a> </li> <li class="nav-global-hosted-valhalla-apis flex flex-col relative is-subitem" data-label="- Global Hosted Valhalla APIs" data-slug="global-hosted-valhalla-apis" data-length="29"> <a class="flex hover:text-brand" href="https://rapidapi.com/interline-technologies-interline-technologies-default/api/interline-global-valhalla-navigation-and-routing-engine/" > <span>- Global Hosted Valhalla APIs</span> </a> </li> <li class="nav-transitland-routing-api flex flex-col relative is-subitem" data-label="- Transitland Routing API" data-slug="transitland-routing-api" data-length="25"> <a class="flex hover:text-brand" href="https://www.transit.land/documentation/routing-api/" > <span>- Transitland Routing API</span> </a> </li> <li class="nav-resources nav-current flex flex-col relative" data-label="Resources" data-slug="resources" data-length="9"> <a class="flex hover:text-brand" href="https://www.interline.io/resources/" > <span>Resources</span> </a> </li> <li class="nav-blog flex flex-col relative is-subitem" data-label="- Blog" data-slug="blog" data-length="6"> <a class="flex hover:text-brand" href="https://www.interline.io/blog/" > <span>- Blog</span> </a> </li> <li class="nav-consulting flex flex-col relative is-subitem" data-label="- Consulting" data-slug="consulting" data-length="12"> <a class="flex hover:text-brand" href="https://www.interline.io/consulting/" > <span>- Consulting</span> </a> </li> <li class="nav-applied-research flex flex-col relative is-subitem" data-label="- Applied Research" data-slug="applied-research" data-length="18"> <a class="flex hover:text-brand" href="https://www.interline.io/resources/applied-research/" > <span>- Applied Research</span> </a> </li> <li class="nav-osm-extracts flex flex-col relative is-subitem" data-label="- OSM Extracts" data-slug="osm-extracts" data-length="14"> <a class="flex hover:text-brand" href="https://app.interline.io/osm_extracts/interactive_view" > <span>- OSM Extracts</span> </a> </li> <li class="nav-about-interline flex flex-col relative" data-label="About Interline" data-slug="about-interline" data-length="15"> <a class="flex hover:text-brand" href="https://www.interline.io/about/" > <span>About Interline</span> </a> </li> </ul> </nav> </div> <div class="flex flex-col gap-2 mt-2" data-footer-nav="secondary"> <span class="font-semibold">For more info</span> <nav class=""> <ul class="flex flex-col items-start gap-2 text-typ-tone text-sm"> <li class="nav-terms flex flex-col relative" data-label="Terms" data-slug="terms" data-length="5"> <a class="flex hover:text-brand" href="https://www.interline.io/legal/terms/" > <span>Terms</span> </a> </li> <li class="nav-privacy flex flex-col relative" data-label="Privacy" data-slug="privacy" data-length="7"> <a class="flex hover:text-brand" href="https://www.interline.io/legal/privacy/" > <span>Privacy</span> </a> </li> <li class="nav-support flex flex-col relative" data-label="Support" data-slug="support" data-length="7"> <a class="flex hover:text-brand" href="https://www.interline.io/support/" > <span>Support</span> </a> </li> <li class="nav-docs flex flex-col relative" data-label="Docs" data-slug="docs" data-length="4"> <a class="flex hover:text-brand" href="https://www.interline.io/docs/" > <span>Docs</span> </a> </li> </ul> </nav> </div> <div class="flex flex-col gap-2 mt-2" data-footer-nav="categories"> <span class="font-semibold">Read on our blog</span> <nav class=""> <ul class="flex flex-col items-start gap-2 text-typ-tone text-sm"> <li class="flex flex-col relative"> <a href="/blog/tag/about-interline/" class="flex hover:text-brand">About Interline</a> </li> <li class="flex flex-col relative"> <a href="/blog/tag/transitland/" class="flex hover:text-brand">Transitland</a> </li> <li class="flex flex-col relative"> <a href="/blog/tag/gtfs/" class="flex hover:text-brand">GTFS</a> </li> <li class="flex flex-col relative"> <a href="/blog/tag/511-sf-bay-regional-feed/" class="flex hover:text-brand">511.org SF Bay Regional Feed</a> </li> <li class="flex flex-col relative"> <a href="/blog/tag/openstreetmap/" class="flex hover:text-brand">OpenStreetMap</a> </li> <li class="flex flex-col relative"> <a href="/blog/tag/geojsonl/" class="flex hover:text-brand">GeoJSONL</a> </li> </ul> </nav> </div> </div> <div class="py-4 md:py-6 flex flex-wrap items-center gap-2 relative before:content-[''] before:absolute before:top-0 before:left-0 before:w-full before:h-[1px] before:bg-fading"> <div class="text-sm text-typ-tone"> <span data-footer-date>© 2018 - 2024 <a class="hover:underline" href="https://www.interline.io">Interline Technologies LLC</a>.</span> </div> <button class="flex gap-0.5 p-[3px] border border-brd text-typ-tone rounded-theme hover:bg-bgr-tone" aria-label="Toggle color scheme" data-color-scheme-toggle @click="toggleColorScheme(event)"> <span data-theme="light" class="px-[5px] py-0.5 border border-transparent opacity-50 rounded-theme"> <i class="icon icon-sun size-4 stroke-2"> <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-sun-filled" width="24" height="24" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> <path stroke="none" d="M0 0h24v24H0z" fill="none"/> <path d="M12 19a1 1 0 0 1 .993 .883l.007 .117v1a1 1 0 0 1 -1.993 .117l-.007 -.117v-1a1 1 0 0 1 1 -1z" stroke-width="0" fill="currentColor" /> <path d="M18.313 16.91l.094 .083l.7 .7a1 1 0 0 1 -1.32 1.497l-.094 -.083l-.7 -.7a1 1 0 0 1 1.218 -1.567l.102 .07z" stroke-width="0" fill="currentColor" /> <path d="M7.007 16.993a1 1 0 0 1 .083 1.32l-.083 .094l-.7 .7a1 1 0 0 1 -1.497 -1.32l.083 -.094l.7 -.7a1 1 0 0 1 1.414 0z" stroke-width="0" fill="currentColor" /> <path d="M4 11a1 1 0 0 1 .117 1.993l-.117 .007h-1a1 1 0 0 1 -.117 -1.993l.117 -.007h1z" stroke-width="0" fill="currentColor" /> <path d="M21 11a1 1 0 0 1 .117 1.993l-.117 .007h-1a1 1 0 0 1 -.117 -1.993l.117 -.007h1z" stroke-width="0" fill="currentColor" /> <path d="M6.213 4.81l.094 .083l.7 .7a1 1 0 0 1 -1.32 1.497l-.094 -.083l-.7 -.7a1 1 0 0 1 1.217 -1.567l.102 .07z" stroke-width="0" fill="currentColor" /> <path d="M19.107 4.893a1 1 0 0 1 .083 1.32l-.083 .094l-.7 .7a1 1 0 0 1 -1.497 -1.32l.083 -.094l.7 -.7a1 1 0 0 1 1.414 0z" stroke-width="0" fill="currentColor" /> <path d="M12 2a1 1 0 0 1 .993 .883l.007 .117v1a1 1 0 0 1 -1.993 .117l-.007 -.117v-1a1 1 0 0 1 1 -1z" stroke-width="0" fill="currentColor" /> <path d="M12 7a5 5 0 1 1 -4.995 5.217l-.005 -.217l.005 -.217a5 5 0 0 1 4.995 -4.783z" stroke-width="0" fill="currentColor" /> </svg> </i> </span> <span data-theme="dark" class="px-[5px] py-0.5 border border-transparent opacity-50 rounded-theme"> <i class="icon icon-moon size-4 stroke-2"> <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-moon-filled" width="24" height="24" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> <path stroke="none" d="M0 0h24v24H0z" fill="none"/> <path d="M12 1.992a10 10 0 1 0 9.236 13.838c.341 -.82 -.476 -1.644 -1.298 -1.31a6.5 6.5 0 0 1 -6.864 -10.787l.077 -.08c.551 -.63 .113 -1.653 -.758 -1.653h-.266l-.068 -.006l-.06 -.002z" stroke-width="0" fill="currentColor" /> </svg> </i> </span> </button> </div> </div> </footer> <template data-toggle-template> <button class="ml-0.5" data-class="rotate-180" title="Menu toggle" aria-label="Menu toggle" aria-controls="" aria-expanded="false" @click="toggleSubmenu(event)" > <i class="icon icon-chevron-down size-4 stroke-2 stroke-2"> <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-chevron-down" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> <path stroke="none" d="M0 0h24v24H0z" fill="none"></path> <polyline points="6 9 12 15 18 9"></polyline> </svg> </i> </button> </template> <script> function renderSubmenus() { const navItems = document.querySelectorAll('[data-nav] li') const subItems = document.querySelectorAll('.is-subitem') const mobileClass = "hidden pl-4 flex flex-col gap-0.5 py-1 px-1.5 basis-full" const desktopClass = "z-[50] min-w-[calc(100%_+_24px)] absolute flex flex-col gap-1 shadow-2xl border border-brd rounded-theme-xxs bg-bgr py-2 px-1.5 -ml-2 mt-11 opacity-0 invisible translate-y-1 transition-all" // Remove '-' signs subItems.forEach(item => { const itemName = item.querySelector('a span') itemName.innerText = itemName.innerText.slice(1) }); // Add subitems in place let subMenu, hasItems navItems.forEach((item, index) => { if (item.classList.contains('is-subitem') && !navItems[index - 1].classList.contains('is-subitem')) { navItems[index - 1].classList.add('is-mainitem'); navItems[index - 1].setAttribute('x-on:click.outside', 'closeSubmenus(event)') } subMenu = item.classList.contains('is-subitem') ? subMenu : document.createElement('ul'); if (item.classList.contains('is-subitem')) { subMenu.appendChild(item) subMenu.setAttribute('data-submenu', '') subMenu.getAttribute('id') === null ? subMenu.setAttribute('id', navItems[index - 1].getAttribute('data-slug')) : '' const menuType = subMenu.closest('nav').getAttribute('data-nav') subMenu.classList = menuType === 'desktop' ? desktopClass : mobileClass } else { item.appendChild(subMenu) } }); const dropdownMenus = document.querySelectorAll('[data-nav] .is-mainitem') const toggle = document.querySelector('[data-toggle-template]'); dropdownMenus.forEach(menu => { const toggleBtn = toggle.content.firstElementChild.cloneNode(true); toggleBtn.setAttribute('aria-controls', menu.getAttribute('data-slug')) menu.insertBefore(toggleBtn, menu.children[1]); }); } </script> <script> window.socials = { rss: '/blog/rss/', threads: '', linkedin: 'https://www.linkedin.com/company/interline-io/', discord: '', github: 'https://github.com/interline-io', instagram: '', pinterest: '', reddit: '', telegram: '', tiktok: '', whatsapp: '', youtube: '', mastodon: 'https://mastodon.social/@interline' } document.addEventListener('alpine:init', () => { Alpine.data('socials', () => (window.socials)) }) </script> </body> </html>