L'extension GIS

NetLogo 4.0.4   Manuel de l'utilisateur  

Extension GIS version 1.0, diffusée le 16.07.2008

Cette extension donne la possibilité de charger des données GIS vectorielles (points, lignes et polygones) et des données GIS tramées (raster ou grids) dans NetLogo. L'extension supporte les données vectorielles sous la forme de fichiers au format shapefile ESRI. Le format shapefile (.shp) est le format le plus courant pour stocker et échanger des données vectorielles GIS. L'extension supporte les données tramées (raster) sous la forme de fichiers ascii grid ESRI. Le format de fichiers ascii grid (.asc. ou .grd) n'est pas aussi répandu que format shapefile, mais il est supporté en tant que format d'échanges de fichiers par la plupart des plate-formes GIS.

Nous aimerions que vous nous fassiez part de vos suggestions d'améliorations et d'extension de l'extension GIS  —  ou simplement savoir dans quels buts vous l'utilisez. Envoyez s'il-vous-plaît toute la correspondance à ccl-gis@northwestern.edu.

Comment l'utiliser

Étudiez le modèle "GeneralExamples.nlogo" situé dans le dossier "gis" du dossier "extensions" de NetLogo pour des exemples montrant la manière d'utiliser cette extension ou le modèle "GradientExample.nlogo" du même dossier pour un exemple plus sophistiqué d'analyse d'ensemble de données tramées.

De manière générale, il faut d'abord définir une transformation pour passer de l'espace de données GIS à l'espace de données NetLogo, charger ensuite les ensembles de données puis leur appliquer les diverses opérations souhaitées. La manière la plus simple de définir une transformation entre l'espace GIS et l'espace (le monde) NetLogo est de faire l'union des « enveloppes » ou des rectangles frontières de tous vos ensembles de données de l'espace GIS et de les plaquer directement sur les frontières du monde NetLogo. Voir le modèle "GeneralExamples.nlogo" pour un exemple de cette technique.

À la place, vous pouvez aussi définir une projection pour l'espace GIS. Dans ce cas, les ensembles de données seront re-projetés pour correspondre à cette projection lorsqu'ils seront chargés dans NetLogo, à condition que chacun de vos fichiers de données possède un fichier .prj associé, fichier qui décrit la projection ou le système de coordonnées géographiques utilisé dans ce fichier de données GIS. Si aucun fichier .prj associé n'est trouvé, l'extension partira du principe que l'ensemble de données utilise déjà la projection courante, sans tenir compte de ce qu'est cette projection.

Une fois le système de coordonnées défini, vous pouvez chargez les ensembles de données au moyen de la primitive gis:load-dataset. Cette primitive retourne soit un ensemble de données vectorielles (VectorDataset), soit un ensemble de données tramées (RasterDataset), et ce en fonction du type de fichier que vous lui aviez transmis.

Un ensemble de données vectorielles (VectorDataset) est une collection d'« objets » vectoriels (VectorFeatures), dont chacun d'eux est un point, une ligne ou un polygone, accompagné d'un ensemble de valeurs pour leurs différentes propriétés. Un ensemble de données vectorielles ne peut contenir qu'un seul de ces trois types d'objets possibles.

