New book chapter: “Open Source Approach to Contemporary Research: The Case of Geo-Information Technology”


Here is the link for my new book chapter which talks about open source technologies. The chapter “Open Source Approach to Contemporary Research: The Case of Geo-Information Technology” talks about the influence of open source paradigm in modern economic arena. It focus on scientific research and elaborates on examples from the geo-information world such as OpenStreetMap. It is a description of open scientific research and explains the links with open source software movement.
In case you read it, I am open to comments and critique. We live in an open world after-all.

R library for spatial microsimulation

Spatial microsimulation is a method where we construct small area population data from the combination of various data sources. In order to perform this combination of census and survey data, we need an R library to standardize the procedure.

I’ve recently developed “sms” R library which combines census and survey data by using Simulated Annealing or Hill Climbing algorithms. Here are the links of the library:

Simple distribution plot in R

plot distribution of a sample

Plot the distribution of a sample as bars and add a histogram line for visualizing the sample characteristics.

  1. ##' Plot distribution of a sample with bars, lines and rug.
  2. ##' @title
  3. ##' @param x
  4. ##' @return
  5. ##' @author Dimtiris Kavroudakis, dimitris123@gmail.com, www.dimitrisk.gr
  6. plotDistribution = function (x) {
  7. N = length(x)
  8. hist( x,col = "light blue",
  9. probability = TRUE)
  10. lines(density(x), col = "red", lwd = 3)
  11. rug(x)
  12. }
  13.  
  14. x = c(3,4,4,4,7,5,5,5,6,8,4,2)
  15. plotDistribution(x)

Εγκατάσταση πακέτων της R και πρόβλημα με το proj_api.h

Κατά την προσπάθεια εγκατάστασης κάποιων χωρικών πακέτων της R, όπως η rgdal και το sqlitemap, μπορεί αυτή να αποτύχει διότι δεν μπορεί να βρεθεί το proj_api.h.

Το proj_api.h όπως φαίνεται δεν έρχεται μαζί με τα αρχεία του r-base ή κάποιου άλλου πακέτου και ανήκει στην κατηγορία των  header files. Η λύση όμως είναι πάρα πολύ εύκολη. Για να μπορέσουν να εγκατασταθούν αυτά τα πακέτα δεν χρειάζονται μόνο τα  αρχεία του proj-bin πακέτου (τα οποία χρησιμοποιούνται για να λειτουργεί κάποιο λογισμικό με γεωχωρικές δυνατότητες) αλλά είναι απαραίτητα και τα αρχεία ανάπτυξης (-dev) του “proj”, οπότε απλά εγκαθιστάμε το libproj-dev πακέτο από το αποθετήριο και τέλος!

Annotation αρχείων .pdf σε Linux

Deutsch: Logo des Adobe Portable Document Format

Image via Wikipedia

Αυτό το ζήτημα είναι πραγματικά ζωτικής σημασίας  για όσους εργάζονται σ’ ένα γραφείο και ιδιαίτερα όλους εμάς στον ακαδημαϊκό χώρο, οι οποίοι χρειάζεται να διατρέχουμε σε πάρα πολλά αρχεία .pdf καθημερινά, και τα οποία σημειώνουμε και μοιραζόμαστε. Όταν όμως συνδυάσουμε την επιθυμία να χρησιμοποιήσουμε το αγαπημένο μας λειτουργικό σύστημα Linux με την ανάγκη μας για βασικές διαδικασίες επεξεργασίας των αρχείων .pdf, συναντάμε πολλούς μικρούς τοίχους, όσον αφορά τις δυνατότητες επεξεργασίας αυτών των αρχείων από τα διάφορα, διαθέσιμα, ανοιχτού κώδικα λογισμικά. Κάθε λογισμικό μπορεί να κάνει κάποια διαδικασία αλλά στερείται κάποιας άλλης, ενώ πολλές φορές είναι αρκετά επίπονη η διαδικασία επεξεργασίας ενός τέτοιου αρχείου. Δε θα μιλήσω για πολλά λογισμικά, παρά μόνο για τρία: Okular, Xournal και JPDF Bookmarks.

