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

GEODATA DAYS 2024

#1 Tue 20 March 2007 10:28

NicoJ
Participant occasionnel
Date d'inscription: 20 Mar 2007
Messages: 21

SQL - Sélection de points selon leur distance à un polygone

Bonjour,

Je souhaite sélectionner les points situés à moins de X mètres d'un polygone.
Est-il possible de le faire sans passer par une zone tampon autour du polygone ? (donc probablement via une requête SQL...)

Pour information je suis sous MapInfo 8.0

Merci pour vos conseils

Nicolas

Dernière modification par NicoJ (Tue 20 March 2007 10:31)

Hors ligne

 

#2 Tue 20 March 2007 12:17

Pierre.J
Participant occasionnel
Lieu: Nantes - Paris
Date d'inscription: 1 Nov 2006
Messages: 37

Re: SQL - Sélection de points selon leur distance à un polygone

Tu peux le faire, sans créer d objet tampon. Il suffit d'écrire la requête SQL en lui disant de faire un buffer de tant de circonference, d'un résolution de tant, et de préciser l'unité.
J'ai pas la requête type en tête, si ca t interesse dis moi et je fais mes recherches.
tcho

Hors ligne

 

#3 Tue 20 March 2007 13:40

NicoJ
Participant occasionnel
Date d'inscription: 20 Mar 2007
Messages: 21

Re: SQL - Sélection de points selon leur distance à un polygone

Pierre.J a écrit:

Tu peux le faire, sans créer d objet tampon. Il suffit d'écrire la requête SQL en lui disant de faire un buffer de tant de circonference, d'un résolution de tant, et de préciser l'unité.
J'ai pas la requête type en tête, si ca t interesse dis moi et je fais mes recherches.
tcho


euh oui volontiers...
Déjà la commande pour faire un buffer je vois pas ce que c'est. Je vais essayer de chercher de mon coté...

-edit-
j'ai trouvé ça :
create object as buffer from A width 150 units "m" resolution 12
puis pour détruire le buffer créé "Rollback Table A"

-re edit-
Il est possible d'automatiser la commande Mapbasic ?
ca me donne un truc du genre
create object as buffer from axes width 50 units "m" resolution 100
select A.obj from A where A.obj within B.obj

Et par contre la sélection ne marche pas.. Je pense qu'il faut faire apparaître la table 'B' pour que MI trouve la table d'appartenance du 'B.obj', mais comment ??

Dernière modification par NicoJ (Tue 20 March 2007 14:04)

Hors ligne

 

#4 Tue 20 March 2007 14:02

Pierre.J
Participant occasionnel
Lieu: Nantes - Paris
Date d'inscription: 1 Nov 2006
Messages: 37

Re: SQL - Sélection de points selon leur distance à un polygone

j'ai pas la commande sous la main, mais je te donne ca sous peu. C est pas compliqué à utiliser tu verras.

Hors ligne

 

#5 Tue 20 March 2007 14:04

NicoJ
Participant occasionnel
Date d'inscription: 20 Mar 2007
Messages: 21

Re: SQL - Sélection de points selon leur distance à un polygone

Pierre.J a écrit:

j'ai pas la commande sous la main, mais je te donne ca sous peu. C est pas compliqué à utiliser tu verras.


D'accord merci wink

Hors ligne

 

#6 Tue 20 March 2007 14:29

Pierre.J
Participant occasionnel
Lieu: Nantes - Paris
Date d'inscription: 1 Nov 2006
Messages: 37

Re: SQL - Sélection de points selon leur distance à un polygone