Il y a plusieurs choses que vous pouvez faire avec un de ces ensembles de données vectorielles : lui demander les noms des propriétés de ses objets, lui demander quelle est son « enveloppe » (ses limites ou forntières) ou la liste de tous les objets vectoriels de l'ensemble de données, rechercher un seul objet vectoriel ou une liste d'objets vectoriels dont la valeur d'une certaine propriété est plus petite ou plus grande qu'une valeur donnée, ou se trouve dans un certain ensemble de valeurs, ou correspond à une chaîne de caractères donnée en utilisant une correspondance au moyen du caractère générique " * " (qui correspond à n'importe quel nombre d'occurrences de n'importe quel caractère). Si les objets vectoriels sont des polygones, vous pouvez aussi transmettre les valeurs d'une propriété particulière des objets de l'ensemble de données à une variable patch donnée.  

Vous pouvez aussi faire plusieurs choses avec un objet vectoriel appartenant à un ensemble de données vectorielles : lui demander la liste des listes de ses sommets, lui demander la valeur d'une propriété désignée par son nom, lui demander son centre de gravité ou demander un sous-ensemble d'un ensemble d'agents donné dont les agents correspondent à l'objet vectoriel donné. Pour les objet de type point, la liste de chaque point est une liste ne contenant qu'un seul élément. Pour les objets de type ligne, la liste de chaque point contient les points de la ligne qui forme cet objet. Pour les objets de type polygone, chaque point de la liste représente un sommet du polygone et le premier point de la liste est le même que le dernier. Les listes de point sont faites de données (valeurs) de type Vertex, et le centre de gravité (centroid) est aussi une donnée de type Vertex.

Il y a également toute une série d'opérations définies pour les ensembles de données tramées (RasterDataset). La majorité d'entre elles comprend l'échantillonnage des valeurs de l'ensemble de données ou le ré-échantillonnage d'une trame dans une autre résolution. Vous pouvez aussi transmettre une trame à une variable patch donnée et « envelopper » une trame en utilisant une matrice de convolution arbitraire.

 Problèmes connus

La possibilité d'exporter et d'importer des données de type RasterDataset, VectorDataset, VectorFeature et Vertex en utilisant les primitives export-world et import-world n'a pas encore été implémentée.

Il n'y a, pour le moment, aucune possibilité de distinguer les zones polygonales positives (« couvercles ») des zones polygonales négatives (« trous ») ou de déterminer quels trous sont associés à quel couvercles.

 Les primitives GIS

 Primitives pour les systèmes de coordonnées

set-transformation set-transformation-ds set-world-envelope set-world-envelope-ds world-envelope envelope-of envelope-union-of load-coordinate-system set-coordinate-system

 Primitives pour les ensembles de données (Dataset)

load-dataset store-dataset type-of patch-dataset turtle-dataset link-dataset

 Primitives pour les ensembles de données vectorielles (VectorDataset)

shape-type-of property-names feature-list-of vertex-lists-of centroid-of location-of property-value find-features find-one-feature find-less-than find-greater-than find-range property-minimum property-maximum apply-coverage coverage-minimum-threshold set-coverage-minimum-threshold coverage-maximum-threshold set-coverage-maximum-threshold intersects? contains? contained-by? have-relationship? relationship-of

 Primitives pour les ensembles de données tramées (RasterDataset)

width-of height-of raster-value set-raster-value minimum-of maximum-of sampling-method-of set-sampling-method raster-sample raster-world-envelope create-raster resample convolve apply-raster read-raster

 Primitives de dessin

drawing-color set-drawing-color draw fill paint

 Primitives pour les systèmes de coordonnées

gis:set-transformation

gis:set-transformation enveloppe-gis enveloppe-netlogo

Définit une correspondance entre les coordonnées GIS et les coordonnées NetLogo, correspondance permettant de transformer les coordonnées GIS en coordonnées NetLogo. Les arguments enveloppe-gis et enveloppe-netlogo doivent être des listes constituées chacune des quatre éléments suivants :

[ minimum-x maximum-x minimum-y maximum-y ]      

La grandeur de la transformation sera égale à la valeur minimale nécessaire pour établir la correspondance entre les deux ensembles des valeurs X et à celle nécessaire pour établir la correspondance entre les deux ensembles des valeurs Y. L'espace GIS sera centré dans l'espace NetLogo.

Par exemple, les deux listes suivantes feront correspondre tout l'espace géographique (les coordonnées géographiques, latitude et longitude, exprimées en degrés) à l'espace du monde NetLogo, sans tenir compte des dimensions courantes du monde NetLogo :

(list -180 180 -90 90 )
(list min-pxcor max-pxcor min-pycor max-pycor)

Toutefois, si vous mettez en place l'enveloppe du monde NetLogo, vous devrez probablement utiliser la primitive set-world-envelope décrite ci-dessous.

gis:set-transformation-ds

gis:set-transformation-ds enveloppe-gis enveloppe-netlogo

Cette primitive fait la même chose que la primitive set-transformation ci-dessus, sauf qu'elle permet d'utiliser des échelles de transformations différentes pour les valeurs X et les valeurs Y. Le suffixe -ds signifie "different scales" (échelles différentes). L'utilisation d'échelles différentes pour les deux axes provoquera une distorsion de la forme des objets GIS, c'est pourquoi elle n'est généralement pas recommandée, mais elle peut être utile pour certains modèles.

Voici un exemple montrant la différence entre les primitives set-transformation et set-transformation-ds :

screen shot screen shot
En utilisant set-transformation, l'échelle utilisée pour l'axe X est la même que celle utilisée pour l'axe Y, dont préservant la forme ronde de la Terre dans cette projection orthographique. En utilisant set-transformation-ds, l'échelle de l'axe X est étirée de manière à ce que l'image de la Terre couvre la totalité de la Vue NetLogo, provoquant ainsi une déformation de la rotondité de la Terre.

gis:set-world-envelope

gis:set-world-envelope enveloppe-gis

Cette primitive est un raccourci pour mettre en place la transformation en plaquant l'enveloppe du monde NetLogo à l'enveloppe donnée dans l'espace GIS, tout en gardant la même échelle de transformation pour les axes X et Y. Elle est l'équivalent de la commande :

set-transformation gis-envelope (list min-pxcor max-pxcor min-pycor max-pycor)

Cette primitive est fournie parce que, la plupart du temps, on veut faire en sorte que l'enveloppe s'étende à la totalité du monde NetLogo plutôt qu'à une partie de ce monde seulement.

gis:set-world-envelope-ds

gis:set-world-envelope-ds enveloppe-gis

Cette primitive est un raccourci pour mettre en place la transformation en plaquant l'enveloppe du monde NetLogo à l'enveloppe donnée dans l'espace GIS, en utilisant des échelles de transformation différentes pour les axes X et Y si nécessaire. Elle est l'équivalent de la commande :

set-transformation-ds gis-envelope (list min-pxcor max-pxcor min-pycor max-pycor)

Voir les images ci-dessus illustrant la différence entre l'utilisation d'échelles semblables et d'échelles différentes pour les axes de coordonnées X et Y.

gis:world-envelope

gis:world-envelope

Ce reporter retourne l'enveloppe (le rectangle englobant) du monde NetLogo, transformée dans l'espace GIS. Cette enveloppe est une liste de quatre éléments de la forme :

[ minimum-x maximum-x minimum-y maximum-y ]

gis:envelope-of

gis:envelope-of chose

Ce reporter retourne l'enveloppe (rectangle englobant) de la chose en coordonnées GIS. La chose peut être un agent, un ensemble d'agents (AgentSet), un ensemble de données tramées (RasterDataset), un ensemble de données vectorielles (VectorDataset) ou un objet vectoriel (VectorFeature). Une enveloppe est formée d'une liste de quatre éléments, de la forme :

[ minimum-x maximum-x minimum-y maximum-y ]

gis:envelope-union-of

gis:envelope-union-of enveloppe1 enveloppe2
(gis:envelope-union-of enveloppe1 ...)

Ce reporter retourne une enveloppe (rectangle englobant) qui contient entièrement les enveloppes données. Une enveloppe est formée d'une liste de quatre éléments, de la forme :

[ minimum-x maximum-x minimum-y maximum-y ]

Aucune supposition n'est faite concernant les systèmes de coordonnées des arguments, ce qui fait que s'ils n'ont pas les mêmes systèmes, les résultats seront imprévisibles.

gis:load-coordinate-system

gis:load-coordinate-system fichier

Charge une nouvelle projection globale qui sera utilisée pour projeter ou re-projeter des données GIS quand elles sont chargées à partir d'un fichier. Ce fichier doit contenir une description de projection Well-Known Text (WKT) valable.

Les fichiers de projection WKT sont fréquemment distribués avec les fichiers de données GIS et ont habituellement .prj comme extension de nom de fichier.

Les chemins de fichiers relatifs sont résolus relativement à l'emplacement du modèle courant, ou au dossier home de l'utilisateur si le modèle courant n'a pas encore été sauvegardé.

L'extension GIS ne supporte pas tous les systèmes de coordonnées et tous les types de projection WKT. Seuls les systèmes de coordonnées géographiques ("GEOGCS") et les systèmes de projection de coordonnées ("PROJCS") sont supportés. Parmi les systèmes de projections de coordonnées, seuls les systèmes suivants sont supportés :

 Lambert_Conformal_Conic_2SP  Polycônique
 Lambert_Azimuthal_Equal_Area  Mercator_1SP  Robinson
 Azimuthal_Equidistant  Miller  Stéréographique
 Cylindrical_Equal_Area  Mercator Oblique  Mercator Transverse
 Cônique équidistant  hotine_oblique_mercator
 Gnomonique  Orthographique

Voir le site remotesensing.org pour une liste complète des projections WKT et leurs paramètres.

gis:set-coordinate-system

gis:set-coordinate-system systeme

Met en place le système de projection global utilisé pour projeter ou re-projeter les données GIS quand elles sont chargées. Le paramètre systeme doit être soit une chaîne au format Well-Known Text (WKT), soit une liste NetLogo formée des données WKT converties en une liste en déplaçant chaque mot-clé entouré de ses parenthèses qu'on entoure encore de guillemets. Cette dernière technique est préférable car elle produit un code bien plus lisible.

Cette primitive est soumise aux mêmes restrictions quant aux WKT supportés que la primitive load-coordinate-system décrite ci-dessus.

 Primitives pour les ensembles de données (Dataset)

gis:load-dataset

gis:load-dataset fichier

Charge le fichier de données fichier, et en cas de nécessité, re-projette les données si une projection globale est définie et si un fichier  ".prj"  est associé à fichier, puis retourne l'ensemble de données résultant.

S'il n'y a pas de fichier  ".prj" , alors load-dataset présuppose que la projection des données chargées est la même que celle du système de coordonnées global courant.

Les chemins de fichiers relatifs sont résolus par rapport à l'emplacement du modèle courant, ou du dossier home de l'utilisateur si le modèle courant n'a pas encore été sauvegardé.

Pour le moment, NetLogo supporte deux types de fichiers de données :

gis:store-dataset

gis:store-dataset dataset file

Sauvegarde l'ensemble de données dataset dans le fichier file. Si le nom du fichier n'a pas l'extension de nom voulue, cette dernière sera automatiquement ajoutée. Les chemins de fichiers relatifs sont résolus par rapport à l'emplacement du modèle courant, ou du dossier home de l'utilisateur si le modèle courant n'a pas encore été sauvegardé.

Pour le moment, cette primitive ne fonctionne que pour les ensembles de données de type RasterDataset et ne peut enregistrer des ensembles de données que sous la forme de fichiers "ESRI ascii grid".

gis:type-of

gis:type-of dataset

Retourne le type de l'ensemble de données GIS dataset : soit "VECTOR", soit "RASTER".

gis:patch-dataset

gis:patch-dataset variable-patch

Retourne une nouvelle trame dont les cellules correspondent directement aux patches de NetLogo, et dont les valeurs des cellules correspondent aux valeurs de la variable-patch donnée. Cette primitive est fondamentalement l'inverse de apply-raster; apply-raster copie les valeurs d'un ensemble de données tramées dans une variable patch, et read-raster copie les valeurs d'une variable patch dans un ensemble de données tramées.

gis:turtle-dataset

gis:turtle-dataset ensemble-tortues

Retourne un nouvel ensemble de données VectorDataset de type point construit à partir des tortues de l'ensemble d'agents ensemble-tortues. Les points correspondent aux emplacements des tortues, translatés de l'espace NetLogo dans l'espace GIS en utilisant le système de transformation des coordonnées courant. Les propriétés de l'ensemble de données sont celles de toutes les variables tortues communes à chaque tortue de l'ensemble d'agents.

gis:link-dataset

gis:link-dataset ensemble-liens

Retourne un nouvel ensemble de données VectorDataset de type ligne construit à partir des liens de l'ensemble d'agents ensemble-liens donné. Les points situés aux extrémités de chaque ligne correspondent aux positions des tortues connectées par chaque lien, translatées de l'espace NetLogo dans l'espace GIS en utilisant le système de transformation des coordonnées courant. Les propriétés de l'ensemble de données sont celles de toutes les variables liens communes à chaque lien de l'ensemble d'agents.

 Primitives pour les ensembles de données vectorielles (VectorDataset)

gis:shape-type-of

gis:shape-type-of VectorDataset

Retourne le type des formes stockées dans l'ensemble de données VectorDataset. Les valeurs retournées possibles sont : "POINT", "LINE" et "POLYGON".

gis:property-names

gis:property-names VectorDataset

Retourne une liste de chaînes de caractères où chaque chaîne est le nom d'une propriété commune à chaque objet vectoriel (VectorFeature) de l'ensemble de données VectorDataset donné, propre à être utilisée avec la primitive gis:property-value.

gis:feature-list-of

gis:feature-list-of VectorDataset

Retourne une liste de tous les objets vectoriels (VectorFeatures) de l'ensemble de donnée VectorDataset.

gis:vertex-lists-of

gis:vertex-lists-of VectorFeature

Retourne une liste de listes de valeurs de points (Vertex). Pour les ensembles de données décrivant des points, chaque liste de points ne contient qu'un seul point : l'emplacement du point. Pour les ensembles de données décrivant des lignes, chaque liste de points contient au moins deux points et représente une ligne polygonale joignant chaque paire de points adjacents de la liste. Pour les ensembles de données de type polygone, chaque liste de points contient au moins trois points représentant un polygone dont ils sont les sommets; de plus, le premier et le dernier point de la liste sont les mêmes car les objets de type polygones sont des figures « fermées ».

gis:centroid-of

gis:centroid-of VectorFeature

Retourne un point unique représentant le centre de gravité (centroid) de l'objet Vectorfeature donné. Pour des ensembles de données de type point, le centre de gravité est défini comme étant la moyenne des positions de tous les points de l'objet. Pour les ensembles de données de type ligne, le centre de gravité est défini comme étant la moyenne des positions des points médians, pondérés par la longueur du segment, de tous les segments de droite de l'objet. Pour les ensembles de données de type polygone, le centre de gravité est défini comme étant la somme pondérée des centres de gravité des triangles obtenus par la décomposition du polygone en triangles (qui peuvent se recouvrir). Voir le chapitre FAQ pour plus de détails concernant l'algorithme du centre de gravité des polygones.

gis:location-of

gis:location-of Vertex

Retourne une liste de deux éléments contenant les valeurs x et y (dans cet ordre) du point Vertex donné translaté dans l'espace du monde NetLogo en utilisant la transformation courante, ou une liste vide si le point donné se trouve en dehors des limites du monde NetLogo.

gis:property-value

gis:property-value VectorFeature nom-propriete

Retourne la valeur de la propriété nommée nom-propriete de l'ensemble de données VectorFeature. La valeur retournée peut être un nombre, une chaîne de caractères ou une valeur booléenne, en fonction du type du champ du fichier de données sous-jacent.

Pour les fichiers « shapefile », les valeurs des champs dBase CHARACTER et DATE sont retournées sous forme de chaînes de caractères, celles des champs NUMBER et FLOAT sous formes de nombres et celles des champs LOGICAL sous forme de valeurs booléennes. Les champs MEMO ne sont pas supportés. Les valeurs des champs DATE sont converties en chaînes de caractères conformément au format ISO 8601 (AAAA-MM-JJ).

gis:find-features

gis:find-features VectorDataset nom-propriete chaine

Retourne une liste de tous les objets (VectorFeatures) de l'ensemble de données VectorDataset dont la valeur de la propriété nom-propriete correspond la chaine donnée. La comparaison ne tient pas compte de la casse des caractères, et le caractère «jocker » "*" peut remplacer un nombre quelconque d'occurrences de n'importe quel caractère (y compris le zéro).

gis:find-one-feature

gis:find-one-feature VectorDataset nom-propriete chaine

Retourne le premier objet (VectorFeature) de l'ensemble de données VectorDataset dont la valeur de la propriété nom-propriete correspond à la chaine donnée. La comparaison ne tient pas compte de la casse des caractères et le caractère «jocker » "*" peut remplacer un nombre quelconque d'occurrences de n'importe quel caractère (y compris le zéro). Les objets sont explorés en suivant l'ordre dans lequel ils apparaissent dans le fichier de données qui est à l'origine de l'ensemble de données, et la recherche cesse dès qu'une correspondance est trouvée. La primitive retourne nobody (personne) si aucun objet satisfaisant la condition n'est trouvé.

gis:find-less-than

gis:find-less-than VectorDataset nom-propriete valeur

Retourne une liste de tous les objets (VectorFeature) de l'ensemble de données VectorDataset dont la valeur de la propriété nom-propriete est inférieure à la valeur donnée. Les chaînes de caractères sont comparées dans l'ordre lexicographique en tenant compte de la casse des caractères tel que défini dans Java Documentation. L'utilisation d'une valeur de type chaîne de caractères pour une propriété numérique ou d'une valeur numérique pour une propriété de type chaîne de caractères provoque une erreur.

gis:find-greater-than

gis:find-greater-than VectorDataset nom-propriete valeur

Retourne une liste de tous les objets (VectorFeature) de l'ensemble de données VectorDataset dont la valeur de la propriété nom-propriete est plus grande que la valeur donnée. Les chaînes de caractères sont comparées dans l'ordre lexicographique en tenant compte de la casse des caractères tel que défini dans Java Documentation. L'utilisation d'une valeur de type chaîne de caractères pour une propriété numérique ou d'une valeur numérique pour une propriété de type chaîne de caractères provoque une erreur.

gis:find-range

gis:find-range VectorDataset nom-propriete valeur-min valeur-max

Retourne une liste de tous les objets (VectorFeature) de l'ensemble de données VectorDataset dont la valeur de la propriété nom-propriete est strictement supérieure à la valeur-min et strictement inférieure à la valeur-max données. Les chaînes de caractères sont comparées dans l'ordre lexicographique en tenant compte de la casse des caractères tel que défini dans Java Documentation. L'utilisation d'une valeur de type chaîne de caractères pour une propriété numérique ou d'une valeur numérique pour une propriété de type chaîne de caractères provoque une erreur.

gis:property-minimum

gis:property-minimum VectorDataset nom-propriete

Retourne la plus petite valeur pour la propriété nom-propriete de tous les objets (VectorFeature) de l'ensemble de données VectorDataset. Les chaînes de caractères sont comparées dans l'ordre lexicographique en tenant compte de la casse des caractères tel que défini dans Java Documentation.

gis:property-maximum

gis:property-maximum VectorDataset nom-propriete

Retourne la plus grande valeur pour la propriété nom-propriete de tous les objets (VectorFeature) de l'ensemble de données VectorDataset. Les chaînes de caractères sont comparées dans l'ordre lexicographique en tenant compte de la casse des caractères tel que défini dans Java Documentation.

gis:apply-coverage

gis:apply-coverage VectorDataset nom-propriete variable-patch

Copie les valeurs de la propriété nom-propriete des objets de l'ensemble de données VectorDataset dans la variable variable-patch donnée. L'ensemble de données doit être un ensemble de type polygones; les types point et ligne n'étant pas supportés.

Pour chaque patch, la primitive cherche tous les objets qui coupent le patch. Ensuite, si la propriété est de type chaîne de caractères, elle cherche la plus grande valeur en calculant l'aire de la partie du patch recouverte par les objets vectoriels ayant chaque valeur possible de la propriété, puis retourne la valeur représentant la plus grande proportion de la surface du patch. Si la propriété est de type numérique, elle calcule une moyenne pondérée des valeurs de la propriété de tous les objets vectoriels qui coupent le patch, pondération basée sur la proportion de la surface du patch que les objets recouvrent.

Il y a deux exceptions à ce comportement par défaut :

Par défaut, la limite minimale est de 10% et la limite maximale de 33%. Ces valeurs peuvent être modifiées en utilisant les primitives qui suivent.

gis:coverage-minimum-threshold

gis:coverage-minimum-threshold

Retourne la limite de recouvrement minimale utilisée par la primitive gis:apply-coverage.

gis:set-coverage-minimum-threshold

gis:set-coverage-minimum-threshold nouvelle-limite

Fixe la limite de recouvrement minimale nouvelle-limite devant être utilisée par la primitive gis:apply-coverage.

gis:coverage-maximum-threshold

gis:coverage-maximum-threshold

Retourne la limite de recouvrement maximale utilisée par la primitive gis:apply-coverage.

gis:set-coverage-maximum-threshold

gis:set-coverage-maximum-threshold nouvelle-limite

Fixe la limite de recouvrement maximale nouvelle-limite devant être utilisée par la primitive gis:apply-coverage.

gis:intersects?

gis:intersects? objet-x objet-y

Retourne true (vrai) si les représentations spatiales des objets objet-x et objet-y ont au moins un point commun, sinon retourne false (faux). Les objet-x et objet-y peuvent être de plusieurs types.

gis:contains?

gis:contains? x y

Retourne true (vrai) si chaque point de la représentation spatiale x fait aussi partie de la représentation spatiale y. Notez que cela signifie que les polygones contiennent leurs limites. Les objets x et y possibles sont listés ci-dessous.

gis:contained-by?

gis:contained-by? x y

Retourne true (vrai) si chaque point de la représentation spatiale x fait aussi partie de la représentation spatiale y. Les objets x et y possibles sont listés ci-dessous.

gis:have-relationship?

gis:have-relationship? x y relations

Retourne true (vrai) si les représentations spatiales des deux objets x et y satisfont aux relations spatiales spécifiées par l'argument relations, sinon retourne false (faux). Les relations spatiales sont spécifiées à l'aide d'une matrice Dimensionally Extended Nine-Intersection Model (DE-9IM). Cette matrice est formée de neuf éléments, chacun spécifiant la relation requise entre les espaces internes, les espaces frontières et les espaces externes des deux objets. Ces éléments doivent avoir l'une des six valeurs possibles suivantes :

Par exemple, la matrice :

x
Intérieur Frontière Extérieur
y  Intérieur T * *
 Frontière * * *
 Extérieur F F *

retournera true si et seulement si une partie de l'espace intérieur de l'objet x se trouve dans l'espace intérieur de l'objet y, et si aucune partie de l'espace intérieur de l'objet x ou de son espace frontière n'entre dans l'espace externe de l'objet y. C'est essentiellement une forme plus restrictive de la primitive contains?, primitive qui considère que les polygones ne contiennent pas leurs frontières.

La matrice est transmise à la primitive have-relationship? sous la forme d'une chaîne de caractères dont les éléments sont donnés dans l'ordre suivants :

1 2 3
4 5 6
7 8 9

Donc, pour utiliser la matrice de l'exemple ci-dessus, nous devons écrire :

gis:have-relationship? x y "T*****FF*"

Une description formelle et bien plus détaillée de la matrice DE-9IM et de la théorie des ensembles de points qui lui est associée est disponible à OpenGIS Simple Features Specification for SQL.

Les objets x et y peuvent être :

gis:relationship-of

gis:relationship-of x y

Retourne la matrice Dimensionally Extended Nine-Intersection Model (DE-9IM) qui décrit les relations spatiales des deux objets x et y. Cette matrice est formée de neuf éléments, chacun décrivant la relation entre les espaces internes, les espaces frontières et les espaces externes des deux objets ce qui signifie qu'ils peuvent avoir l'une des quatre valeurs possibles suivantes :

Par exemple, les deux polygones x et y montrés ici :

intersecting polygons

ont la matrice DE-9IM suivante :

x
Intérieur Frontière Extérieur
y  Intérieur 2 1 2
 Frontière 1 0 1
 Extérieur 2 1 2

qui serait retournée par la primitive relationship-of sous la forme de la chaîne de caractères "212101212".

Une description formelle et bien plus détaillée de la matrice DE-9IM et de la théorie des ensembles de points qui lui est associée est disponible à OpenGIS Simple Features Specification for SQL.

Les objets x et y peuvent être :

gis:intersecting

ensemble-de-patch gis:intersecting donnees

Retourne un nouvel ensemble d'agents ne contenant que les agents de l'ensemble d'agents ensemble-de-patch qui ont une intersection avec les données GIS, donnees qui peuvent être un ensemble de données vectorielles VectorDataset, un objet vectoriel VectorFeature, un agent, un ensemble d'agents ou une liste contenant n'importe lesquels des objets décrits ci-dessus.

 Primitives pour les ensembles de données tramées (RasterDataset)

gis:width-of

gis:width-of RasterDataset

Retourne le nombre de colonnes dans l'ensemble de données. Notez que ce nombre représente le nombre de cellules de gauche à droite et non la largeur de l'ensemble de données dans l'espace GIS.

gis:height-of

gis:height-of RasterDataset

Retourne le nombre de lignes dans l'ensemble de données. Notez que ce nombre représente le nombre de cellules de haut en bas et non la hauteur de l'ensemble de données dans l'espace GIS.

gis:raster-value

gis:raster-value RasterDataset coord-x coord-y

Retourne la valeur d'une cellule de l'ensemble de données RasterDataset, cellule spécifiée par ses coordonnées coord-x et coord-y. Les coordonnées des cellules correspondent à leur numérotation dans le plan. Cette numérotation va de gauche à droite et de haut en bas, en commençant à zéro. Ainsi, la cellule placée dans le coin supérieur gauche a pour coordonnées (0,0) et la cellule placée dans le coin inférieur droit a pour coordonnées (gis:width-of dataset - 1, gis:height-of dataset - 1).

gis:set-raster-value

gis:set-raster-value RasterDataset coord-x coord-y valeur

Donne la nouvelle valeur valeur à la cellule de coordonnées (coord-x, coord-y) de l'ensemble de données RasterDataset. Les coordonnées des cellules correspondent à leur numérotation dans le plan. Cette numérotation va de gauche à droite et de haut en bas, en commençant à zéro. Ainsi, la cellule placée dans le coin supérieur gauche a pour coordonnées (0,0) et la cellule placée dans le coin inférieur droit a pour coordonnées (gis:width-of dataset - 1, gis:height-of dataset - 1).

gis:minimum-of

gis:minimum-of RasterDataset

Retourne la valeur la plus basse de l'ensemble de données RasterDataset spécifié.

gis:maximum-of

gis:maximum-of RasterDataset

Retourne la valeur la plus haute de l'ensemble de données RasterDataset spécifié.

gis:sampling-method-of

gis:sampling-method-of RasterDataset

Retourne la méthode d'échantillonnage (sampling) utilisée pour calculer la valeur de l'ensemble de données RasterDataset en un seul point ou pour une surface plus petite que celle d'une cellule de la trame. L'échantillonnage est effectué par les primitives raster-sample, resample, convolve et apply-raster de l'extension GIS. La méthode d'échantillonnage est l'une des suivantes :

Pour plus d'information sur les méthodes d'échantillonnage et sur l'échantillonnage des trames en général, voir l'article du Wikipedia Image Scaling.

gis:set-sampling-method

gis:set-sampling-method RasterDataset sampling-method

Fixe la méthode d'échantillonnage sampling-method utilisée par l'ensemble de données RasterDataset pour un point ou pour une surface plus petite que celle d'une cellule de la trame. L'échantillonnage est fait par les primitives raster-sample, resample, convolve, et apply-raster de l'extension GIS. La méthode d'échantillonnage doit être l'une des quatre suivantes :

Voir la primitive sampling-method-of ci-dessus pour une description plus détaillée de chaque méthode d'échantillonnage.

gis:raster-sample

gis:raster-sample RasterDataset sample-location

Retourne la valeur de la trame RasterDataset donnée à l'endroit sample-location donné. La localisation de l'échantillonnage peut être spécifiée par l'une des méthodes suivantes :

Si l'emplacement spécifié se trouve en dehors de la surface couverte par l'ensemble de données, cette primitive retourne la valeur spéciale représentant "not a number" (pas un nombre) qui est affichée par NetLogo sous la forme "NaN". L'utilisation de la valeur spéciale "Not a Number" en tant qu'argument pour une primitive qui demande une valeur numérique peut générer une erreur, mais vous pouvez tester la valeur retournée par cette primitive pour écarter les valeurs "Not a Number". Une valeur qui n'est pas un nombre ne sera ni plus petite que ni plus grande qu'une valeur numérique, c'est pourquoi vous pouvez détecter les valeurs "Not a Number" au moyen du code suivant :

 let valeur gis:raster-sample dataset turtle 0
 ; met en bleu si valeur est un nombre, en rouge si valeur est "not a number"
 ifelse (value <= 0) or (value >= 0)
 [ set color blue ]
 [ set color red ]

Si l'emplacement spécifié est un point, l'échantillonnage est toujours calculé en utilisant la méthode spécifiée par set-sampling-method. Si l'emplacement spécifié est une surface (par exemple une enveloppe ou un patch), l'échantillonnage est calculé en prenant la moyenne de toutes les cellules de la trame couvertes par la surface spécifiée.

gis:raster-world-envelope

gis:raster-world-envelope RasterDataset x y

Retourne l'enveloppe GIS nécessaire pour faire correspondre les frontières des patches NetLogo avec les cellules de l'ensemble de données de la trame (raster). Cette enveloppe peut ensuite être utilisée comme argument pour la primitive set-transformation-ds.

Il est possible qu'il y ait plus de cellules dans la trame que de patches dans le monde NetLogo. Dans ce cas, vous devrez sélectionner un sous-ensemble de cellules dans l'ensemble de données de trame en spécifiant quelle cellule de la trame vous voulez faire correspondre avec le coin supérieur gauche du monde NetLogo. Les cellules sont numérotées de gauche à droite et de haut en bas, en commençant par 0. Ainsi, la cellule située tout en haut à gauche est le cellule (0,0) et la cellule située en bas à droite est la cellule (gis:width-of dataset - 1, gis:height-of dataset - 1).

gis:create-raster

gis:create-raster width height envelope

Crée et retourne un nouvel ensemble de données tramées comprenant width colonnes et height lignes qui couvrent l'enveloppe envelope donnée.

gis:resample

gis:resample RasterDataset envelope width height

Retourne un nouvel ensemble de données qui comprend RasterDataset rééchantillonné de manière à couvrir l'enveloppe envelope donnée et qui contient le nombre de colonnes width et de lignes height données. Si les cellules de la nouvelle trame sont plus petites que les cellules existantes, elles seront rééchantillonnées par la méthode spécifiée par set-sampling-method. Si les nouvelles cellules sont plus grandes que les cellules originales, elles sont ré-échantillonnées en utilisant la méthode "NEAREST_NEIGHBOR".

gis:convolve

gis:convolve RasterDataset kernel-rows kernel-columns kernel key-column key-row

Retourne une nouvelle trame dont les données proviennent de la trame RasterDataset donnée convolutée autour du noyau kernel donné, noyau formée de kernel-rows lignes et de kernel-columns colonnes.

La convolution est une opération mathématique qui calcule la valeur de chaque cellule en multipliant les éléments d'un noyau par les valeurs des cellules entourant une cellule source particulière. Un noyau est une matrice de valeurs comprenant une valeur particulière définie comme « élément clé », la valeur centrée au-dessus de la cellule source correspondant à la cellule de destination dont la valeur est en train d'être calculée.

Les valeurs de la matrice du noyau sont données sous forme de liste, liste qui énumère les éléments de la matrice de gauche à droite et de haut en bas. Ainsi, les éléments d'une matrice 3-par-3 seront listés de la manière suivante :

1 2 3
4 5 6
7 8 9

L'élément clé est spécifié par le numéro de la colonne key-column et par le numéro de la ligne key-rown de la matrice. Les colonnes sont numérotées de gauche à droite, en commençant par zéro. Les lignes sont numérotées de haut en bas, en commençant aussi par zéro. Ainsi, par exemple, le noyau pour l'opérateur horizontal Sobel, qui ressemble à ceci :

1 0 -1
2 0
(key)
-2
1 0 -1
doit être spécifié de la manière suivante :
let horizontal-gradient gis:convolve dataset 3 3 [ 1 0 -1 2 0 -2 1 0 -1 ] 1 1

gis:apply-raster

gis:apply-raster RasterDataset patch-variable

Copie les valeurs de l'ensemble de données tramées RasterDataset dans la variable patch patch-variable donnée, ré-échantillonnant si nécessaire la trame de manière à ce que les frontières de sa cellule correspondent avec les frontières du patch NetLogo. Le ré-échantillonnage est effectué comme si l'on utilisait resample plutôt que raster-sample, ceci pour des raisons d'efficacité. Cependant, les patches non couverts par la trame reçoivent la valeur not a number de la même manière que raster-sample le fait pour des emplacements situés hors de la trame.

Primitives de dessin

gis:drawing-color

gis:drawing-color

Retourne la couleur utilisée par l'extension GIS pour dessiner les objets vectoriels dans la couche de dessin de NetLogo. Les couleurs peuvent être représentées soit en tant que couleurs NetLogo (un seul nombre entre 0 et 140) soit en tant que couleurs RGB (une liste de trois nombres). Pour les détails, voir la section Couleurs du Guide de la programmation.

gis:set-drawing-color

gis:set-drawing-color color

Spécifie la couleur à utiliser par l'extension GIS pour dessiner les objets vectoriels dans la couche de dessin de NetLogo. L'entrée color peut représenter soit une couleur NetLogo (un seul nombre entre 0 et 140) soit une couleur RGB (une liste de trois nombres). Pour les détails, voir la section Couleurs du Guide de la programmation.

gis:draw

gis:draw vector-data line-thickness

Dessine l'objet vectoriel vector-data sur la couche de dessin de NetLogo en utilisant la couleur de dessin GIS courante, avec l'épaisseur de ligne line-thickness donnée. L'objet vectoriel peut être soit un ensemble de données VectorDataset complet, soit un objet vectoriel (VectorFeature) unique. Cette primitive ne dessine que les contours des objets polygones, et pour les objets points, elle remplit un cercle dont le rayon est égal à l'épaisseur de la ligne line-thickness.

gis:fill

gis:fill vector-data line-thickness

Remplit (peint) l'objet vectoriel vector-data sur la couche de dessin de NetLogo en utilisant la couleur de dessin GIS courante et l'épaisseur de ligne donnée line-thickness pour faire de tour de l'objet. L'objet vectoriel peut être soit un ensemble de données VectorDataset complet, soit un objet vectoriel (VectorFeature) unique. Pour les objets points, elle remplit un cercle dont le rayon est égal à l'épaisseur de la ligne line-thickness.

gis:paint

gis:paint RasterDataset

Peint la trame RasterDataset donnée sur la couche de dessin de NetLogo. NetLogo utilise le blanc pour représenter la valeur la plus élevée de l'ensemble de données, le noir pour représenter la valeur la plus basse, alors que les valeurs intermédiaires sont représentées par des nuances de gris réparties régulièrement entre le blanc et le noir.

gis:import-wms-drawing

gis:import-wms-drawing server-url spatial-reference layers transparency

Importe une image sur la couche de dessin de NetLogo en utilisant le protocole Web Mapping Service (WMS) tel que défini par le consortium Open Geospatial Consortium.

Les entrées spatial reference et layers doivent l'être sous forme de chaînes de caractères. L'entrée spatial reference correspond au paramètre SRS de la requête GetMap telle que définie dans la section 7.2.3.5 de la version 1.1.1 du standard WMS.

Vous pouvez trouver la liste des codes de référence spatiale et des noms de layers valides en examinant la réponse à une requête GetCapabilities faite au serveur WMS. Consultez le standard y relatif pour les instructions décrivant comment émettre une requête GetCapabilities à l'intention du serveur et comment interpréter sa réponse.

L'entrée transparency spécifie le niveau de transparence que la nouvelle image aura sur la couche de dessin. Les valeurs acceptables vont de 0 (complètement opaque) à 255 (complètement transparent).

Remerciements

L'extension GIS utilise les bibliothèques logicielles open-source suivantes :

Cette extension contient aussi des éléments puisés dans My World GIS.

Cette documentation et les exemples de modèles Netlogo sont mis dans le domaine public, alors que l'extension GIS elle-même est disponible sous licence open-source. Voir le fichier LICENSE.txt dans le répertoire de l'extension GIS pour plus de détails.