Το έργο παρουσιάστηκε στο συνέδριο Νεα Μέσα στη Τέχνη 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