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

Pour sécuriser votre compte sur les forums du GeoRezo, nous demandons de changer votre mot de passe.

Vous allez recevoir un message pour effectuer ce changement de mot de passe.

Merci de bien respecter les règles préconisées.

#1 Tue 27 January 2015 10:45

Frago
Participant actif
Date d'inscription: 5 Oct 2011
Messages: 53

Requête spatiale de proximité

Bonjour,

Je souhaiterais pouvoir croiser deux tables de ponctuels entre elles en fonction d'un critère de proximité (magasins à 500m d'un habitant).

Je dispose de la table MAGASIN (avec un IDU_MAG) et de la table HABITANT (avec un IDU_HAB).

Je suis parvenu à compter le nombre de magasins à 500m. d'un habitant. Voici ma requête :

Code:

Select HABITANT.IDU_HAB, count(*) from HABITANT  where obj within any ( select buffer ( obj , 12 , 500 , "m" ) from MAGASIN where IDU_MAG like "G01" or IDU_MAG like "G02" or IDU_MAG like "G03" or IDU_MAG like "G05" ) group by HABITANT.IDU_HAB into count_MAG_HAB

Ainsi j'ai un résultat du type :
IDU_HAB ; count
001 ; 2
002 ; 1
003 ; 4
004 ; 2
... ; ...


Je souhaitais avoir s'il était possible de rajouter une colonne qui comporterait les noms de magasins concaténés. Exemple :
IDU_HAB ; count ; IDU_MAG
001 ; 2 ; G01-G05
002 ; 1 ; G01
003 ; 4 ; G01 - G02 - G03 - G05
004 ; 2 ; G03 - G05
... ; ... ; ...


Difficile (ou impossible) sous mapinfo sans système de base de données relationnelles ?
Le cas échant, serait-il possible d'obtenir :
IDU_HAB ; IDU_MAG
001 ; G01
001 ; G05
002 ; G01
003 ; G01
003 ; G02
003 ; G03
003 ; G05
004 ; G03
004 ; G05
... ; ...


Merci d'avance pour votre aide,

Hors ligne

 

#2 Tue 27 January 2015 12:20

Spacejo
Membre
Lieu: Nancy
Date d'inscription: 17 Aug 2008
Messages: 2511

Re: Requête spatiale de proximité

Salut,

Une possibilité pour ta première requête:

Select HABITANT.IDU_HAB, count(*) from HABITANT  where obj within any ( select buffer ( obj , 12 , 500 , "m" ) from MAGASIN where IDU_MAG in (G01,G02,G03,G05) group by HABITANT.IDU_HAB into count_MAG_HAB


Maintenant pour avoir ce que tu désires -> il serait plus facile de passer sur Excel et ses tableaux dynamiques.
Pour le cas échant:
Il te faut une jointure spatiale entre tes 2 tables.

Select * from TableHabitant, TableBufferMagasin where TableHabitant.obj within TableBufferMagasin.obj into Jointure


A+
Joël

Hors ligne

 

#3 Tue 27 January 2015 12:53

Spacejo
Membre
Lieu: Nancy
Date d'inscription: 17 Aug 2008
Messages: 2511

Re: Requête spatiale de proximité

Aprés avoir fait ta jointure.
Une solution est de faire un export en .txt, .dbf ou .csv (Table -> Exporter) puis importer ce fichier dans Excel (2003 pour le .dbf) et voici un exemple:
Voir --> Transformation d'une BD en Tableau
Dans --> http://boisgontierjacques.free.fr/pages … #TableauBD
--> http://boisgontierjacques.free.fr/fichi … ableau.xls
A+
Joël

Dernière modification par Spacejo (Tue 27 January 2015 12:55)

Hors ligne

 

Pied de page des forums

Powered by FluxBB