2016 Minnesota GIS/LIS Conference Recap

Last week the Minnesota GIS/LIS Consortium wrapped up its 26th annual conference. Each year the conference is held at different locations throughout the state, and for the second consecutive year the conference was located in Duluth, Minnesota.

The City of Duluth and Minnesota’s North Shore are incredibly beautiful and among some of the places to visit among Minnesotans and out-of-state visitors alike.

Climbing Eagle Mountain

Before the start of the conference, I arrived in Duluth a day early and made the 2.5-hour one-way drive near the Canadian border to complete a solo hike to the summit of Eagle Mountain, Minnesota’s highest point (2,301-feet). The hike is approximately 7-miles round-trip and crosses into the Boundary Waters Canoe Area Wilderness.

Eagle mountain trail crossing into the Boundary Waters Canoe Area
The Eagle Mountain trail crossing into the Boundary Waters Canoe Area Wilderness (BWCA).

While I’ve completed the hike before, this was my first solo hike up to the summit, and one of the most secluded hikes I’ve ever experienced.

I didn’t see or hear another vehicle or person for over four hours. The air was full of cedar and pine and I could only hear bird wings fluttering, squirrels sounding, water flowing across rocks in nearby streams, and leaves rustling in the wind. The hike was one of the quietest and most serene I’ve ever experienced.

Crossing a creek along the Eagle Mountain trail
Crossing a creek along the Eagle Mountain trail.
Whale Lake, located along the Eagle Mountain trail
Whale Lake, located along the Eagle Mountain trail.

The view on top of Minnesota’s highest point was out-of-this-world spectacular, as is the journey throughout the Eagle Mountain trail.

View from the Eagle Mountain Summit
The view from Minnesota’s highest point, the summit of Eagle Mountain.

Upon returning to Duluth, I was able to visit Minnesota’s lowest point, Lake Superior (602-feet). Like Minnesota’s highest point, Lake Superior is extremely beautiful and mesmerizing.

Lake Superior
The view from Minnesota’s lowest point, Lake Superior.

The Conference Begins

The following morning was the start of the conference with this year’s theme focused on Your Geospatial Destiny.

Wednesday’s luncheon speakers featured work by local high school students using GIS technologies to solve questions. One of the students created an interactive map preparing the Duluth community for a zombie apocalypse and shared his efforts, struggles, and findings with the geospatial community.

After workshops concluded, on the way to dinner some colleagues and I were able to watch a large vessel crossing under the Duluth Lift Bridge!

A ship crossing under the Duluth Lift Bridge
A ship crossing under the elevated Duluth Lift Bridge.

Human Stories

Thursday morning’s keynote speaker, Carrie Sowden shared her experiences and stories around the Great Lakes’ shipwrecks. One of her most exhilarating stories was when her team recovered the warning bell from the Courtland shipwreck near Avon Point, Ohio. The iron bell was rung before the ship collided with the Morning Star in June 1868. The more Carrie and her team learned about the bell, the more they learned about the Courtland and her story. In fact, it is possible the ship’s name and the bell, possibly taken from a Courtland homestead, were used as a reminder of the creator’s hometown.

Carrie mentioned her research wasn’t just about the objects found, but the human stories behind the ships, the wrecks, and the Great Lakes.

After Carrie’s keynote address conference sessions were on!

5k Fun Run/Walk

The next morning at 6:15 am, the annual 5k Fun Run/Walk began along Duluth’s Lake Walk.

Mile marker along the 2016 Minnesota GIS/LIS Fun Run/Walk route
Mile marker 2 along the 2016 Minnesota GIS/LIS Fun Run/Walk course.

The out-and-back course has amazing scenery along Lake Superior and incredible views of Duluth’s Canal Park and Aerial Lift Bridge before the finish line.

View of Duluth and Canal Park from the Fun Run/Walk course
The view of Duluth’s Canal Park near the finish of the 2016 Minnesota GIS/LIS Fun Run/Walk.

