Blog Code GIS Music Photos Tracks

Dispose an OpenLayers Map

  const layers = map.getLayers().getArray();
  layers.forEach((layer) => {
    const source = layer.getSource();
    if (source && source.dispose) {
      source.clear();
      source.dispose();
    }
    if (layer.disposeInternal) {
      layer.disposeInternal();
    } else if (layer.dispose) {
      layer.dispose();
    }
    map.removeLayer(layer);
  });
  const olCanvas = map.getViewport().querySelector("canvas");
  if (olCanvas) {
    const gl = olCanvas.getContext("webgl") || olCanvas.getContext("webgl2");
    if (gl) {
      const loseContext = gl.getExtension("WEBGL_lose_context");
      if (loseContext) {
        loseContext.loseContext();
      } 
    }
  }
  map.getInteractions().clear();
  map.getOverlays().clear();
  map.dispose();
  map.setTarget(null);
Code | Read More →

Refactor Web Journal

I originally created this site to be a simple web 2.0 blog site with text entries for thoughts that...

Journal | Read More →

Deck GL and 3D Tiles

Generate Colorized 3D Tiles from LiDAR and Ortho Imagery

Tech Blog | Read More →

Introducing Ancestral Audio

Using whisper and AI to transcribe audio and generate thematic clips

Journal | Read More →

Finding Perpendicular lines with TurfJS

Bearing, LineIntersect & Destination

Tech Blog | Read More →

MapCompare

Rendering Comparisons of Vector Tiles and COGs in Web Mapping Libraries

Tech Blog | Read More →

GeoJSON Network Trace Tool

Trace a GeoJSON Linear Network in the Browser

Tech Blog | Read More →

H3 Grids Explorer

A Web Tool for Exoploring H3 Grid Levels

Tech Blog | Read More →

westward 2023

Photos | View Gallery →

Potocki Vodka Store Finder

A Responsive Map-Focused Store Finder

Tech Blog | Read More →

Serverless Web Maps

Using SQLite in the Browser and Service Workers to Power Web Maps from Object Storage

Tech Blog | Read More →

Danville Girl

folk songs

Music

night

Photos | View Gallery →

City of Lancaster Public Transit

A NodeJS GTFS Feed & Interactive Map Generator

Tech Blog | Read More →

Peaks 3D Visualization

An Exporation of the Highest Mountain Peaks in the US

Tech Blog | Read More →

Export GeoJSON from PostgreSQL using Beekeeper Studio

Query > Download > Copy > Paste!

Tech Blog | Read More →

FOSS4G Image Processing

Creating Cloud Optimized GeoTIFFs and Raster Tiles using GDAL and QGIS

Tech Blog | Read More →

Generating Cloud Optimized GeoTIFFs and Raster Tiles with GDAL

TL;DR gdalbuildvrt, gdal_translate, gdal_warp and gdaladdo

Tech Blog | Read More →

Wedding Website

A Single-Page Wedding Wedsite with an Interactive Map

Tech Blog | Read More →

Pandemix Data Visualization

What if all US COVID Deaths occurred in one geographic area?

Tech Blog | Read More →

Tilequery

Query Remote Vector Tiles in Node JS and the Browser

Tech Blog | Read More →

From the Ashes of Shapefiles

A Presentation for the 2020 Virtual Ohio GIS Conference

Tech Blog | Read More →

GIS and Remote Work

An Exploration of a GIS Remote Work Toolkit

Tech Blog | Read More →

Banks of the Ohio

folk songs

Music

Exporting AGOL Feature Services to GeoJSON

Using NodeJS and Batches to Transform an ArcGIS Online Feature Service to GeoJSON

Tech Blog | Read More →

Ohio COVID-19 Dashboard

A Simple, Client Side Tracking Dashboard for COVID-19 in Ohio

Tech Blog | Read More →

RTK to WGS84

Transforming Coordinates with JavaScript using proj4.js

Tech Blog | Read More →

Highlighting Features in Mapbox GL JS

A Comparison of Filter and Feature-State

Tech Blog | Read More →

Network Tracing with Turf JS

A Client Side Solution for Simple Upstream and Downstream Linear Network Analysis

Tech Blog | Read More →

Progressive Web Apps

Using PWA Components for Web Maps

Tech Blog | Read More →

Open Parcel Viewer

A Client-Side Parcel Viewer built with Leaflet

