Παίζοντας με το GeoDjango

Υπάρχει ένα branch του Django που λέγεται GeoDjango, και ειδικεύεται σε GIS. Εδώ και καιρό, απο τότε που έμαθα την ύπαρξή του,  είχα ενθουσιαστεί με την ιδέα και ήθελά να ‘παίξω’ μαζί του. Επιτρέπει την ανάπτυξη web εφαρμογών με γεωγραφικό περιεχόμενο πολύ εύκολα (τουλάχιστον σε σχέση με άλλους τρόπους).

Ουσιαστικά πρόκειται για ένα νέο contrib που περιέχει νέα model fields, ένα νέο model Manager (GeoManager) και ένα πλήθος βοηθητικών εργαλείων. Τα νέα Fields ξέρουν πώς να χειρίζονται γεωγραφικά δεδομένα (points, polygonts κλπ) και ο GeoManager επεκτείνει το Django ORM (το Database api) με  δυνατότητες σχετικές με τα νέα fields.

Για παράδειγμα μπορείς ζητήσεις τα αντικείμενα που έχουν ένα συγκεκριμένο Point (απο το model A) μέσα στην επιφάνεια που ορίζεται απο ένα σύνολο σημείων (απο το model B).

Μπορείς επίσεις να ζητήσεις τα αντικείμενα που έχουν μια συγκεκριμένη σχέση απόστασης απο ένα σημείο (πχ ποιά Βενζινάδικα είναι κάτω απο 5 χιλιόμετρα απο το σημείο που έχω επιλέξει στον χάρτη.)  Και πολλά άλλα queries γεωγραφικού (και συνεπώς γεωμετρικού) περιεχομένου.

Μέχρι στιγμής δεν έχω προσέξει κάποια σοβαρή ασύμβατη απόκλιση απο το trunk και έχω την απορία αν είναι εφικτό (και θεμιτό) στο μέλλον να γίνει merge αυτό το branch με το trunk και απλά να υπάρχει σαν contrib. Θα ήταν καλή ιδέα γιατι χρειάζεται hackery για να τρέχεις και τα 2 ταυτόχρονα (μιας και παίρνουν το ίδιο όνομα στο site-packages).

Ακόμα δεν είναι πλήρες το branch, για παράδειγμα δεν έχουν newforms support κλπ. Επίσης σχεδιάζουν integration με google maps (και άλλα mapping services) ώστε το framework να κάνει generate το σωστό XHTML/javscript για το google maps. Πολύ ενδιαφέρον. (αν και σε non-trivial site η ποσότητα javascript είναι τέτοια που δεν βλέπω πόσο χρήσιμο μπορεί να είναι στην πράξη, αλλα αφού δεν έχω δεί τι πραγματικά σχεδιάζουν περιμένω να δώ για να έχω γνώμη.

Στα αρνητικά είναι οτι απαιτεί κάποια πακέτα (όπως το postgis αν χρησιμοποιείς postgresql) που δεν μπορείς να τα βάλεις έυκολα σε shared hosting  (στο webfaction όμως , απο το οποίο μέχρι στιγμής είμαι αρκετά ευχαριστημένος, στο βάζουν αν το ζητήσεις!)

Έχω φτιάξει μια  δοκιμαστική εφαρμογή και έχω διάφορες καλές ιδέες για νέα site. Ξεκινώ full ολοταχώς :p