Ο στόχος ήταν να μπορώ να επισημαίνω (annotate) κάποιο κείμενο σε αρχεία .pdf και παράλληλα να μπορώ να δημιουργώ εύκολα

penguin Tux, the Linux Mascot

Image via Wikipedia

σελιδοδείκτες μέσα σ’ αυτά. Το Okular είναι πραγματικά ένα καταπληκτικό πρόγραμμα (για μένα, τουλάχιστον…), το οποίο είναι γρήγορο, απλό, έξυπνο,  με αυτόματες διαδικασίες στο παρασκήνιο, αποτελεσματικά εργαλεία εξαγωγής κειμένου και εικόνας, αρκετά και χρήσιμα εργαλεία επισήμανσης κειμένου! Αλλά! Οι επισημάνσεις δεν γράφονται πάνω στο αρχικό αρχείο, αλλά αποθηκεύονται σε ένα φάκελο ρυθμίσεων του προγράμματος, οπότε αν θα ήθελε κάποιος να μετακινήσει τα αρχεία του ή να τα μοιραστεί, θα έπρεπε να τα συνοδεύει και από τον φάκελο των ρυθμίσεων καθώς και από το Okular. Κι όμως δεν με ενοχλεί αυτό. Οπότε προχωράω παρακάτω και έρχομαι στο  JPDF Bookmarks, το οποίο μπορεί να δημιουργήσει σελιδοδείκτες και μάλιστα με τη δυνατότητα επιλογής κειμένου από το αρχείο. Διαθέτει, δηλαδή, ένα εργαλείο επιλογής κειμένου και χρησιμοποιεί το επιλεγμένο κείμενο ως όνομα του σελιδοδείκτη. Καταπληκτικό! Διότι έτσι μπορώ να χρησιμοποιήσω το αρχείο .pdf στα mindmaps που κατασκευάζω (χρησιμοποιώ το Sciplore) και οι σελιδοδείκτες-κείμενο να αποτελούν τα “κλαδιά” του χάρτη μου.

Το πρόβλημα. Όταν κάποιο άλλο πρόγραμμα γράψει ένα .pdf αρχείο, ακόμα και με το ίδιο όνομα, στον ίδιο φάκελο,  το Okular θεωρεί ότι είναι ένα εντελώς καινούργιο αρχείο, γράφει ένα νέο αρχείο ρυθμίσεων και επισημάνσεων για το .pdf κι έτσι χάνονται οι επισημάνσεις που είχαν γίνει μέχρι τότε! Αυτό περιπλέκει κατά πολύ τα πράγματα. Κι εδώ μπαίνει το Xournal. Τις δυνατότητές του, οφείλω να πω, ότι μου τις υπέδειξε ο Σταύρος  Δαλιακόπουλος, κατά την τελευταία συνάντηση χρηστών Linux στη Μυτιλήνη.

Το Xournal είναι ένα πρόγραμμα για σημειώσεις και σχεδίαση με πένα, πρωτίστως, αλλά δευτερευόντως διαθέτει τη δυνατότητα επισήμανσης αρχείων .pdf. Διαθέτει μολύβι για ελεύθερο σχέδιο, εργαλείο επισήμανσης σε διάφορα χρώματα με διαφάνεια, δυνατότητα εύκολης προσθήκης κειμένου καθώς και εικόνας, οπουδήποτε στο αρχείο ή σαν παρασκήνιο. Δεν είναι τόσο εύκολη η επισήμανση όσο με το Okular αλλά το συγκεκριμένο πρόγραμμα έχει τη δυνατότητα να εξάγει σε αρχείο .pdf με όλες τις προσθήκες του χρήστη ενσωματωμένες. Αν, παρόλα αυτά, δε θέλω να αλλοιώσω αρχικό αρχείο ή δε θέλω να δημιουργήσω ένα νέο, μπορώ να αποθηκεύσω όλες τις προσθήκες μου στην εγγενή μορφή αρχείο .xoj, το οποίο μπορώ να επεξεργαστώ ξανά και το εξάγω σε μορφή αρχείου .pdf σε κάποια άλλη μελλοντική στιγμή.  Το σημαντικό όμως είναι ότι μπορώ να αποθηκεύσω τις προσθήκες μου στο αρχικό αρχείο και παράλληλα ν’ αποθηκεύσω τους σελιδοδείκτες από το JPDF Bookmarks και όλα να είναι εκεί, όπως τα θέλω.

