Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Wed 20 February 2013 11:14

Amelovelo
Participant occasionnel
Lieu: Leuglay, France
Date d'inscription: 11 Jul 2012
Messages: 19

Analyse par grille - valeurs des mailles voisines

Bonjour,

je travaille actuellement sur une méthode de zonage (définir des secteurs à forte valeur environnementale). Je me base sur une grille de mailles (polygones de 500*500m), et j'attribue à chaque maille une valeur, de 0 à 10, en fonction de son contenu (taux de surface forêt, de Natura2000...etc).

J'aimerais ajouter un critère de "continuité", pour donner plus de valeur aux mailles contenues dans des grands massifs.
J'imagine pour l'instant ajouter un champ "valeur moyenne des 8 mailles voisines"... mais je ne vois pas du tout comment récupérer cette valeur.

Quelqu'un aurait-il une idée ?
Merci !


---edit : la réponse est toujours chez J. Paris...
pour ceux que ça intéresserait, cf "Requêtes basées sur l’adjacence des objets" du document "SQL dans sa fenêtre ou via la fenêtre MapBasic".


Code:

SELECT {liste_expressions|*} FROM <Table1>, <Copie de Table1>
WHERE <Table1.obj> INTERSECTS <Copie de Table1.obj> AND
<Table1.ID> <> <Copie de Table1.ID>

Le résultat est une table à deux colonnes où pour chaque identificateur de la table d’origine, on a la liste des identificateurs des objets adjacents (et de leurs propriétés si besoin !).

Dernière modification par Amelovelo (Wed 20 February 2013 11:17)

Hors ligne

 

#2 Thu 07 March 2013 18:43

FERNANE
Participant actif
Date d'inscription: 14 Sep 2005
Messages: 139

Re: Analyse par grille - valeurs des mailles voisines

Bonjour,

Une méthode géométrique : fabriquer une couche de tampon de chaque carré de 500*500 m avec un rayon compris entre 500+500*1.732/2 et 1000 m de façon que les centroids des carrés alentour puissent être en intersection avec.  Créer une couche de tampon de rayon plus petite que 500m des centroids du fichier de départ.

Faire le fichier de différence des deux couches tampons. La couche résultante devrait par requête de MAP INFO avec la fonction countains ne donner à chaque fois que les huits carrés autours d'une cellule.

faire le calcul; puis transvaser les résultats sur le fichier initial.

La méthode géométrique est la plus simple. On peut toutefois y arriver par calcul successif si l'on réussit à créer des colonnes supplémentaires avec les références des cases environnantes.

Supposons que vous ayez créer une colonne ligne_or et une colonne colonne_or pour la première case de votre grille ligne_or=1 et colonne_or=1 (je numérote les lignes et les colonnes en clair) ou on peut aussi utiliser les valeurs des coordonnées.
Il faut créer pour calculer les références de la case au nord-ouest deux colonnes : ligne_no et colonne_no
Pour le calcul en valeur numéroté ligne_no = ligne_or - 1 et colonne_no= colonne_or - 1 pour la case au nord on aurait : ligne_n=ligne_or -1 et colonne_n=colonne_or

etc..........

en créant huit colonnes: val_no, val_n, etc....., il devient possible de récupérer les huit valeurs avec une deuxième copie du fichier, une requête : ligne_no=ligne_or et colonne_no=colonne_or vous permet de mettre à jour val_no=val_or de l'autre fichier

etc......

Bien sûr, je l'ai expérimenté sur un autre problème. Je vous recommande la méthode géométrique, décrite en premier qui est plus simple à mettre en oeuvre.

cordialement,

Béatrice FERNANE

Hors ligne

 

Pied de page des forums

Powered by FluxBB