Το έργο παρουσιάστηκε στο συνέδριο Νεα Μέσα στη Τέχνη 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:
- http://c-art-o-graphy.net/force2d/?p=117 how popular is each greek village, town, and city on the web? by Christophoros Vradis
- Οπτικοποίηση χωριών της Ελλάδας by http://geodata.gov.gr http://geodata.gov.gr/geodata/index.php?option=com_content&view=article&id=21:2010-10-15-07-01-45&catid=1:2010-06-11-13-02-56&Itemid=15
Links