These are some miscellaneous GIS projects that I am particularly proud
of or had an especially fun time completing.
Scroll through the whole page, or click below to find a specific topic:
Dynamic Cartography at USC teaches students the theories and principles of interactive and animated cartographic design. We used Flash, Leaflet, and Tableau to work on a variety of projects.
We used the flight departure schedule for a typical Friday to represent the airplane departure times on this animated map. The flight paths are invented (i.e., the flight from CAE to CLT does not necessarily curve in that manner), but the geography is to scale and the timing is accurate.
Dynamic cartography can show changes over time as well as over space. In this example, we were given census data for Alabama and used it to make a population change map. Button controls allow the user to pause, rewind, or play the animation as desired.
Leaflet is a Javascript library designed to make web-based mapping simple and accessible. My class project was a map of kid-friendly locations in Bloomington, Indiana (where I used to live). The flexibility of Leaflet means it can work with many different basemaps; for simplicity (and low-cost), I originally used CloudMade as the tiles. (In May 2014, when they switched to an "enterprise model" and no longer served data for low-transaction users, I switched to the OpenStreetMap.org tiles instead.)
My project included designing custom vector icons (in Adobe Illustrator), creating point/line/polygon features using WKT markup language, and including a legend that can turn different categories of landmarks on and off. Take a look at the map here.
Part of the requirement for graduate credit in this course was to teach a 15-minute (or longer) tutorial to the other students in the class, covering a topic beyond the basic coursework. Leaflet uses well-known text to describe vector geometry, which can be cumbersome for more than a few dozen features. Javascript shouldn't be used to directly access a SQL database for security reasons, but it can read an XML file (generated by a database procedure).
I therefore figured out a way to read an XML file using jQuery, looping through each element to extract desired information (particularly the lat-long values, since this data will be mapped) and dump it into an array. The data can then be used to generate points and attributes through Leaflet commands. This method doesn't pull live database information, but there are plenty of uses that don't need such current data. For example, locations of restaurants around a city are not likely to change on an hourly basis, and reading XML instead of running SQL queries every time a map needs to be generated can be faster.
An example implementation can be seen here, including the tutorial instructions and the original XML data.
The 2013 GeoLeague Challenge (a student competition sponsored by ASPRS) was for a team of students to produce a GIS tool that would assist with planning new trails. The USC team created a set of ModelBuilder tools that generated a cost surface (based on soils, vegetation, slope, and hydrologic features), then ran a least-cost path analysis and performed a statistical analysis to evaluate trail characteristics. We named this toolset TrailBlazer.
We decided to use ModelBuilder for the tools, rather than C# or Python, in order to provide a very easily adaptable tool that could be operated and customized by the average ArcMap user. It is broken into three parts for flexibliity:
Other teams used fairly similar approaches. One of the most innovative aspects of TrailBlazer was that the least-cost path tool not only analyzed the cost surface (which included slope), but also factored in aspect. In other words, our pathfinding tool assigned different difficulty to trails that were traveling uphill, downhill, or perpendicular to a slope.
This project would not have been as rewarding and thorough without an excellent group of teammates. It was a great experience.
My Master of Science thesis was titled Comparison of Ground-to-Air Visibility Analysis Methods. It can be summarized in one sentence: You can't see planes through buildings, so it's important to know where local buildings are.
You may be asking yourself, who actually has fun with a thesis? It had its share of stressful and difficult moments, but overall, it was a very interesting experience and I did enjoy it.

Understanding the local terrain -- including surface features such as buildings and vegetation -- is critical to being able to accurately measure visiblity. As part of my project, I used 2008 LiDAR data to make an assortment of DSMs ranging from 30 meter to 1 meter resolution.
A 1 meter resolution DSM is almost absurdly large, so it is rarely used for GIS modeling. But I recommend trying it sometime if you can: I CAN SEE MY HOUSE. I can even identify the tree that got cut down a few months after the LiDAR flight. (Realistically, this sort of DSM is only useful for a pretty limited set of applications, one of which is "taking screenshots and posting it on my website." This is just a tiny fraction of the raster.)
I did a comparison between two visibility models: one using Viewshed in ArcMap, and one custom Python algorithm using sightlines. (I also tried using Line of Sight in ArcMap, but it won't work for ground-to-air visibility.) I knew almost nothing about Python when I started working on this, so the initial algorithm I made was not as efficient as it could have been: it got the job done, but was not particularly elegant.
The final revision is faster and may even be more accurate, although it has not been as extensively tested as the Viewshed model and the GSSM script. I look forward to tweaking it even more. It will also be a good excuse for me to learn more about open-source GIS options such as QGIS.
I am working on a University of South Carolina campus map using HTML5 and SVG. The project is not an official map of campus, and is still largely incomplete.
This map is not related to any coursework or job. I'm using it as an exercise to teach myself SVG, more JavaScript, and HTML5. It was inspired, however, by the relatively low-quality implementation of USC's official campus maps, which can be found here and here. The two different official maps have a different set of problems and drawbacks -- the first is difficult to use and navigate, the second has significant data gaps and inaccuracies.
The database stores the relative geometry points of various features, as well as
attribute information (name, type of feature, notes).

The PHP script pulls all the features from the database, and generates SVG to draw them on the page.