#1 Tue 13 June 2017 17:28
- mt.siriki
- Juste Inscrit !
- Date d'inscription: 8 Jun 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
[img]http://imageshack.com/a/img923/5576/Ev9ok7.gif[/img]
Dernière modification par mt.siriki (Fri 16 June 2017 08:13)
Hors ligne
#2 Tue 13 June 2017 20:29
- nfarah
- Participant assidu
- Lieu: New York, USA
- Date d'inscription: 9 May 2006
- Messages: 352
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 Fri 16 June 2017 08:12
- mt.siriki
- Juste Inscrit !
- Date d'inscription: 8 Jun 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 Fri 16 June 2017 18:31
- nfarah
- Participant assidu
- Lieu: New York, USA
- Date d'inscription: 9 May 2006
- Messages: 352
Re: Problème d’appartenance d’une cellule à une zone donnée
Avec plaisir.
Noureddine Farah
Hors ligne