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é ?

#1 Thu 17 September 2009 09:10

Fauvegui
Participant occasionnel
Lieu: Le Petit Quevilly
Date d'inscription: 13 Mar 2008
Messages: 13
Site web

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  ! smile

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

 

#4 Thu 17 September 2009 12:22

Fauvegui
Participant occasionnel
Lieu: Le Petit Quevilly
Date d'inscription: 13 Mar 2008
Messages: 13
Site web

Re: Ventilation de données de type caractère dans un carroyage

Merci beaucoup, c'est exactement ce que je voulais faire. L'opération a très bien marché.

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

 

Pied de page des forums

Powered by FluxBB