• #30daymapchallange Day Green

    August 27, 2020

    For the seventh day of the #30daymapchallange, I made a map using Open Street Map Data to map my old neighborhood. I feel lucky to have grown up near mountains in a city.

  • #30daymapchallange Day 1 Points

    August 27, 2020
  • Wildfires in the West

    August 27, 2020
  • First R Package

    August 26, 2020

    I’ve been trying to participate in #tidytuesday. While making plots I found myself consistantly repeating the same theme() attributes for each plot. To solve this repetition, I decided to produce a package with my own theme.

  • TidyTuesday: Energy Usage in Europe

    August 16, 2020

    I haven’t had a ton of time lately. On a recent road trip, I tried out a Tidy Tuesday submission on European evergy usage. Because I didn’t have enough time, I wanted to make something simple and work on making it really easy to read. I think I did that. I would have liked to do a bit more with the theme. Maybe next time.

  • Will There be a Raftable Release out of McPhee Reservoir

    February 09, 2020

    I live next to the Dolores River. It’s an often overlooked gem of the southwest. It runs from just outside Rico, Colorado at its headwaters to the Colorado River near Moab, Utah. Rafting it is an experience.

  • New Jekyll Project With No Theme and No Posts, Just Scafolding

    January 11, 2020

    I use Jekyll to make this site. I’ve toyed with converting the site to a Wordpress site but I much prefer writing in a text editor. I also love that I can write <html> or js wherever I want in a file with syntax highlighting. I also use Jekyll to quickly prototype ideas. For this I’m looking for a bare bones Jekyll install.

  • Django View that returns JSON with a relationship

    January 03, 2020

    I am starting to really like Django development. I’m not a python developer and I am by no means a “full stack” developer, but I keep finding ways to make things in Django without much effort.

  • Nesting Json and Using Template Literals to Produce HTML

    January 01, 2020

    I come from the R world working with data. A very common data analysis technique is to take data and group it by a variable. I wanted to do the same thing with javascript and then append the data using .innerHTML to the DOM. I am working on an app that has data that I would like the user to be able to display in various different ways. I had a really hard time finding any information on grouping data and how to loop through the grouped data to display the grouped data in HTML. I am not very good a javascript so this was quite a challange for me.

  • D3js River flows

    December 22, 2019

    I’m working on a website for a rafting non-profit. I thought it would be cool if they could display the flow data for local rivers. I also thought this would be good time for me to learn more about D3js and the USGS instantaneous flow data API.

  • Django Relationships

    December 15, 2019

    For some reason, in the winter I get the urge to learn something new. This year, I’m attempting to pick up Django again (gave an effort a year ago too). One of the things I wanted to better understand is how to implement database relationships.

  • Getting Python installed on a Windows Machine.

    December 10, 2019

    I recently had a hell of a time figuring out the ins and outs of getting python working on a windows machine.

  • Colorado: Hex Plots, APIs, and D3js

    November 30, 2019

    After my last blogpost I was a little frustrated at how poorly the title text resized using ggplot and ggsave. It was a minor issue to be honest, but I figured I could learn something new by exporting the data as geojson and plotting it using D3 js. So here it goes.

  • Colorado: Hex Plots, API packages, and R

    November 30, 2019
  • Spatially Balanced Sample Designs in R with `spsurvey::grts()`

    November 19, 2019

    We’ve been using spatially balanced stratified study designs more frequently at work these days. They are a good way to make probabilistic inference over large areas. A popular method of creating these designs is using the R function spsurvey::grts(). The following is a basic (very basic) explainer of how to get up and running with grts() function and what it is. But a bit about GRTS and spatially balanced study design before we get coding.

  • Statistics in R: Resources for Understanding Statistics in R

    September 19, 2019

    This is a collections of resources that have helped me learn and understand statistics in R.

  • Kernel Density Estimation in R

    September 11, 2019

    For a recent project I needed to run a kernel density estimation in R, turning GPS points into a raster of point densities. Below is how I accomplished that.

  • Helpful Wordpress Snippets

    April 13, 2019

    Some helpful Wordpress snippets that I am always looking up.

  • Cumulative Distribution Function

    April 11, 2019

    Cumulative distribution functions allow you to answer the questions, what percent of my sample is less than or greater than a value. For example I work with sage-brush cover frequently. With a cumulative distribution function I can answer the question, what proportion of my plots with sagebrush have greater than 90% cover.

  • Subset Raster Extent w/ R

    March 27, 2019

    A little snippet that helps subset raster extents.

  • Remote Sensing Tools

    March 11, 2019

    A collection of tools and documentation on remote sensing.

  • Extract Raster Values

    March 11, 2019

    Below is a method to use the raster package extract() function to get a subet of rasterBrick values. To be specific, I need to extract all raster values that are within a polygon boundary. In the past I have used crop(), mask() and then the getValues() functions from the raster package to subset data values within a polygon. But that method returns a data frame with a ton of NA values (anything outside of the crop area in the raster is an NA). This is fine most of the time but the current project that I am working on requires almost all of the memory on my computer. I’m working with extremely large rasters (2Gb). Removing the NA values after the crop(), mask(), and getValues() process crashes my computer. So I need a more effecient process.

  • Random Forest Resources and Notes

    February 26, 2019

    Resources to understand and run random forests in r.

  • Creating a polygon from scratch in R

    February 14, 2019

    A quick little snippet for making a polygon with coordinates out of thin air in r.

  • Goals: 2019

    January 24, 2019

    A quick list of my goals for 2019 and a look back at my goals for 2018.

  • Raster Distance Calculations

    December 18, 2018
  • Web Dev Resources

    December 12, 2018

    A collection of resources that I couldn’t work without

  • Django Getting Started

    December 08, 2018

    My notes on learning Django. I’m using this Django Tutorial.

  • Classifying High Resolution Aerial Imagery - Part 2

    December 01, 2018

    I have been attempting to use random forests to classify high resolution aerial imagery. Part one of this post series was my first attempt. The aerial imagery dataset that I am working on is made up of many ortho tiles that I need to classify into vegetation categories. The first attempt was to classify vegetation on one tile. This note documents classifying vegetation across tiles.

  • Colorado Avalanches By The Numbers in R

    November 20, 2018

    A look at avalanches in Colorado. Please not I’m not an avalanche expert, so please take these interpretations with a healthy dose of skepticism.

  • Data Science Resources

    November 20, 2018

    A collection of resources on data science and machine learning primarily in R.

  • Classifying High Resolution Aerial Imagery - Part 1

    November 20, 2018

    The following note documents a proof of concept for classifying vegetation with 4 band 0.1m aerial imagery. We used sagebrush, bare ground, grass, and PJ for classes. approximately 300 training polygons were used as a training data.

  • Making a Chloropleth Map in R

    November 20, 2018
  • Issue Based NEPA Course

    November 13, 2018

    NEPA, the good parts!

  • D3:Basic Line Chart

    October 28, 2018

    This is a basic line chart built with D3. I’ve written a few more tutorials on how to make charts starting out very basic and moving to a little more complex. I’m no expert, so these are how a beginner (at both javascript and D3) would explain everything. Some might find that methodology helpful. My previous tutorials: My first charts, SVG Plots, Scatterplot.

  • Jekyll Cheatsheet

    October 28, 2018

    For whatever reason, I don’t seem to remember so many important jekyll code snippets. This note is a list of all that I can’t remember.

  • D3.js: Basic ScatterPlot

    October 27, 2018

    I’ve made a few bar charts up to this point. But really what I want to do is plot data over time. We need to figure out how to add x and y axis and work with x and y coordinates. The next logical step then, is to make a scatterplot.

  • Statistics For Me

    October 16, 2018

    I only took one statistics class in college. It wasn’t that great. I remember the teacher telling a student that it wasn’t her problem if the student didn’t understand the material. Needless to say, statistics found in most wildlife papers are way over my head. Time to change that.

  • D3.js Next Steps: SVG

    October 08, 2018

    So the next big steps in making charts is instead of using html elements, d3 works really well with svg elements. But even though svg elements are a flexible for making graphics, not that many people are familiar with them so they add another level of confusion to the process. So let’s start at the beginning with what an svg element is.

  • D3.js: Notes on my first outing

    October 08, 2018

    When I learned to program, I started to come up with all of these ideas that all of the sudden I knew were possible. But I didn’t really know how to implement most of them. For instance, I’ve wanted to be able to use an API to retrieve data and then use that data to make a chart on the fly for quite some time. There’s only one problem: I suck at javascript. Without a doubt, charting and making api calls on the front end requires javascript. It also means, working with D3 if you want to do it right. Needless to say, because I am not an excellent javascript (or anything but html, css, and a touch of r for that matter) this “dream” has been an uphill battle. Just getting the data has been a challenge. Needless to say, today I started working on some simple D3 charts. No longer will I wait until I magically become an amazing javascript developer to learn how to make charts.

  • Processing Ortho Imagery

    September 17, 2018

    We just purchased 0.2 m four band aerial imagery that covers all Gunnison sage-grouse critical habitat. This is the first time I have ever received raw aerial imagery. We have been working on doing some ground truething of a set of polygons so that we can classify imagery into a variety of vegetation classes (sagebrush/non-sagebrush, sagbrush density classes, etc.)

  • Notes from BLM Wildlife Meeting in Silt

    September 11, 2018

    Some of my notes from the BLM Colorado State Wildlife Meeting in Silt, Colorado, September 11 - September 13, 2018.

  • Vue and Axios

    September 02, 2018

    My notes on getting up and running with vue and axios. this is also the first step in turning my River Flow app which queries the USGS instantaneous flow data from a non server rendering non-route serving app to a Nuxt.js Universal Application (meaning it is rendered on the server before it is served).

  • Notes on Nuxt

    September 01, 2018

    My notes on Nuxt.js.

  • Working with DIMA Tools and Making a Plant List from Species Richness Table

    August 31, 2018

    This is a series of notes that works with the DIMA database. The DIMA was produced by the Jornada Research Center for the Assessment Inventory and Monitoring framework.

  • Understanding Landsat Imagery

    August 31, 2018

    I’ve been thinking about landsat imagery. At my office we are attempting to use landsat data for drought monitoring. But I’m new to landsat data, so I thought it would be helpful to write a little explainer.

  • A Method for counting in a sequence, reset by a binary event in R

    August 24, 2018

    A method for creating a variable that sequential counts until an binary event occurs in another vairiable.

  • Explaining a Technical Model

    August 16, 2018

    This year I made a model that attempts to predict where cultural resources are likely to occur on the field office that work on for the BLM. It was the first time I had ever done anything like this and the results surprised me. Validation showed that the model I made captures about 94% of all archaeological sites on the landscape. I used a variety of data sources - animal migratory and concentration areas, hydrologic features, and a variety of elevation based metrics - to feed into a random forest machine learning algorithm to classify raster (grid GIS layer) pixels. But producing a model is only half the battle. I need to explain to my managers what the model is and then I need to prove to the state agency that oversees cultural resources, SHIPO, in Colorado, that the model works and is trustworthy enough to use.

  • How to download and work with LSAT data - a better approach

    August 13, 2018

    My last post was about working with the r getlandsat package to work with landsat data from NASA and the USGS. This post will be a brief refinement on that process.

  • Cultural Model R Scripts

    August 01, 2018

    The following are scripts that I used to make a cultural prediction model. It uses topographic, hydrologic and biological GIS information to predict areas where arc sites likely occur on the landscape.

  • Landsat First Try

    July 31, 2018

    {r setup, include=FALSE} knitr::opts_chunk$set(echo = TRUE)

  • Project Test Post 2

    July 31, 2018

    You’ll find this post in your _posts directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to run jekyll serve, which launches a web server and auto-regenerates your site when a file is updated.

  • Final Cultural Prediction Model Notes

    July 31, 2018

    The purpose of this note is to document my process for creating a model that predicts where archaeological sites are more likely to occur on our field office. You can find my R scripts here.