Friday Sessions

Then sessions were on again early Friday morning! I learned all about web analytics to make and support better applications from Michael Terner. Michael used some of the applications he and his team have created, the web analytics behind the applications, and how they approached enhancements and modifications based on the analytics. In addition Michael talked about the application support and testing that was completed.

Concluding Thoughts

I have amazing group on people in my life that I am blessed to not only call my colleagues, but my friends. Each and every one of you is incredibly talented, ridiculously supportive, and out-of-this-world incredible. It was fantastic to see each and every one of you, and to meet new friends in Duluth.

Thank you for being who you are, doing what you do, and bettering our community together. Keep it up!

 

 

How to Create a Customized ArcGIS Style

As a user and supporter of accessibility, often times I use a set of specific ColorBrewer color ramps when designing maps.

QGIS has supported ColorBrewer palettes for many years. For more information on QGIS’ ColorBrewer color ramps support, I recommend Anita Graser’s blog posts QGIS Meets ColorBrewer for the step-by-step process and More Color Ramps for QGIS for the updated palettes.

While it’s relatively “easy” to style maps with ArcMap there aren’t any out-of-the-box style solutions incorporating ColorBrewer, leaving the cartographer with two options:

  1. Customize your colors on-the-fly (good for one time use-cases), or
  2. Create a customized style file that can be used anytime.

At one time there was a ColorBrewer style file on the no-longer-supported Esri ArcScripts website, but even when the file was accessible the file didn’t meet my needs. Some colleagues found it hard to distinguish the lightest color against lighter-colored backgrounds/basemaps, or when displaying white or gray in a map.

To accommodate the request, I changed the number of data classes in ColorBrewer to one greater than the number I needed. For example: If four data classes were needed in a map, I changed the number of data classes to five and selected the four “darkest” color options:

Color Brewer data classes
Figure 1: ColorBrewer data classes

It wasn’t practical to continually set colors manually in ArcMap, especially when colleagues were doing the same work at their desks. So I needed to create a style file for myself and others. Besides I like getting my hands dirty and finding out the “how” behind why things work. 😛

In order to create my own style, I needed to implement the colors above into my own style. It wasn’t easy; documentation was lacking and outdated. Between software changes and the seemingly less customizations of ArcGIS software, I found myself stumbling through the process. I hope the process below helps other curious cartographers seeking to improve their organization’s workflow.

To create a customized style file I could re-use and share with colleagues I performed the following tasks:

In ArcMap, navigate to the ‘Customize’ menu, and click ‘Style Manager…’:

The customize menu
Figure 2: The Customize menu

Once the Style Manager dialog is opened, click the ‘Styles…’ button located in the right side of the dialog box. In the prompt select, ‘Create New Style…’.

A ‘Save As’ dialog will appear, ensure the file is being saved into: C:\Users\<your-username-here>\AppData\Roaming\ESRI\Desktop10.x\ArcMap, and the .style file type is maintained (e.g. ColorBrewer.style). Click ‘OK’ to create the new style.

On the left side of the Style Manager dialog box, a new folder will be created:

Screenshot of the ArcMap Style Manager
Figure 3: Screenshot of the ArcMap Style Manager

There are many ways to create color ramps, as there are four types of color ramps:

  • Random: a random alternating band of colors;
  • Multi-part: a continuous band of color ramp combinations;
  • Preset: an individually-specified color ramp; and
  • Algorithmic: a linear stretch between two defined colors.

To create a ColorBrewer color ramp, I used two types of ramps. First, a Multi-part color ramp to combine multiple color ramps together. Then, multiple Algorithmic color ramps to create an algorithm of colors between two defined color values.

There are alternative methodologies to create color ramps, this is the method I preferred. Explore other possibilities while designing your own.

To create the color ramps, navigate to the ‘Color Ramps’ folder > ‘New’ > ‘Multi-part Color Ramp…’:

