Introducing EnviraCheck, an environmental monitor using images from Instagram. The site is mostly complete with only  a few last minute touches for search engine optimization and better navigation. The site catalogs and allows users to browse images that are environmentally significant. Users can (soon) view images by area or by tag. Future updates will allow users to see what the most common tags are and they can browse by those as well. 
On the back-end, as I find more interesting stories to tell from the data, those will be posted in the “Trends” section. I will continue to let the site run and gather more and more images. I’ve already gotten indexed by Google and am starting to organically pick up traffic. 

Introducing EnviraCheck, an environmental monitor using images from Instagram. The site is mostly complete with only  a few last minute touches for search engine optimization and better navigation. 

The site catalogs and allows users to browse images that are environmentally significant. Users can (soon) view images by area or by tag. Future updates will allow users to see what the most common tags are and they can browse by those as well. 

On the back-end, as I find more interesting stories to tell from the data, those will be posted in the “Trends” section. 

I will continue to let the site run and gather more and more images. I’ve already gotten indexed by Google and am starting to organically pick up traffic. 

Wow, so I made a lot of discoveries this week with ImageJ and ImagePlot. First off, ImageJ is the image analysis program that is the core of ImagePlot. ImagePlot allows one to take a set of images and data points and plot them out into one giant image. I have been trying to find interesting trends and stories to tell out of the data collected and I think I may have stumbled onto something. 
After some conversation with emda-randolph and erikpalmerphoto of SOU’s Emerging Media and Digital Arts program, I came away with a few new insights. I’ll get into that in a later post, but I also realized I could plot all the images based on their lat and lon and I would recreate the map of the world, but with Instagram images. The first hurdle was I needed to convert latitude and longitude into something that would work on a flat map. The formula I found that worked is:Latitude    = (Latitude * map_height) / 180 Longitude = (Longitude * map_width) / 360
Then I used my existing methods to download all the images into a folder and a new method I created this week that spits out a spreadsheet of filename, lat, and lon that I can feed into ImagePlot. The result is the above image of 5000 pseudo-random environmental images. I added a map of the world in the background, but even without it the continent shapes are distinct. 

Wow, so I made a lot of discoveries this week with ImageJ and ImagePlot. First off, ImageJ is the image analysis program that is the core of ImagePlot. ImagePlot allows one to take a set of images and data points and plot them out into one giant image. I have been trying to find interesting trends and stories to tell out of the data collected and I think I may have stumbled onto something. 


After some conversation with emda-randolph and erikpalmerphoto of SOU’s Emerging Media and Digital Arts program, I came away with a few new insights. I’ll get into that in a later post, but I also realized I could plot all the images based on their lat and lon and I would recreate the map of the world, but with Instagram images. 

The first hurdle was I needed to convert latitude and longitude into something that would work on a flat map. The formula I found that worked is:
Latitude    = (Latitude * map_height) / 180 
Longitude = (Longitude * map_width) / 360

Then I used my existing methods to download all the images into a folder and a new method I created this week that spits out a spreadsheet of filename, lat, and lon that I can feed into ImagePlot. 

The result is the above image of 5000 pseudo-random environmental images. I added a map of the world in the background, but even without it the continent shapes are distinct. 

A lot of work this week into making the website more functional. I now have Google geocode working to take lat / lon co-ordinates and turn them into human readable locations. The problem with this, is that Googles API limits the amount of requests I can make, so it will be some time before I can get this information back into all of the images I’ve collected so far. The image is my first attempt at making an image plot. It doesn’t show anything interesting as the x plane is the date the picture was taken and y is brightness, but 1000 images processed into one isn’t a bad first attempt.  
I think I will start making image plots by city and then post all of them on the site for people to compare. 

A lot of work this week into making the website more functional. I now have Google geocode working to take lat / lon co-ordinates and turn them into human readable locations. The problem with this, is that Googles API limits the amount of requests I can make, so it will be some time before I can get this information back into all of the images I’ve collected so far. 

The image is my first attempt at making an image plot. It doesn’t show anything interesting as the x plane is the date the picture was taken and y is brightness, but 1000 images processed into one isn’t a bad first attempt.  

I think I will start making image plots by city and then post all of them on the site for people to compare. 

A simple before and after pic of the EnviraCheck images to illustrate how simply removing images that have more than 10 tags can drastically improve the quality of nature related images being collected. This was a small change with dramatic results and I believe I can move on from finding ways to filter out unrelated images. 
Other work this week included figuring out a way to query the results that I have and download all the images. This is needed because I plan on creating image-plots out of the corresponding images.
My work this work has been in figuring out how to make that happen from the web interface.
My plan is to make a query via the webpage that will then execute a part of the script that will download all the selected images from Instagram. The collection of images will then be zipped up and available to download so that it can be used within ImagePlot.  

A simple before and after pic of the EnviraCheck images to illustrate how simply removing images that have more than 10 tags can drastically improve the quality of nature related images being collected. 