Tech Blog | Read More →

Leaflet Store Locator

A Leaflet Version of the Original Mapbox JS Store Locator Example

Tech Blog | Read More →

Intro to Turf JS

Geospatial Analysis for the Browser, Desktop & Server

Tech Blog | Read More →

Mapping with Vector Tiles

Query Features Outside the Viewport

Tech Blog | Read More →

GPX Visualize

A Visualization for GPS Tracks

Tech Blog | Read More →

Data-Driven Styling, 3D Polygons & Vector Tiles with Mapbox GL JS

Tech Blog | Read More →

Web Maps from Scratch

An Introduction to Leaflet, GitHub & Jekyll

Tech Blog | Read More →

What is a Map?

Marshall Univerity 2016 GIS Day Keynote

Tech Blog | Read More →

Beyond the Desktop

Open Source Experiments in Web Mapping

Tech Blog | Read More →

Jekyll, Leaflet and TurfJS

Open Source Tools for Web Mapping

Tech Blog | Read More →

Leaflet & GeoJson Tiles

A County Parcel App: No GIS Server? No Problem!

Tech Blog | Read More →

Shagbark Product Locator Map

A Locator Map with Search and Nearest Store Finder

Tech Blog | Read More →

CartoDB Visualizations

One Data Set Four Ways

Tech Blog | Read More →

A Modern Leaflet Toolbar

Horizontal Toolbars in Leaflet

Tech Blog | Read More →

Conkle's Hollow Fall Hike

Mapping GPS Tracks with Leaflet

Tech Blog | Read More →

Intro to Leaflet

A Presentation for the 2015 Ohio GIS Conference

Tech Blog | Read More →

Leaflet Photo Map

A Trip Out West circa 1985

Tech Blog | Read More →

Google MyMaps, Leaflet and ArcGIS Online

Tech Blog | Read More →

Hosting a GeoJson on GitHub

Tech Blog | Read More →

East Virginia

folk songs

Music

Google Drive Fusion Tables

Tech Blog | Read More →

Raster Catalogs

Tech Blog | Read More →

Streets of Laredo

folk songs

Music

Desktop to the Cloud: GIS Cloud and Rasters

Tech Blog | Read More →

Animating Urban Growth via the ArcMap Time Slider

One Hundred Years of Urban Growth in Ten Seconds

Tech Blog | Read More →

Use Only Selected Features in Model Builder

Tech Blog | Read More →

Wildlife

Photos | View Gallery →

street

Photos | View Gallery →

abstract

Photos | View Gallery →

misc

Photos | View Gallery →

flowers

Photos | View Gallery →

landscape

Photos | View Gallery →

Hold You

veil

Music

Riverstone

veil

Music

Veil

veil

Music

Words Of Love

veil

Music

Words Of War

veil

Music

Afternoon Ride (1)

Length: 20.92 mi
Elevation Change: 22.1 ft
Max Elevation: 241.4 ft
Total Time: 124 min

Alley Park 20201025

Length: 2.11 mi
Elevation Change: 66.7 ft
Max Elevation: 248.47 ft
Total Time: 59 min
Download GPX

Alley park II 20201025

Length: 2.28 mi
Elevation Change: 108.78 ft
Max Elevation: 252.52 ft
Total Time: 79 min
Download GPX

Lake Vesuvius Backpack Trail 20211030

Length: 9.18 mi
Elevation Change: 133.53 ft
Max Elevation: 308.21 ft
Total Time: 325 min
Download GPX

Lake Vesuvius Lake Trail I 20211029

Length: 4.36 mi
Elevation Change: 93.46 ft
Max Elevation: 260.14 ft
Total Time: 141 min
Download GPX

Lake Vesuvius Lake Trail II 20211031

Length: 4.83 mi
Elevation Change: 111.49 ft
Max Elevation: 274.3 ft
Total Time: 126 min
Download GPX

MS Ride 2014 Day 2

Length: 26.8 mi
Elevation Change: 93.5 ft
Max Elevation: 299.9 ft
Total Time: 172 min

Walnut Woods

Length: 2.17 mi
Elevation Change: 22.89 ft
Max Elevation: 240.59 ft
Total Time: 40 min
Download GPX

col path 1

Length: 21.2 mi
Elevation Change: 27.6 ft
Max Elevation: 253.6 ft
Total Time: 119 min