How to add a multi-part color ramp.
Figure 4:  How to add a multi-part color ramp.

Next, in the Color Ramp dialog, select the ‘Add’ button > ‘Algorithmic Color Ramp’:

How to create an Algorithmic color ramp
Figure 5: How to create an Algorithmic color ramp

In the Algorithmic Color Ramp select ‘Properties’:

How to alter the Algorithmic color ramp properties
Figure 6: How to alter the Algorithmic color ramp properties

To change the color, select the ‘More Colors…’ button to select a new pre-defined color:

The Style manager's edit color ramp dialog
Figure 7: The Style manager’s edit color ramp dialog

In the Color Selector dialog, switch to “RGB” or “CMYK”, as ColorBrewer lists both.

Change Color 1 to the lightest color and Color 2 to the second lightest color desired. For example: Referencing Figure 1 above, to create the same color scheme, assign Color 1 as (R:178, G:226, B:226) and Color 2 as (R:102, G:194, B:164).

Changing the color selector to RGB
Figure 8: Changing the color selector to RGB

Continue this process using the second lightest color, or Color 2 above, in the “Color 1” value (e.g. R:102, G:194, B:164) and adding in the next darkest value into Color 2 (e.g. R:44, G:162, B:95). Continue until all of the desired colors have been added.

Once completed there will be one less algorithmic color ramp than the number of data classes. For example: With four defined data classes, there will be three algorithmic color ramps.

An example of a customized color ramp using Color Brewer's data classes
Figure 9: An example of a customized color ramp using ColorBrewer’s data classes.

Continue to add in additional color ramps, and name them along the way (e.g. ColorBrewer Green). Color ramp naming conventions are important as an ArcGIS user can change the display of the color ramps from graphic to textual in the Layer properties symbology by right-clicking the color ramp and unchecking ‘Graphic View’.

Once all of the Color Ramps desired have been added, the style file created can be shared with others by copying the style file to the C:\Users\<your-colleagues-username>\AppData\Roaming\ESRI\Desktop10.x\ArcMap folder.

Hooray! 😀

Geo:Code 2.0 Recap

This past weekend was the second installment of Geo:Code, a multi-jurisdictional hack-a-thon event focused on geospatial open data and technologies held in Minneapolis.

Geo:Code was my first official hack-a-thon event. Before attending a “hack event” like this I’ve always wondered how the atmosphere fared for an entire weekend – where the majority of attendees volunteer their free time to create solutions for a community. Now, a solution can’t necessarily be made in one weekend, but “hack events” are a means to start the conversation.

Some of the awesomeness that unfolded:

  1. During the event, the University of Minnesota provided two full days of usability experiences in the Usability Lab. I was able to participate in a session on the first morning. It was incredibly eye opening to watch someone use something I built. This was my first experience watching someone without a health background look through my application, which made the experience even more valuable, and helped me remember how difficult it is to present health data in a meaningful way to the non-health professional.
  1. I ran into so many people with a wide range of backgrounds. There were students, GIS professionals, cartographers, designers, developers, community members, and many others. But more importantly, there was so much passion around the event that helped contribute to its success.
  1. I ran into some colleagues from my previous employer – some I didn’t think I would have the opportunity to work with again. Even though we no longer work under the same roof, and have very different goals in our day-to-day jobs, we were working together as a team (again), and building our relationships for the future.
  1. I had some amazing conversations with some Open Twin Cities folks, and other developers that work for the same employer – I can’t wait to see where our conversations lead us in the future. 🙂