Όποιος και αν είναι ο σκοπός του χρήστη, το Xournal θεωρώ ότι είναι ο πιο εύκολος και φιλικός τρόπος επισήμανσης αρχείων .pdf σε περιβάλλον Linux. Για όσους αποφασίσουν να του δώσουν μια ευκαιρία, παραθέτω κάποιες αλλαγές που μπορεί κάποιος να κάνει μία φορά στο αρχείο ρυθμίσεων του προγράμματος για την διευκόλυνσή του κάθε φορά που έχει να επισημάνει ένα κείμενο. Το αρχείο ρυθμίσεων βρίσκεται στο  /home/.xournal/config. Αν δεν υπάρχει, θα πρέπει να επιλέξετε από “Options > Save Preferences” ώστε να δημιουργηθεί.

Ο χάρακας θα πρέπει να είναι ενεργοποιημένος ώστε το εργαλείο επισήμανσης να δημιουργεί ίσιες γραμμές.

startup_ruler=true

Για να ξεκινά το εργαλείο επισήμανσης από προεπιλογή.

startup_tool=highlighter

Για να ξεκινά το πρόγραμμα μεγιστοποιημένο με ζουμ 150%.

window_maximize=true
initial_zoom=150

Οι επόμενες ρυθμίσεις αφορούν το εργαλείο επισήμανσης. Ρυθμίζονται οι προεπιλογές για το πάχος της γραμμής επισήμανσης, το ίδιο το πάχος, το χρώμα και η διαφάνεια, αντίστοιχα.

highlighter_thicknesses=2.83;8.50;19.84
highlighter_thickness=2
highlighter_color=yellow
highlighter_opacity=0.40

Οι ρυθμίσεις προέρχονται από εδώ

Οδηγίες σύνδεσης VPN Πανεπιστημίου Αιγαίου σε Linux (Ubuntu)

Μερικές φορές (…) οι χρήστες Linux βρισκόμαστε στη δυσάρεστη θέση να συνειδητοποιούμε ότι κάποιοι μας ξέχασαν. Μια τέτοια περίπτωση ήταν  όταν προσπάθησα για πρώτη φορά να συνδεθώ με το Ιδιωτικό Εικονικό Δίκτυο (VPN) του πανεπιστημίου μου και διαπίστωσα με έκπληξη ότι, ενώ υπήρχαν οδηγίες βήμα-βήμα για την ρύθμιση του VPN για Windows, όταν προσπάθησα να δω τις αντίστοιχες για Linux ο σύνδεσμος με παρέπεμπε σε μια αγγλική σελίδα γεμάτη τεχνικότητες.

Βήμα 1: Άνοιγμα “Συνδέσεις Δικτύου” από τις ρυθμίσεις.

Βήμα 2: Μετάβαση στη καρτέλα “VPN” και “Προσθήκη” νέας σύνδεσης VPN.

Στο παράθυρο που εμφανίζεται επιλέγεται το πρωτόκολλο PPTP επειδή είναι συμβατό με τον server του Πανεπιστημίου Αιγαίου. Επιλέγεται η “Δημιουργία”.

 

Βήμα 3: Ρύθμιση της σύνδεσης

Αφού συμπληρωθούν τα πεδία:

  • Όνομα σύνδεσης
  • Gateway
  • Username (με ή χωρίς το “aegean/” μπροστά από το username σας αναλόγως ιδιότητας)
  • Συνθηματικό,

επιλέγετε το κουμπί “Advanced”

 

Βήμα 4: Ρύθμιση των μεθόδων πιστοποίησης στο παράθυρο “PPTP Advanced Options”

