DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / WLangage / Gestion des bases de données / HFSQL / Gestion des données spatiales
  • Parcours des données spatiales : utilisation des index spatiaux
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadWidget IOSApple WatchMac CatalystUniversal Windows 10 App
Autres
Procédures stockées
Vérifie si deux géométries ont une intersection non vide.
Remarques :
  • Pour connaître la géométrie correspondant à l'intersection, utilisez la fonction GéométrieIntersection.
  • La fonction GéométrieIntersecte ne renvoyant pas la géométrie résultat, elle est beaucoup plus rapide que la fonction GéométrieIntersection.
Exemple
// Exemple 1 : deux polygones disjoints
oPolygone2D_1 est un Polygone2D
Polyligne2DAjoutePoint(oPolygone2D_1.Contour, -1.00, 3.00)
Polyligne2DAjoutePoint(oPolygone2D_1.Contour, 0.00, 3.00)
Polyligne2DAjoutePoint(oPolygone2D_1.Contour, -2.00, -1.00)
Polyligne2DAjoutePoint(oPolygone2D_1.Contour, -3.00, -1.00)
// Ajout du dernier point (identique au premier)
Polyligne2DAjoutePoint(oPolygone2D_1.Contour, -1.00, 3.00)
// Corrige la géométrie créée
oPolygone2D_1 = GéométrieCorrige(oPolygone2D_1)

oPolygone2D_2 est un Polygone2D
Polyligne2DAjoutePoint(oPolygone2D_2.Contour, 2.00, 4.00)
Polyligne2DAjoutePoint(oPolygone2D_2.Contour, 3.00, 4.00)
Polyligne2DAjoutePoint(oPolygone2D_2.Contour, 3.00, -2.00)
Polyligne2DAjoutePoint(oPolygone2D_2.Contour, -2.00, -2.00)
// Ajout du dernier point (identique au premier)
Polyligne2DAjoutePoint(oPolygone2D_2.Contour, 2.00, 4.00)
// Corrige la géométrie créée
oPolygone2D_2 = GéométrieCorrige(oPolygone2D_2)

Trace(GéométrieIntersecte(oPolygone2D_1, oPolygone2D_2)) // Faux
// Exemple 2 : deux polygones avec une intersection
oPolygone2D_1 est un Polygone2D
Polyligne2DAjoutePoint(oPolygone2D_1.Contour, -1.00, 3.00)
Polyligne2DAjoutePoint(oPolygone2D_1.Contour, 0.00, 3.00)
Polyligne2DAjoutePoint(oPolygone2D_1.Contour, -2.00, -1.00)
Polyligne2DAjoutePoint(oPolygone2D_1.Contour, -3.00, -1.00)
// Ajout du dernier point (identique au premier)
Polyligne2DAjoutePoint(oPolygone2D_1.Contour, -1.00, 3.00)
// Corrige la géométrie créée
oPolygone2D_1 = GéométrieCorrige(oPolygone2D_1)

oPolygone2D_2 est un Polygone2D
Polyligne2DAjoutePoint(oPolygone2D_2.Contour, 1.00, 4.00)
Polyligne2DAjoutePoint(oPolygone2D_2.Contour, 3.00, 4.00)
Polyligne2DAjoutePoint(oPolygone2D_2.Contour, 3.00, 1.00)
Polyligne2DAjoutePoint(oPolygone2D_2.Contour, -1.00, -1.00)
Polyligne2DAjoutePoint(oPolygone2D_2.Contour, -3.00, 1.00)
// Ajout du dernier point (identique au premier)
Polyligne2DAjoutePoint(oPolygone2D_2.Contour, 1.00, 4.00)
// Corrige la géométrie créée
oPolygone2D_2 = GéométrieCorrige(oPolygone2D_2)

Trace(GéométrieIntersecte(oPolygone2D_1, oPolygone2D_2)) // Vrai
Syntaxe
<Résultat> = GéométrieIntersecte(<Géométrie A> , <Géométrie B>)
<Résultat> : Booléen
  • Vrai si les deux géométries ont une intersection non vide,
  • Faux dans le cas contraire.
En cas d'erreur, la variable ErreurDétectée est à Vrai. Pour connaître le libellé de l'erreur, utilisez la fonction ErreurInfo avec la constante errMessage.
<Géométrie A> : Variable correspondant à des données spatiales
Première géométrie à prendre en compte pour l'intersection. Cette géométrie peut correspondre à un des types de variables suivants :
<Géométrie B> : Variable correspondant à des données spatiales
Seconde géométrie à prendre en compte pour l'intersection. Cette géométrie peut correspondre à un des types de variables suivants :
Remarques

Parcours des données spatiales : utilisation des index spatiaux

Il est possible d'effectuer un parcours sur un fichier de données avec un filtre concernant des données spatiales. Par exemple, le filtre utilisé peut être basé sur le résultat de la fonction GéométrieIntersecte.
Pour optimiser ce filtre sur des données spatiales, il est recommandé d'utiliser les index spatiaux via la syntaxe suivante :
POUR TOUT Fichier AVEC Fonction_WLangage(Fichier.Rubrique_spatiale, Variable_spatiale)

où :
  • Fonction_WLangage correspond à la fonction GéométrieIntersecte.
  • Rubrique_spatiale correspond à une rubrique spatiale du fichier de données. Cette rubrique doit :
    • être de type "Données géographiques" ou de type "Données géométriques".
    • être définie comme une "Clé spatiale".
  • Variable_spatiale correspond à une variable spatiale donnée, utilisée pour la comparaison avec la rubrique spatiale. Cette variable est par exemple, une variable de type PolygoneGéo, Polygone2D, etc.
Remarque : Bien que disponible, la syntaxe "POUR TOUT Fichier" n'est pas recommandée car cette syntaxe n'utilisant pas les index spatiaux, ses performances ne sont pas optimisées. En effet, dans ce cas, tout le fichier de données est parcouru : les index spatiaux ne sont pas utilisés.
POUR TOUT Fichier
SI Fonction_WLangage(Fichier.Rubrique_spatiale, Variable_spatiale) = Vrai ALORS
   ...
   FIN
FIN
Exemple :
// Définition d'un triangle délimitant une zone géographique
// Mémorisation de ce triangle dans une variable de type PolygoneGéo 
polyGeo est un PolygoneGéo
polyGeo.Contour.AjoutePoint(0n48.8187479172765, 0n1.9550104465229536)
polyGeo.Contour.AjoutePoint(0n48.685649220185574, 0n2.023674998054354)
polyGeo.Contour.AjoutePoint(0n48.82612543243871, 0n2.2106580854197566)
polyGeo = GéométrieCorrige(polyGeo)
// Recherche les communes ayant un territoire dans le triangle ciblé
nbEnregs est un entier
POUR CHAQUE DatasCommunes AVEC GéométrieIntersecte(DatasCommunes.geometry, polyGeo) 
	// Nom de la commune dans une trace
	Trace(DatasCommunes.NomCommune)
FIN
Classification Métier / UI : Code métier
Composante : wd300hf.dll
Version minimum requise
  • Version 2024
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire

Dernière modification : 16/07/2024

Signaler une erreur ou faire une suggestion | Aide en ligne locale