Concluding thoughts:

  • There are a lot of talented people in the Twin Cities (obviously).
  • If you attend a hack event, you don’t have to participate in a structured group project. Start your own, and if you feel ambitious – try to find others to help you!
  • If you’re an introvert; Find a nice quiet location away from the action – hunt down a couch/recliner near a window, throw in your headphones, and work away! Or, if they are available – attend some introductory sessions to learn something new!
  • Data is like a song’s rhythm; it initiates structure, but its not always memorable on its own. For example: It isn’t always intuitive to pick out a song from clapping the rhythm, but it initiates the basics to get you started.
  • You don’t have to be a developer to contribute!
  • Talk to others, even if they aren’t working on the same project. You never know when you’ll run into each other again. Plus, they could be a great resource to you when your working on something at school/work.
  • Help others! This empowers everyone; finding solutions together, and understanding different methodologies together.
  • The end of any hack-a-thon is just the beginning!
  • Work together, build beautiful things, and change the world.

100 Lessons Challenge

One hundred and one days ago I embarked on a journey to learn something new each day, and share it with the world (check out my blog post from November).

First off, this challenge was so hard. There were so many things I learned, and this amazing experience made me realize how much I was learning each day 🙂

But, I wouldn’t always ship out the things I learned with the world. Sometimes I’d think, Nobody would care about this, or this isn’t good enough to share (I eventually got over these ridiculous thoughts).

Other days, I wanted to keep things to myself, was reviewing an awesome cartography book, QGIS Map Design (Side note: highly recommended once it’s available for purchase!), or wanted to keep tidbits within my circle of family, friends, and colleagues. And sometimes it didn’t make sense to share. I mean, do you really want to hear about my ridiculous geckos?

Some of my favorite lessons throughout my journey include:

While my #100Lessons journey is now complete, I have no plans to stop learning, or to stop sharing some cool things I’ve learned along the way… 😉

Accessibile Conversations

About once a month I receive a message from my accessibility coordinator at work asking to help out, or answer an accessibility question pertaining to cartography.

The latest question posed was related to cartographic color contrast on interactive, and printed maps. A designer tested out some color schemes against an approved color contrast tool, where all of the schemes failed the check.

Instead of trying to answer the question electronically, the accessibility coordinator and I met in person to discuss the problem, see the color contrast checker tool in action, and discuss the details together.

We discussed the problem, determined who was effected, and the next steps. Below are some of our discussions and findings:

What’s the problem?

ColorBrewer’s color schemes fail against Web Content Accessibility Guidelines (WCAG) 2.0’s color contrast ratio. One of the tools used to verify the contrast ratio was WebAIM’s Color Contrast Checker.

Screen Shot 2016-01-16 at 3.57.00 PM
Figure 1. WebAIM color contrast checker

Got it. So, who is affected?

This was the main focus during our discussions, and it’s where we started asking a wide range of questions. Does color contrast on maps even make sense?

This was one of the questions we couldn’t answer, and it led to a few others, such as:

  1. If you have a choropleth map, without any labels on it (Figure 2), is color contrast an issue for any audiences?
Screen Shot 2016-01-18 at 3.38.08 PM
Figure 2. ColorBrewer choropleth map
  1. If you have an interactive map with a basemap (Figure 3), how do you consider color contrast with the colors of the basemap, transparencies (if applicable), and colors of the data displayed?
Screen Shot 2016-01-18 at 3.33.19 PM.png
Figure 3. Interactive map with choropleth data over a basemap.

So let’s assume audiences aren’t effected… What does it look like now?

Using some of the tools I use to check my maps, both interactive, and print (on computer monitors, and printed on paper) we determined the colors checked out with visually impaired audiences. We already knew this from past meetings, but we confirmed it together to be sure.

Our concluding thoughts

After the testing, we determined, in most circumstances, if the cartographer isn’t layering color on top of color, WebAIM’s color contrast checker doesn’t do us much good.

The color contrast checker tool’s goal is to verify a foreground and background color have enough contrast between one another. The checker is not made to work with adjacent colors. There are other, more useful tools, to check on adjacent colors on a webpage, or in our case maps.

Final thoughts

So, why am I sharing this story with you? Because accessibility is hard, and not all answers are yes and/or no.

