Το έργο παρουσιάστηκε στο συνέδριο Νεα Μέσα στη Τέχνη 1 τον Ιούλιου του 2013 στη Σύρο. H δημοσίευση υπάρχει εδώ.

Η αρχική ιδέα δημιουργήθηκε βλέποντας την οπτικοποίηση του Χριστόφορου 2 στο flickr. Η μεθοδολογία βέβαια που ακολούθησα είναι εντελώς διαφορετική. Αρχικά έγινε έρευνα για βάση δεδομένων. Στη περιήγηση βρήκα την βάση MaxMind World Cities with Population 3 και διατίθεται με άδεια ανοιχτών δεδομένων 4.

Μέ το Emacs έκανα επιλογή των ελληνικών χωριών και τα ανέβασα στο google documents 5.

Έπειτα, το επόμενο βήμα ήταν η οπτικοποίηση των παραπάνω δεδομένων. Για το σκοπό αυτό και για το σχεδιασμό του πρωτότυπου χρησιμοποιήθηκε το περιβάλλον προγραμματισμού Processing. Καταπληκτική δουλειά στην οπτικοποίηση δεδομένων κάνει ο Jer Thorp 6 και μοιράζεται κώδικα για να αντλείς δεδομένα απο τα spreadsheet documents του google. Το πρώτο βήμα ήταν η προσαρμογή του γεωγραφικού μήκους και πλάτους στια διαστάσεις της οθόνης:

float lonToX ( float lon ) {
  return map( lon, 17, 31, 0, width );
}// convert a longitude value to screen space
float latToY ( float lat ){
  return map( lat, 33, 43, 0, height );
}// convert a latitude value to screen space
@]
Στη συνέχεια δημιουργήθηκαν τα διανύσματα:
[@
float[] xPos = new float[23263];
float[] yPos = new float[23263];
String[] xoria = new String[23263];

χρησιμοποιόντας την βιβλιοθήκη XlsReader του Florian Jenett 7 και τον παρακάτω κώδικα:

reader = new XlsReader( this, "ellinikaXoria3colones.xls" );
reader.firstRow();
reader.nextRow(); // legend
while ( reader.hasMoreRows() )    // loop thru rows
{
  reader.nextRow();
  xoria[count] = reader.getString();    // city name
  reader.nextCell();    // lon
  xPos[count] = lonToX( reader.getFloat() );
  reader.nextCell();    // lat
  yPos[count] = height - latToY( reader.getFloat() );
  count++;
}

Η συνέχεια είναι ένα προγραμματιστικό παιχνίδι προσπάθειας να λύσεις γρίφους που μόνος σου δημιουργείς. Παράδειγμα αποτελεί η διάδραση με το ''κλίκ'' του ποντικιού. Μπορώ να κλικάρω σε ένα σημείο και να μου εμφανίζει τα χωριό; Φυσικά, γιατί με τον προγραμματισμό όλα γίνονται.

void mouseInteraction()  {
  fill(0,32);
  rect(-50, -50, width+100, height+100);
  fill(255);
  noFill();
  for (int i = 0; i < 23262; i++) {
    if(abs(xPos[i]-mouseX) < 2 && abs(yPos[i]-mouseY) < 2)  {
      if  (yPosRand > height-13)  yPosRand = 13;
      stroke(int(random(255)),int(random(255)),int(random(255)), 125);
      curve(0,height, xPos[i], yPos[i], width - 250, yPosRand,  width - 250, yPosRand);
      text(xoria[i], width - 250, yPosRand);
      yPosRand = yPosRand + 13;
    }
    viewMouseInteraction = false;
  }
}
void mousePressed()  {
    viewMouseInteraction = !viewMouseInteraction;
}

Η εφαρμογή διατίθεται με GNU licence 8 είναι δωρεάν, και o κώδικάς της ανοιχτός.

Aris Bezas Mon, 04 October 2010, 02:57PM

See also:

Links