Απενεργοποιούμε “EAP” και  “PAP”.

Μετά την επιλογή του “Εντάξει” και του “Αποθήκευση” στο προηγούμενο παράθυρο, η σύνδεση θα πρέπει να λειτουργεί.

 

Αυτές οι ρυθμίσεις ανταποκρίνονται στην διαδικασία πιστοποίησης για το Πανεπιστήμιο Αιγαίου, αλλά μπορείτε να το δοκιμάσετε  και για άλλα ιδιωτικά δίκτυα. Αν δεν λειτουργεί, τότε θα πρέπει να αλλάξετε αυτές τις τελευταίες ρυθμίσεις πιστοποίησης για τον οργανισμό/εταιρεία σας.

Aναπτυξιακή προοπτική των τουριστικών υπηρεσιών

tourismImage
Η τουριστική οικονομική δραστηριότητα χαρακτηρίζεται ως προσφορά υπηρεσιών οι οποίες έχουν συμπληρωματικό χαρακτήρα. Η παροχή ενός τουριστικού προϊόντος προϋποθέτει και την παροχή κάποιου αλλού. Έτσι λοιπόν για να ενοικιαστεί ένα δωμάτιο σε μια περιοχή του νησιού μας, προϋποτίθεται η ύπαρξη μεταφορών (δρόμων και μέσων), ενός τουριστικού αξιοθέατου (παραλία, αρχαιολογικός χώρος) αλλά και σε κάποιες περιπτώσεις η παρουσία ενός σημείου διασκέδασης (εστιατόριο, ταβέρνα, καφέ). Αυτός ο συμπληρωματικός χαρακτήρας, κάνει το τουριστικό προϊόν πιο ευάλωτο σε προβλήματα καθώς ακόμα και ένας κρίκος της αλυσίδας να είναι προβληματικός, τότε επηρεάζεται συνολικά η αξιοπιστία όλης της αλυσίδας.

Είναι λοιπόν κατανοητό πως για να διασφαλιστεί η άνοδος της τουριστικής δραστηριότητας σε ενα νησί, προϋποτίθεται η σωστή επίβλεψη και διαχείριση αυτής της ιδιότυπης αλυσίδας τουριστικών υπηρεσιών έτσι ώστε να υπάρχει “ομαλή ροή” υπηρεσιών χωρίς απρόοπτα σε κανένα επιμέρους στάδιο και να διασφαλίζεται η σύμπραξη και συνέργεια των τουριστικών ενεργειών.

Η σύμπραξη είναι όταν δυο ή περισσότερες επιχειρήσεις δουλεύουν μαζί, συγχρόνως, για την παραγωγή ενός προϊόντος. Η διατήρηση της σύμπραξης από τοπικές επιχειρήσεις μπορεί να αποβεί εξαιρετικά κερδοφόρα για την τοπική οικονομία. Δηλαδή, αν οι τουριστικές επιχειρήσεις, συστηματικά επιλέγουν να συμπράττουν με άλλες τοπικές επιχειρήσεις και όχι με επιχειρήσεις εκτός νησιού, τότε η τοπική οικονομία ενεργοποιείται και ενδυναμώνετε.

Η έννοια της συνέργειας, αναφέρεται στην συνδυασμένη δράση προς την υλοποίηση ενός σκοπού. Στην τουριστική δραστηριότητα αυτό μεταφράζεται ως την συνδυασμένη επιχειρηματική δράση τοπικών επιχειρήσεων ώστε να παρέχουν ολοκληρωμένο τουριστικό προϊόν. Παράδειγμα αποτελεί μια πιθανή συνεργασία ακτοπλοϊκών γραμμών με την διοργάνωση ενός υποτιθέμενου ποδηλατικού αγώνα και την σύμπραξη μιας ομάδας ξενοδοχείων και εστιατορίων. Αυτό το μπουκέτο υπηρεσιών, προσφέρει συμπληρωματικές υπηρεσίες καθώς εκεί που τελειώνουν οι υπηρεσίες του ενός φορέα, ξεκινάν αυτές του επόμενου. Η συνέργεια λοιπόν τοπικών επιχειρήσεων είναι κάτι που θα ενεργοποιήσει τη τουριστική δραστηριότητα και επιπροσθέτως θα διασφαλίσει οικονομικά οφέλη σε τοπικό επίπεδο.

