Tragedies of Forced Migration on Mediterranean Routes

I must preface this project by saying that there exists an irony in its creation and exposition. I have spent many hours in front of my computer, in ornate buildings housed within an expensive institution, while creating this visualization. I believe this can be compared to what Anooradha Iyer Siddiqi calls an “unsettling juxtaposition of the perils of forced migration” via the contrasting privilege and comfort of the project’s creation. I feel my project also supports her idea of the “inappropriate repurposing of the lived experience of the ‘unbelonging’.” The impetus of my project is based on learning a software for a grade. There is no textual narrative in my project. The context is broad and does not include personal accounts that are necessary in the comprehension of such ubiquitous and tragic reality. It does not suggest any real intervention that is needed for this challenge. It has been created by an American whose craven governmental administration devotedly abandons support for these people. Its creation is paradoxical. It is also important to note that Josh Begley’s visualization of migrant deaths was an inspiration for this project and successfully accomplished the visualization of the violence and tragedy in these forced migrations.

What I have hoped to accomplish in my project is a visualization that underscores the perils of forced migration. The satellite images are intended to produce a harmless setting; the textual information creates the horrific context. John Berger states, “When we see a landscape, we situate ourselves in it.” In an effort to create a sobering contrast between photos of a lush Mediterranean sea with the data of migrant deaths, I tried to obtain landscape photos of the lat/long locations. My coding limitations constrained that idea.

I obtained the data form the Humanitarian Data Exchange, where they have tracked plentiful information related to forced migration. I used William’s script to import Google satellite images, Violet’s script to use them as a continuous background, and Zachary’s help to incorporate the textual data on the image.


#Obtaining the Sat Images
import csv
import urllib
import locationscsv
# Store all the CSV rows in the "locations" array.
locations = []
reader = csv.reader(
is_first_row = True
for row in reader:
# Skip the first row.
if is_first_row:
is_first_row = False
lat, lon = float(row[0]), float(row[1])
location = (lat, lon)
# Put your Google Street View API key here.
api_key = "AIzaSyAdcV7aasEXS6y-9vEpYCfywy7y73N9xns"
api_url = "{0},{1}&zoom=9&size=1000x1000&maptype=satellite&key={3}"
row = 2
headings = [0]
# Loop over every location, and for each location, loop over all the possible headings.
for location in locations:
for direction in headings:
# Create the URL for the request to Google.
lat, lon = location
url = api_url.format(lat, lon, direction, api_key)
# Create the filename we want to save as, e.g. location-2-90.jpg.
filename = "location-{0}-{1}.jpg".format(row, direction)
# Use the 'curl' command to actually make the request and save the file to disk.
urllib.urlretrieve(url, filename)
print "Got %s" % (filename,)
# Increment the row to correlate with the Excel file.
row += 1

print "Done"
#Displaying the Sat Images and Data
def setup():
global img

#Satellite Images
global satImages
satImages = []

global layer
layer = createGraphics(width, height)

imgFileName = "location"
imgEndName = ".jpg"

i = 1
while i < 182:
i += 1

satImageName = imgFileName + '-' + str(i) + '-' + '0' + imgEndName
# print streetImageName

global imageNumber
imageNumber = 0
global backgroundImage
backgroundImage = loadImage(satImages[imageNumber])

with open("mid-project.csv") as f:
reader = csv.reader(f)

global causes
causes = []
global nationalitys
nationalitys = []

global deaths
deaths = []

global dates
dates = []

for row in reader:
cause = row[1]
nationality = row[3]
death = int(row[12])
date = str(row[7])

import csv
def draw():
global imageNumber
image(backgroundImage , 0, 0)

text(causes[imageNumber], 30, 30)
text(nationalitys[imageNumber], 30, 70)
text(deaths[imageNumber], 30, 50)
text(dates[imageNumber], 30, 90)
def keyPressed():
global imageNumber
imageNumber += 1
if imageNumber == len(satImages):
imageNumber = 0

global backgroundImage
backgroundImage = loadImage(satImages[imageNumber])
Like what you read? Give sean nelsen a round of applause.

From a quick cheer to a standing ovation, clap to show how much you enjoyed this story.