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