Voila, j'ai retrouvé ce que je cherchais, alors:
Pour sélectionner des objets par rapport à une distance d'un autre, il faut préciser l'objet de référence, puis la table utilisée pour le calcul de distance. La distance que tu veux calculer est définit par rapport à l'enveloppe de l'objet, donc on utilise l'opérateur BUFFER (=zone tampon).
Dans "tables" tu met la table qui contient les éléments que tu veux sélectionner.
Dans "Critères" tu mets le fichier de polygones sur lesquels on applique les buffers.
___________obj Within any (Select buffer(Obj,10,40,"m")from polygones_tampons)_____________
Voici a commande 1à correspond aux nombres de quadrants, 40 à la distance. Tu peux changer l'unité en kilometes en remplacant "m" par "Km". "polygones_tampons" est ta table sur laquelle tu fais le buffer.
L'opérateur géométrique utilisé est Within, mais tu peux aussi utiliser Contains ou Intersects.

Voilou

Enjoy!

Hors ligne

 

#7 Tue 20 March 2007 14:51

NicoJ
Participant occasionnel
Date d'inscription: 20 Mar 2007
Messages: 21

Re: SQL - Sélection de points selon leur distance à un polygone

Alors...
J'ai essayé ta commande, j'imagine que ça doit bien marcher mais MI me sort un probléme de jointure... :-/

En mapbasic ça donne :
Select * from _1, _2 where obj Within any (Select buffer(_2.Obj,100,1000,"m")from _2) into Selection
avec en vert la table contenant le polygone cible du buffer, et en rouge les points à sélectionner.

J'ai l'erreur "Condition de jointure erronée dans la clause Critères (Where)"

J'ai un obj tout seul, je ne sais pas trop quoi en faire.. (surement _1.obj je pense..)
Et même en mettant ça l'erreur reste la même..

Dernière modification par NicoJ (Tue 20 March 2007 14:59)

Hors ligne

 

#8 Tue 20 March 2007 15:01

Pierre.J
Participant occasionnel
Lieu: Nantes - Paris
Date d'inscription: 1 Nov 2006
Messages: 37

Re: SQL - Sélection de points selon leur distance à un polygone

un peu de perseverance!
Essaie encore la facon SQL... Ca marche!
wink

Hors ligne

 

#9 Tue 20 March 2007 15:06

NicoJ
Participant occasionnel
Date d'inscription: 20 Mar 2007
Messages: 21

Re: SQL - Sélection de points selon leur distance à un polygone

mea culpa ^^

En effet ça marche en fait.. Je suis un poil perplexe car j'ai essayé en SQL avant d'essayer le MapBasic... :-/ J'imagine que j'avais du faire une petite erreur quelque part !

En tout cas merci beaucoup pour ton aide ! big_smile
Ca va grandement faciliter ce travail..

Hors ligne

 

#10 Tue 20 March 2007 15:10

Pierre.J
Participant occasionnel
Lieu: Nantes - Paris
Date d'inscription: 1 Nov 2006
Messages: 37

Re: SQL - Sélection de points selon leur distance à un polygone

Tu fais une étude pour quoi?
Si c est pas trop indiscret...smile

Hors ligne

 

#11 Tue 20 March 2007 15:18

NicoJ
Participant occasionnel
Date d'inscription: 20 Mar 2007
Messages: 21

Re: SQL - Sélection de points selon leur distance à un polygone

