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 !.
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

#1 mar. 13 juin 2017 17:28

mt.siriki
Membre
Date d'inscription: 8 juin 2017
Messages: 2

Problème d’appartenance d’une cellule à une zone donnée

Salut tout le monde, j’ai un problème à résoudre et je souhaite utiliser Mapbasic pour pouvoir y arriver.
En fait je possède la carte d’une zone découpée en un certain nombre de plusieurs sous zones (zones de type 1). La même carte initiale a été utilisé pour effectuer un autre type de découpage en sous zones plus petite que les premières (zones de type 2)

Je souhaite fais appartenir chaque zone de types 2 à une et une seule zone de type 1.

Les zones de type 2 entièrement contenues dans une zone de type 1 ne posent pas de problème dans l’affectation.
Mais il y a des zones de types 2 qui appartiennent à plus d’une zone de type 1.
Dans ce cas une zone de type 2 appartiendra à la zone de type 1 qui occupe sa plus grande surface.

J’ai fait des recherches sur le net sans succès. Votre aide me sera très profitable.

Je joins une image pour illustrer le problème pour plus de compréhension.
Le trait rouge est la frontière entre deux zones de type 1(zone A et B) et les zones de types de 2 sont en couleur.

Merci

http://imageshack.com/a/img923/5576/Ev9ok7.gif

Dernière modification par mt.siriki (ven. 16 juin 2017 08:13)

Hors ligne

 

#2 mar. 13 juin 2017 20:29

nfarah
Membre
Lieu: New York, USA
Date d'inscription: 9 mai 2006
Messages: 342

Re: Problème d’appartenance d’une cellule à une zone donnée

Bonjour,

Peut-être essayer:

Code:

Select zones1.NomZone, zones2.NomZone, CartesianArea(Overlap(zones1.obj,  zones2.obj), "sq m") from zones1, zones2 Where zones1.obj Intersects zones2.Obj into Cheavauchements

Cela produire une table ‘Chevauchements’ avec trois attributs : Nom de zone 1 (de la table ‘zones1’), nom de zone 2 (de la table ‘zones2’) et la superficie de chevauchement entre les deux zones en mètre carré.

Si la projection de vos tables est latitude/longitude, remplacer 'CartesianArea' par 'SphericalArea'.

La requête combine deux requêtes: une effectue une jointure spatiale entre les deux tables car on a utilisé leurs géométries avec une condition les liant : intersection. La deuxième requête calcule la superficie. En combinant les deux on calcule la superficie des intersections entres les zones 1 et 2.

Noureddine Farah
Principal Software Engineer

Pitney Bowes
NY, USA

Hors ligne

 

#3 ven. 16 juin 2017 08:12

mt.siriki
Membre
Date d'inscription: 8 juin 2017
Messages: 2

Re: Problème d’appartenance d’une cellule à une zone donnée

Salut Noureddine,

Ta proposition a bien fonctionné. Elle permet de sélectionner toutes les zones de type 2 et calcule leurs surfaces de chevauchement avec les zones de type 1. Ainsi pour procéder à l'affectation des zones de type 2 aux zones de type 1, j'ai utilisé l'opérateur d'agrégation group by comme suit:

Code:

Select Zone1.NomZone, Zone2.NomZone, Max(CartesianArea(Overlap(zones1.obj,  zones2.obj), "sq m"))  From Chevauchements Group by Zone2.NomZone into TableFinal

TableFinal contient toutes les zones de type 2 affectée à une zone de type 1 dont elles occupe la plus grande surface.


Merci expert.

Hors ligne

 

#4 ven. 16 juin 2017 18:31

nfarah
Membre
Lieu: New York, USA
Date d'inscription: 9 mai 2006
Messages: 342

Re: Problème d’appartenance d’une cellule à une zone donnée

Avec plaisir.

Noureddine Farah

Hors ligne

 

Pied de page des forums

Powered by FluxBB

Partagez  |