Aller au contenu

GeoScript#

📆 Date de publication initiale : 23 avril 2010

icône globe

GeoScript a pour objectif de faciliter les manipulations géographiques dans des environnements de script. L'objectif est le support de 4 langages : Javascript, Python, Scala et Groovy. Cette bibliothèque permet de manipuler facilement des objets géométriques - création et manipulation d'objets ainsi que la création et manipulation de projections.
GeoScript est fondé sur la librairie Java GeoTools.

Pour le moment, seules les versions Javascript et Groovy sont disponibles :

Scala et Groovy - et non, ce n'est pas le nom d'un groupe de punk#

Vous connaissez tous Javascript et Python, mais Scala et Groovy, qu'est-ce que c'est encore que ces nouveaux trucs ?
Et bien c'est pas si nouveau que ça : 2003 pour Scala et 2007 pour Groovy.
Scala et Groovy sont deux langages pour la JVM, prévu pour être compilés en bytecode Java et exécutés sur la JVM.

Scala#

Quelques liens :

Groovy#

Quelques liens :

Travaillons avec Javascript, c'est plus prudent :)#

Pour la suite de ce billet, nous utiliserons donc la version Javascript de GeoScript.
Bon, c'est du Javascript côté serveur et non côté navigateur dont nous parlons ici - d'ailleurs en passant, Javascript a été créé d'abord pour une utilisation côté serveur. En effet, GeoScript - en mode Javascript - est édité pour la plateforme Narwhal.
Pourquoi donc utiliser JavaScript côté serveur me direz-vous ? Et bien, depuis que les éditeurs de butineurs s'efforcent à optimiser les moteurs Javascript, ces derniers rivalisent désormais en performance avec les langages typés serveur. De plus, pour des applications Web, avoir le même langage côté client et côté serveur permet de ne pas se disperser [http://www.clochix.net]. Dans ce mode de fonctionnement nommé Server-side JavaScript (SSJS) il est bien évidemment nécessaire de disposer d'un serveur compatible, une grande partie d'entre eux sont listés sur la page de Wikipédia.

Installation de Narwhal#

Narwhal est une suite d'outils et de librairies permettant l'exécution d'applications JS côté serveur en suivant les spécifications du CommonJS et permettant ainsi d'utiliser le moteur Javascript de notre choix - Rhino, v8, SpiderMonkey, TraceMonkey, etc.

Tout d'abord il faut télécharger Narwhal via Git (système de contrôle de révision) qu'il faudra préalablement installer aussi - comme d'habitude nous utiliserons Ubuntu pour l'exemple :

~$ sudo apt-get install git-core  
~$ git clone git://github.com/280north/narwhal.git

Voilà, nous avons maintenant Narwhal sur notre serveur. Vous pouvez déplacer le répertoire ainsi créé où vous voulez.

Et ajoutons Narwhal dans notre PATH - pour cela éditer le fichier .bashrc et ajouter la ligne suivante :

export PATH=$PATH:~/narwhal/bin  

Ou sinon tapez simplement cette commande dans un terminal, et le PATH ne sera modifié que pour la durée de la session. La modification du fichier .bashrc permet de ne pas avoir à saisir cette commande à chaque redémarrage.
Par défaut Narwhal est livré avec le moteur Rhino. Celui-ci est codé en Java, il faut donc avoir la JRE installée :

~$ sudo apt-get install sun-java6-jre  

Testons maintenant l'installation de Narwhal :

~$ js narwhal/examples/hello  

Nous devrions avoir comme réponse :

Hello, World!

Note : nous pouvons utiliser la commande 'js' ou 'narwhal', c'est identique :

~$ narwhal narwhal/examples/hello  

GeoScript ... enfin !#

Maintenant que nous avons installé tout ce qu'il fallait pour être opérationnel, nous pouvons tester enfin GeoScript.
Pour cela, télécharger le .zip de la version JavaScript ou utiliser encore une fois Git :

~$ sudo git clone git://github.com/tschaub/geoscript-js.git  

Nous avons donc un répertoire geoscript-js à l'endroit où vous avez lancé la commande git.
Il faut maintenant activer notre environnement de façon à ce que Narwhal puisse charger les modules présents dans GeoScript :

~$ ~geoscript-js/bin/sea

Jouons un peu maintenant#

Nous pouvons dorénavant lancer une console Javascript (commande js ou narwhal) et utiliser la bibliothèque :

~$ js  
js> var geom = require('geoscript/geom')  
js> var p1 = new geom.Point([0, 0])  
js> var p2 = new geom.Point([10, 20])  
js> p1.distance(p2)  
22.360679774997898  
js> var poly = p2.buffer(23)  
js> poly.contains(p1)  
true  
js> quit()  

Ici, nous avons créé 2 points, calculé la distance entre eux, créé un polygone grâce à la fonction buffer et demandé si le premier point était contenu dans le polygone.
Voilà, nous pouvons maintenant lire l'API afin d'exploiter tous les modules :

Il faut garder à l'esprit qu'il s'agit ici de la version 0.8 et donc que l'API est susceptible d'être modifiée.

Pour la suite#

Dans un prochain billet, nous verrons comment lier GeoScript et Narwhal avec un serveur Web grâce à Jack.


Auteur·ice#

L'équipe Geotribu#

Portait de GeoTribu

Toute l'actualité de la géomatique Open Source ! Mais aussi des tutoriels, des billets de blog, des tests et surtout une bonne humeur géographique !

Commentaires

Afin de favoriser les échanges constructifs, merci de préférer le pseudonymat à l'anonymat. Pour rappel, l'adresse mail n'est pas exposée publiquement et sert principalement aux notifications de réponse. Les commentaires sont automatiquement republiés sur nos réseaux sociaux pour favoriser la discussion. Consulter la page sur la confidentialité et les données personnelles.
Une version minimale de la syntaxe markdown est acceptée pour la mise en forme des commentaires.
Propulsé par Isso.

Ce contenu est sous licence Creative Commons BY-NC-SA 4.0 International Pictogramme Creative Commons Pictogramme Creative Commons BY Pictogramme Creative Commons NC Pictogramme Creative Commons SA