Ο σχεδιασμός και η εφαρμογή αυτών των δράσεων, εγείρει θέματα ποιότητας και ποικιλίας τοπικών προϊόντων καθώς και ερωτήματα για την ετοιμότητα και επιθυμία τοπικών επιχειρήσεων να συμπράξουν και να συνεργαστούν.

EuroGeo

logo
The Annual meeting, of Eurogeo (2-5 June 2011, Athens, Greece) finished. I presented at Friday 3 of June. The presentation was good. This was an oportunity to meet with european geographers and listen to some intresting presentations on various GIS, geography topics.

Programming task list

todo image

In a daily programming routine, when switching from project to project and from library to library, it is very common to need some extra time to re-adjust yourself to the state of the project you left it last month. This situation is very common when you develop various software or you contribute to a development process where you are not the only developer. This switch-on / switch-off is difficult. This is why a to-do list is needed. A task queue is very useful:

  • to have a hierarchy in the tasks (what is more important than other)
  • to remember where you left it
  • to remember what need to be done

This process is very essential for the development of average and large projects. Nobody ever developed a software all-in-once. The programming process is a repetitive (every week, every day) one, and needs a “glue” for the linkage between the events. A clean and robust hierarchy of tasks and problems is a good tool to help you re-adjust your mind and boost your productivity.

.odt Statistics (nautilus script)

screenshot

Just created a nautilus script to get text statistics from an ODT file (OpenOffice Writer). Creates a context menu (right click) and then a Tk windows appears with the statistics. Simple and effective.
Download here
Installation: Execute “install.sh”
Licence: GPL-3

ODF extension – MSOffice

Open Document Format (ODF) is an open standard file format OpenOffice.org and others use. File extensions include .odt (text), .ods (spreadsheet), and .odp (presentation). It is a well recognised global file extension. You can also unzip the file and see its contents. By default, Microsoft Office does not open these file formats. In order to help the market penetration of Open Office documents you can use an MSOffice plugin which enables you to open ODF. Of course the best solution is to use OpenOffice.org which can be easily installed in both Windows and Linux systems.
Office 2003
Download and install the Sun ODF Plugin should just work. You can download the Sun ODF Plugin from here.
Office 2007

  1. First you need to Install Service Pack 1 for Office 2007
  2. Install Sun ODF Plugin for Microsoft Office
  3. Open ODT document via File – Open
  • If you don’t have administrator privileges to install software, you can try an online converter such as Zamzar or Media Convert. You can also upload ODT documents to Google Docs or Zoho Writer.
  • If you want to open ODT documents locally but want to stay away from MS Office, try the lightweight, cross-platform Abiword or the full-blown suite of OpenOffice.org.

Συνάντηση φίλων ελ/λακ-Linux στη Μυτιλήνη

Συνάντηση φίλων ελεύθερου λογισμικού – Linux στη Μυτιλήνη σήμερα Σάββατο 13 Νοεμβρίου 14:00
καφέ “Πανελλήνιον”.
Θα υπάρχει και ελεύθερο Wifi.

Mitilini Linux User Group

PyTextStat – πρόγραμμα για στατιστικά ενος κειμένου

Μόλις ανέβασα ένα software που έχω φτιάξει το οποίο μου δίνει στατιστικά για τα έγγραφα μου. Δέχεται είτε .txt είτε .odt
Θα το βρείτε στο launchpad μου https://launchpad.net/~dimitrisk/+archive/ppa Για να εγκαταστήσετε απλά δώστε στο τερματικό σας:
sudo add-apt-repository ppa:dimitrisk/ppa
sudo apt-get install pytextstat

screenshot

python: integer to roman