This was a small change with dramatic results and I believe I can move on from finding ways to filter out unrelated images. 

Other work this week included figuring out a way to query the results that I have and download all the images. This is needed because I plan on creating image-plots out of the corresponding images.

My work this work has been in figuring out how to make that happen from the web interface.

My plan is to make a query via the webpage that will then execute a part of the script that will download all the selected images from Instagram. The collection of images will then be zipped up and available to download so that it can be used within ImagePlot.  

Under the hood improvements.

This week I’ve been attempting to interface the front end website to the image manipulation library Image Plot. Aside from the difficulties of making an API interface for ImagePlot, one very large setback, the hardware requirements for running ImagePlot are outside of my web-hosting plan’s limits. I may still implement it as a proof of concept using my personal computer as the workhorse instead of my web-host. 

The filtering I added last week seems to be keeping the nonsense InstaGrams down to a minimum. I may still need to enable some kind of crowd-sourced verification of images, but I think this is good enough for now. 

I also made progress in adding the ability to filter images based on location. I still have a lot to do to make this easy to use on the website, but the mathematics involved is working.  

"Garbage in garbage out", or so the saying goes.

My app that monitors Instagram for environmentally relevant photos has logged quite a few images into it’s database. The only problem, many of these images are junk and tagged incorrectly. 

So my attention this week has been in figuring a way to limit the amount of garbage (not literally, mind you) images collected. My first discovery was that many of the junk Instagrams had tags in common. Tags like “followme”, “tagsforlikes”, “shoutout”, etc. 

I decided the best way to remove these and prevent them from being added in the future was to leverage the other database I’ve been gathering, the tag database. As I use Instagram’s api to collect images I also add each tag of every collected image to my database. The idea was that in the future I could make a tag cloud to show the most common used tags besides “tree” and “nature”. Now I simply mark tags I don’t like as “excluded” and when I add Instagrams, if they have an excluded tag, I skip over it. I can also filter my current collection for specific tags so I can remove all the bad ones. 

This certainly doesn’t remove all the erroneously tagged images, but it’s a good start to keeping the app on-track. In the meantime, I’ll keep thinking of other ways to filter the images I need. 

This week I improved my web application, enviracheck.joshkapple.com , to automatically collect Instagram images with environmentally relevant tags.
It works by continuously querying the Instagram api. It saves images that have a location and the relevant tags to my application’s database. I can then sort, re-arrange and order the collection in any way I see fit without needing Instagram’s API further. The homepage now displays every image I’ve collected in a giant imageplot. I will need to change this soon as I already have over 1500 images.My next steps will be in figuring out how I want to sort and order this images. My first thought is to distribute them across a map so that you can see where the images are being taken.  

This week I improved my web application, enviracheck.joshkapple.com , to automatically collect Instagram images with environmentally relevant tags.

It works by continuously querying the Instagram api. It saves images that have a location and the relevant tags to my application’s database. I can then sort, re-arrange and order the collection in any way I see fit without needing Instagram’s API further. The homepage now displays every image I’ve collected in a giant imageplot.

I will need to change this soon as I already have over 1500 images.

My next steps will be in figuring out how I want to sort and order this images. My first thought is to distribute them across a map so that you can see where the images are being taken.  

API Progress

This week I set out to understand Instagram’s api and how it will work within my application. 

I started working with the Instagram API Console. The console and documentation revealed that the API returns a JSON object that I could work with.

JSON is a way of transmitting information that can be interpreted by other programs. It’s similar to XML but has much fewer tags and white-spacing which makes it ideal for web applications.

I created a simple web-application to demonstrate the API. It works by making a request to the API, searching for the tag “Tree” and only displaying results that have a geographical location. 

EnviraCheck.JoshKapple.com

image

Instragram Data scraping for Environmental Demographics

image

What are the most photogenic locations in the United States? My next project intends to find out by scrapping Instagram for data. 

The first steps are to get familiar with Instagram’s api and Amazon’s mechanical turk to analyze as many Instagram photos with the hash tag #spring, as possible.

From there the data will be sorted into regions to determine what areas of the United States get the most photos of the environment.

Creating a usable app that works on multiple-platforms and can be easily modified is a bit of a challenge. While not a “native” app, this web-based site uses the responsive design of jquery mobile and the limitless adaptability of django, allowing it to basically work on any device with a browser. It includes the ability to add homes to a route list, which can then be calculated for the best path to visit each location via google maps api.
All in all, not a bad side-project.
http://web.krcrtv.com/7nights

Creating a usable app that works on multiple-platforms and can be easily modified is a bit of a challenge. While not a “native” app, this web-based site uses the responsive design of jquery mobile and the limitless adaptability of django, allowing it to basically work on any device with a browser. 

It includes the ability to add homes to a route list, which can then be calculated for the best path to visit each location via google maps api.

All in all, not a bad side-project.

http://web.krcrtv.com/7nights