Pages: 1
- Sujet précédent - Ventilation de données de type caractère dans un carroyage - Sujet suivant
#1 Thu 17 September 2009 09:10
Ventilation de données de type caractère dans un carroyage
Bonjour,
dans le cadre d'une étude avifaune je dois croiser des données vectorielles avec un carroyage. Ces données représentent le faciès sédimentaire du fond de la mer, les polygones sont décrits par une donnée textuelle : "vase sableuse", "galets"... etc
Le but de l'opération est évidemment de retranscrire ces faciès sédimentaires dans le carroyage. Mon souhait est que l'on retrouve à l'intérieur de chaque carreau l'attribut de l'objet qui représente la plus grande surface à l'intérieur du carreau. Par exemple pour un carreau dont la surface est représentée par 25% de vase, 15% de vase sableuse, 50% de galets et 10% d'autres matières, je veux retrouver dans le champs faciès du carreau "galets".
Pour ce faire, j'ai testé une jointure surfacique. Le problème de cette méthode est que l'algorithme de MapInfo ne prend pas en compte la notion de surface dominante. Étant donné que je travaille sur des données texte, je ne peux pas faire de moyenne proportionnelle...
Quelqu'un a-t'il une méthode à me proposer ? J'imagine que la fenêtre mapbasic pourrait m'aider mais je ne sais pas coder avec ce langage...
Petite précision, j'utilise la version 6.5 de Mapinfo (possibilité de travailler sur la 8)
Hors ligne
#2 Thu 17 September 2009 09:30
- Maurice
- Membre
- Lieu: Montpellier
- Date d'inscription: 5 Sep 2005
- Messages: 5331
Re: Ventilation de données de type caractère dans un carroyage
Bonjour
Première piste,avant d'avoir le temps d'y réfléchir plus:
- créer une colonne surf_facies dans la table vectorielle et mla mettre à jour
- intersecter cette table avec le carroyage (avec cet outil, par exemple)
- chiader une requête pour avoir le faciès dominant
Il est possible qu'on puisse tout "régler" en une ou quelques requêtes...mais là je pars en réunion !
Hors ligne
#3 Thu 17 September 2009 11:52
- Patrick PALMIER
- Participant actif
- Lieu: Lille
- Date d'inscription: 18 Jan 2007
- Messages: 97
Re: Ventilation de données de type caractère dans un carroyage
Bonjour,
Une méthode est la suivante
si les tables en sont pas trop importantes, je pense que deux requêtes SQL devraient suffire
première requête, on intersecte les carreaux avec le vecteur
select carreau.id, vecteur.facies,proportionoverlap(carreau.obj,vecteur.obj) "psurf"
from carreau, vecteur
where carreau.obj intersects vecteur.obj
order by carreau.id, psurf desc
into etape1
carreau: table carroyage
carreau.id: identifiant de carreau
vecteur: table vecteur du faciès
vecteur.facies: nom du faciès
proportionoverlap calcul la proportion de surface sur carreau recouvert par les objets vecteurs
"psurf" est le nom que l'on donne à proportion overlap
carreau.id, psurf desc signifie qu'on trie les surfaces par ordre decroissant pour chaque carreau
ensuite il suffit d'effectuer une 2è requête
select carreau.id, vecteur.facies
from etape1
group by carreau.id
order by carreau.id
et l'on obtient le résultat obtenu.
Par contre le group by perd l'objet graphique, mais le carreau.id permet d'effectuer la jointure sur la table carreau de base
Hors ligne
#5 Wed 02 May 2012 12:55
- Amelie_D
- Participant occasionnel
- Date d'inscription: 13 Apr 2011
- Messages: 15
Re: Ventilation de données de type caractère dans un carroyage
Bonjour,
je me permet de relancer ce sujet, car j'ai un problème similaire auquel je n'ai pas trouvé de solution...
Je dois étudier l'activité économique d'une ville.
J'ai donc une table ponctuelle "entreprise", avec pour chaque points un champ "activité".
Dans chaque carreau de ma grille se trouvent plusieurs entreprises, et j'aimerais évidemment affecter au carreau une valeur "activité" unique.
Exemple : si dans un carreau se trouvent 3 entreprises "commerce", 2 "production mécanique" et 7 "services à la personne", j'aimerais que la valeur du carreau devienne "service à la personne". Je ne peux pas utiliser de calcul par la surface (puisque j'ai affaire à des points...).
Existe-t-il un équivalent de "proportionoverlap" en "proportioncount" ?
Merci !
Hors ligne
Pages: 1
- Sujet précédent - Ventilation de données de type caractère dans un carroyage - Sujet suivant