This function converts an integer to a roman numeral.

  1. def intToRoman(num):
  2. n = int(num)
  3. rv = ""
  4. for dec, rom in ((1000, 'M'), (900, 'CM', ),(500, 'D'), (400, 'CD'), (100, 'C'),(90, 'XC'),(50, 'L'), (40, 'XL'),(10, 'X'), (9, 'IX'), (5, 'V'),(4, 'IV'), (1, 'I') ):
  5. while (n >= dec):
  6. n -= dec;
  7. rv += rom;
  8. return rv
from GNU Enterprise

python: distance of points in .kmz

This code calculates distance in kilometers from points saved in .kmz file. Such files can be created by Google Earth.

  1. #!/usr/bin/env python
  2. # -*- coding: utf8 -*-
  3.  
  4. __version__ = '$Id: kmz2dist.py 609 2009-06-01 05:04:52Z mn $'
  5. # author: Michal Niklas
  6.  
  7. """
  8. Calculates distance in kilometers from points saved in .kmz file.
  9. Such files can be created by Google Earth
  10. look at:
  11. http://code.google.com/intl/pl-PL/apis/kml/documentation/kmlreference.html"""
  12.  
  13. import sys
  14. import zipfile
  15. import glob
  16. from xml.dom import minidom
  17. import distance
  18.  
  19. def get_distance(coordinates_str):
  20. """gets distance of one path from coordinates string in form of:
  21. 14.81363432237944,53.57016581501523,0 14.81411766813742,53.56923005549378,0 14.81880340335202,53.56879451890311 ...
  22. look at:
  23.  
  24. http://code.google.com/intl/pl-PL/apis/kml/documentation/kmlreference.html#coordinates
  25.  
  26. """
  27. sum_distance = 0.0
  28. arr = []
  29. coordinates = []
  30. if ' ' in coordinates_str:
  31. arr = coordinates_str.split(' ')
  32. if len(arr) > 1:
  33. for s in arr:
  34. if ',' in s:
  35. pt = s.split(',')
  36. pos_latt = (float(pt[0].strip()), 0, 0)
  37. pos_long = (float(pt[1].strip()), 0, 0)
  38. position = (pos_latt, pos_long)
  39. coordinates.append(position)
  40. if coordinates:
  41. for i in range(len(coordinates) - 1):
  42. start = coordinates[i]
  43. stop = coordinates[i + 1]
  44. sum_distance += distance.points2distance(start, stop)
  45. return sum_distance
  46.  
  47. def show_distance(fname):
  48. """calculates distance from points saved in doc.kml which is part of .kmz
  49. zip archive file"""
  50. path_cnt = 0
  51. zf = zipfile.ZipFile(fname, 'r')
  52. for fn in zf.namelist():
  53. if fn.endswith('.kml'):
  54. content = zf.read(fn)
  55. xmldoc = minidom.parseString(content)
  56. placemarks = xmldoc.getElementsByTagName('Placemark')
  57. for placemark in placemarks:
  58. name = placemark.getElementsByTagName('name')
  59. if name:
  60. name = name[0].firstChild.data.strip()
  61. coordinates = placemark.getElementsByTagName('coordinates')
  62. if coordinates:
  63. coordinates = coordinates[0].firstChild.data.strip()
  64. if coordinates:
  65. distance_km = get_distance(coordinates)
  66. if distance_km > 0.0:
  67. if path_cnt == 0:
  68. print 'n%s:' % (fname)
  69. path_cnt += 1
  70. print('t%st%5.2f' % (name, distance_km))
  71. return path_cnt
  72.  
  73. def main():
  74. """show .kmz file name and distance in kilometers"""
  75. fnames = glob.glob('*.kmz')
  76. if not fnames:
  77. print('No *.kmz files found')
  78. else:
  79. for fname in fnames:
  80. show_distance(fname)
  81.  
  82. if __name__ == '__main__':
  83. if '--version' in sys.argv:
  84. print(__version__)
  85. else:
  86. main()

by Michal Niklas on Thu, 28 May 2009 (MIT)