Accessibility is determined by people, which is why it can be so difficult. But the payoff for making an experience the same for all users makes it all worth it!

In the last year, I’ve learned three awesome takeaways when it comes to accessibility:

  1. Have discussions: When it comes to accessibility, there isn’t always a clear cut answer. My accessibility coordinator and I frequently sit down and talk about issues as they come up. Do we always come up with the answer(s)? No. Many times we come up with more questions than we started with. That’s the nature of accessibility!
  1. Ask questions: Accessibility is about people. If any components of your work fail an accessibility check, that doesn’t always mean you have to change anything. Always ask: Who does this effect, and why would it effect them? If you can’t answer either question, is it always necessary to build around them? Sometimes the standard rules won’t apply, and we could be overthinking the process, and forgetting about the experience.
  1. Accessibility is awesome. Accessibility inspires innovation, and makes it possible to deliver similar experiences to all audiences. I mean, that’s pretty cool, right? 🙂

2015 Accomplishments

It feels like 2015 just started, and we were talking about how accurate the Back to the Future series was with present day. Alas, 2016 is here, and so begins another year!

To cap off 2015 I wanted to focus on some of my accomplishments. Originally I set a top three list, but three wasn’t nearly enough, so here’s my top 15 accomplishments from 2015. Enjoy!

  1. Re-upped my blog, and actually putting some posts out there. More importantly, willing to be vulnerable in the posts.
  1. Released a new version of interactive maps at work. From buy-in of stakeholders, which could be an accomplishment in itself, to adding in enhancements.
  1. Worked with, and watched a visually impaired person interact with an application I built. This experience was eye opening, and helped shape my application to be both accessible, and usable by all audiences.
  1. I failed. It was horrible, and then it was awesome. I learned so much about myself when I failed, and had an incredibly supportive group of family, friends, and colleagues that helped bring me up.
  1. Attended, and helped co-organize MaptimeMSP, and met so many amazing people along the way. This accomplishment could have an additional ten attached to it. ❤
  1. Toured the last frontier. Alaska is one of the most breathtaking places I’ve ever seen. I learned so much about myself, and my husband on our ten-day excursion. It’s a trip neither of us will forget.
  1. Learned Git. If anyone would have told me a year ago that I would be using GitHub on the command line, I’d think you were crazy. I understand structure, and processes so much more as a result.
  1. Completed a rollerblading half marathon in Saint Paul for the second straight year, and for the third time. For the third straight time participating I set a new personal best.
  1. Attended my first developer conference focused on JavaScript.
  1. Made my work web applications touch and click compatible across desktop and mobile devices.
  1. Created two interactive maps for my local GIS community’s annual conference.
  1. Met Jack Dangermond, and it was amazing.
  1. Attended my first NACIS conference, and meeting so many incredible people able to join us in Minneapolis. The NACIS community is one of the most supportive, and friendly communities.
  1. Went on an impromptu road trip with my husband. This one confused even our family, since we never do this. It was an amazing weekend, after an incredibly difficult work week for both of us.
  1. Wrote my first python script. By far the most powerful language I’ve played with yet.

Here’s to 2016, and what’s to come! 😉

Lessons Learned: #100Lessons

Last year I participated in the #100happydays challenge, and it changed my life. During the challenge, I was able to focus on moments, and as a result my happiness each day. It was incredibly rewarding, and changed my life for the better. If you’re curious, check out the feed!

Since the challenge concluded, I’ve contemplated another round. Ultimately, I kept saying, maybe tomorrow, and it never happened. Then a few weeks ago I thought, Wait, I should do my own challenge and focus instead on something I truly believe we should all do daily: learn something new!

So, over the next 100 days, I will tweet, at the very least, once a day something new I’ve learned that day and use #100Lessons with the day (e.g. #day1).

But why #100Lessons? Because, its my challenge! 😉 Also, because of my emergency management background I can’t get away from the term lessons learned.

Follow along, and feel free to join me on this journey!