Je bosse dans une asso qui fait de l'information du public sur les risques.
Et actuellement je chercher à définir l'exposition aux risques de tous les établissements scolaires de deux communautés d'agglomération..
La commande du buffer va essentiellement me servir à gommer d'éventuelles incertitudes dans les mesures GPS (et positionnement sur le scan) et à pallier une imperfection : les écoles sont représentées par des points et non des polygones.. Avec un polygone je serais sûr et certain de la présence d'un risque donné pour un établissement.. Mais avec un point, à 20 mètres près le point est en dehorss de la zone de risque (le point est au centre de l'école).. Je sais pas si je suis clair mais voilà le pourquoi du comment ^^

Hors ligne

 

#12 Tue 20 March 2007 15:24

Pierre.J
Participant occasionnel
Lieu: Nantes - Paris
Date d'inscription: 1 Nov 2006
Messages: 37

Re: SQL - Sélection de points selon leur distance à un polygone

si si c est tres clair, ca a l air interessant en plus.
Mais si tu as le scan25, pourquoi ne pas redigitaliser ces écoles sous forme de polygone?
(j ai supposé scan=scan25)

Hors ligne

 

#13 Tue 20 March 2007 15:26

NicoJ
Participant occasionnel
Date d'inscription: 20 Mar 2007
Messages: 21

Re: SQL - Sélection de points selon leur distance à un polygone

Pierre.J a écrit:

si si c est tres clair, ca a l air interessant en plus.
Mais si tu as le scan25, pourquoi ne pas redigitaliser ces écoles sous forme de polygone?
(j ai supposé scan=scan25)


C'est une éventualité en effet..
Mais 400 écoles ça ferait assez long malheureusement... Donc on verra probablement le passage au polygone si le projet est étendu à l'académie entière.. Yaura beaucoup d'écoles mais ça vaudra le coup de le faire.

Et oui c'est très intéressant ^^ un bon stage tongue

Hors ligne

 

#14 Tue 20 March 2007 15:47

NicoJ
Participant occasionnel
Date d'inscription: 20 Mar 2007
Messages: 21

Re: SQL - Sélection de points selon leur distance à un polygone

Pierre.J a écrit:

tu fais quoi comme étude pour faire un stage comme ca?
En master?


Oui un master gestion des risques naturels et technologiques...

Et pendant que je te tiens, une petite précision..
Quand tu parlais de quadrants, c'est équivalent au lissage ? (quand on fait un tampon avec tables -> tampon)

Hors ligne

 

#15 Tue 20 March 2007 15:53

Pierre.J
Participant occasionnel
Lieu: Nantes - Paris
Date d'inscription: 1 Nov 2006
Messages: 37

Re: SQL - Sélection de points selon leur distance à un polygone

Oui c'est ça, c'est la résolution de ton buffer. Mais attention! Plus tu met de quadrants, plus le calcul sera long...J espere dans ce cas là que tu es sur une bonne bécane...Moi pas....sad

Hors ligne

 

#16 Tue 20 March 2007 16:45

Robin
GeoRezo forever
Lieu: France
Date d'inscription: 31 Aug 2005
Messages: 13614
Site web

Re: SQL - Sélection de points selon leur distance à un polygone

on est en train de flooder le topic je crois


Bien vu, les discussions perso c'est .. perso wink
Je sabre les extra superflus.

Je souhaite sélectionner les points situés à moins de X mètres d'un polygone.


Résumé des réponses et ce qu'il reste à trouver SVP ?

Bien à vous,
Robin.

Hors ligne

 

#17 Wed 21 March 2007 08:28

NicoJ
Participant occasionnel
Date d'inscription: 20 Mar 2007
Messages: 21

Re: SQL - Sélection de points selon leur distance à un polygone

Robin a écrit:

Je souhaite sélectionner les points situés à moins de X mètres d'un polygone.


Résumé des réponses et ce qu'il reste à trouver SVP ?

Bien à vous,
Robin.


La réponse obtenue est celle là :

Pour sélectionner des objets par rapport à une distance d'un autre, il faut préciser l'objet de référence, puis la table utilisée pour le calcul de distance. La distance que tu veux calculer est définit par rapport à l'enveloppe de l'objet, donc on utilise l'opérateur BUFFER (=zone tampon).
Dans "tables" tu met la table qui contient les éléments que tu veux sélectionner.
Dans "Critères" tu mets le fichier de polygones sur lesquels on applique les buffers.
___________obj Within any (Select buffer(Obj,10,40,"m")from polygones_tampons)_____________
Voici a commande 1à correspond aux nombres de quadrants, 40 à la distance. Tu peux changer l'unité en kilometes en remplacant "m" par "Km". "polygones_tampons" est ta table sur laquelle tu fais le buffer.
L'opérateur géométrique utilisé est Within, mais tu peux aussi utiliser Contains ou Intersects.


Et vraisemblablement on a fait le tour de la question wink

Merci à Pierre J et à Georezo

Hors ligne

 

#18 Wed 21 March 2007 17:00

jasper
Participant occasionnel
Lieu: Paris
Date d'inscription: 7 Mar 2007
Messages: 44

Re: SQL - Sélection de points selon leur distance à un polygone

Bonjour.

Il existe une autre méthode, qui a l'avantage de ne pas utiliser les tampons...

Il s'agit d'un programme MapBasic , DistanceCalc.Mbx, fourni avec MapInfo depuis la v8.0 (cela tombe bien pour le demandeur !).
Son principe est justement de calculer/trouver les N distances les plus courtes entre des objets de deux tables distinctes (en créant une nouvelle table de ligne pour le rattachement).

A ma connaissance, il a légèrement évolué dans la version 8.5...

Pour les développeurs MapBasic, ce programme utilise l'instruction 'Nearest'.

Cordialenent,
Jasper.

Hors ligne

 

#19 Thu 22 March 2007 08:47

NicoJ
Participant occasionnel
Date d'inscription: 20 Mar 2007
Messages: 21

Re: SQL - Sélection de points selon leur distance à un polygone

Merci pour la réponse.

J'avoue que le programme en question me perd un peu.. J'ai le sentiment que l'on ne peut faire des requêtes sur la distance que si les tables contiennent des colonnes de distance...
Enfin bref, je m'embrouille un peu je trouve pas ça très fonctionnel, mais c'est un avis personnel. C'est pas de votre faute si je suis réfractaire au fonctionnalités trop compliquées de MI tongue

Hors ligne

 

#20 Thu 22 March 2007 13:30

hanczyk
Participant assidu
Lieu: Châlons-en-Champagne
Date d'inscription: 21 Apr 2006
Messages: 596

Re: SQL - Sélection de points selon leur distance à un polygone

je n'arrive pas à reproduire le SQL.
pouvez-vous me donner la syntaxe exact si :
ma table : A est ma table du polygone
ma table : B est ma table des points
je souhaite sélectionner les points situés à 5 km autour du polygone table A

MapInfo 7.8
par avance merci


Jean-Marc Hanczyk

Hors ligne

 

#21 Thu 22 March 2007 15:09

Maurice
Membre
Lieu: Montpellier
Date d'inscription: 5 Sep 2005
Messages: 5331

Re: SQL - Sélection de points selon leur distance à un polygone

Syntaxe pour la fenêtre MapBasic:
Select * from B where obj within any (select buffer (obj , 12 , 5 , "km") from A) into sel

Hors ligne

 

#22 Thu 22 March 2007 15:21

Robin
GeoRezo forever
Lieu: France
Date d'inscription: 31 Aug 2005
Messages: 13614
Site web

Re: SQL - Sélection de points selon leur distance à un polygone

Grilled par Maurice sad

Et pour info le petit paragraphe qui est situé dans le document de Jacques Paris :

2 – 5 Requêtes basées sur la proximité

Objectifs : Trouver des objets se trouvant à une distance donnée d’un objet sélectionné.

Syntaxe :

Code:

SELECT {liste_expressions|*} FROM <Table> WHERE OBJ WITHIN ANY (SELECT BUFFER ( OBJ , <lissage du buffer>, <distance de sélection> , "unité de distance" ) FROM SELECTION )

Exemple :

Code:

Select * from Forages where obj within any ( select buffer ( obj , 12 , 10 , "km") from selection ) into sel

Dans l’exemple ci dessus tous les points de la table « Forages » se trouvant à moins de 10 km de l’objet sélectionné sont identifiés.

Hors ligne

 

#23 Thu 22 March 2007 15:38

hanczyk
Participant assidu
Lieu: Châlons-en-Champagne
Date d'inscription: 21 Apr 2006
Messages: 596

Re: SQL - Sélection de points selon leur distance à un polygone

merci, en fait mon erreur était la suivante : je mettais mes tables A et B dans tables de ma fenêtre SQL (par habitude !)
je vais de pas télécharger si possible le document de Jacques Paris

merci encore


Jean-Marc Hanczyk

Hors ligne

 

Pied de page des forums

Powered by FluxBB