AYUDA EN LÍNEA
 WINDEVWEBDEV Y WINDEV MOBILE

¡Nueva funcionalidad de WINDEV, WEBDEV y WINDEV Mobile 2024!
Ayuda / WLanguage / Administrar bases de datos / HFSQL / 
  • Propriétés spécifiques à la description des variables de type
  • Fonctions manipulant le type
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaReportes y ConsultasCódigo de Usuario (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Código Navegador
WINDEV Mobile
AndroidWidget Android iPhone/iPadIOS WidgetApple WatchMac CatalystUniversal Windows 10 App
Otros
Procedimientos almacenados
 
Le type Forme permet stocker n'importe quel type de géométrie : un point, un polygone, etc.
Ainsi, une fonction WLangage pouvant renvoyer un point ou un polygone selon la valeur de ses paramètres peut avoir une variable de type Forme comme type de retour.
Lorsqu'une variable de type Forme est déclarée, elle est vide jusqu'à sa première affectation.
Remarque : Pour plus de détails sur la déclaration de ce type de variable et l'utilisation des propriétés WLangage, consultez Déclaration d'une variable.
Ejemplo
// Exemple 1 : récupération d'un point sans vérification
f is Geometry()
// Récupération de la géométrie
f = GetPoint() // GetPoint est une procédure permettant de récupérer un point
p is Point2D = f
// Exemple 2 : vérification du type de la géométrie : on s'assure d'avoir un point avant de tenter la conversion
f is Geometry 
// Récupération de la géométrie ...
// Vérification de la géométrie
IF f.Type = gtPoint2D THEN
   monPoint2D is Point2D
   monPoint2D = f
   //...
END
// Exemple 3 : il est pas possible de changer le type d'une géométrie
point is Point2D
polyligne is Linestring2D
f is Geometry // Forme est vide et peut prendre n'importe quel type de géométrie
f = point // Forme contient maintenant un Point2D.
f = polyligne // Forme contient maintenant un Polyligne2D.
// Exemple 4 : récupération d'un polygone géographique sans vérification
// On peut se passer de la déclaration d'une géométrie intermédiaire et
// directement convertir le résultat d'une fonction

f = GetGéométrie() // GetGéométrie est une procédure permettant de récupérer une géométrie

IF f.Type = gtPolygonGeo THEN
   polygone is PolygonGeo
   polygone = f
   // ...
END
// Exemple 5 : si on ne sait pas quel est le type de la géométrie que l'on récupère,
// on peut coder un comportement par type de géométrie
géométrieInconnue is Geometry
géométrieInconnue = GetGéométrieInconnue() 
// GetGéométrieInconnue est une procédure permettant de récupérer une géométrie
SWITCH géométrieInconnue.Type 
CASE gtPoint2D :
       // ...
CASE gtLinestring2D :
       // ...
CASE gtPolygon2D :
       // ...
OTHER CASE:
       // ...
END
Propiedades

Propriétés spécifiques à la description des variables de type

Les propriétés suivantes peuvent être utilisées pour manipuler une variable de type :
Nom de la propriétéType manipuléEffet
TypeConstante de type EntierType de la géométrie en cours :
  • tfInvalide : Type invalide.
  • tfMultiPoint2D : Ensemble de points 2D.
  • tfMultiPointGéo : Ensemble de points géographiques.
  • tfMultiPolygone2D : Ensemble de polygones 2D.
  • tfMultiPolygoneGéo : Ensemble de polygones géographiques.
  • tfMultiPolyligne2D : Ensemble de polylignes 2D.
  • tfMultiPolyligneGéo : Ensemble de polylignes géographiques.
  • tfPoint2D : Point en 2 dimensions, identifié par des coordonnées X et Y dans le plan cartésien.
  • tfPointGéo : Point géographique, identifié par une latitude et une longitude.
  • tfPolygone2D : Ensemble de segments droits qui se suivent et qui se rejoignent pour former un polygone.
  • tfPolygoneGéo : Ensemble de segments courbés qui se suivent et qui se rejoignent pour former un polygone (la courbe de ces segments respecte la courbure de la Terre).
  • tfPolyligne2D : Ensemble de segments droits qui se suivent.
  • tfPolyligneGéo : Ensemble de segments courbés qui se suivent (la courbe de ces segments respecte la courbure de la Terre).
Cette propriété est disponible en lecture uniquement.
Observaciones

Fonctions manipulant le type

Les fonctions manipulant des variables de type sont les suivantes :
Permet de sérialiser une géométrie au format Well Known Text (WKT). La chaîne renvoyée est au format ANSI.
Renvoie vrai si les deux formes se touchent.
Deux formes se touchent si les contours des deux formes ont une intersection, mais que les intérieurs n'ont *pas* d'intersection. Deux formes se touchent si elles ont un point ou un segment de leurs contours en commun.
Voir les images ci-dessous pour un exemple de chacune des trois situations.
Vérifie si deux formes ont une intersection non vide. Cette fonction ne renvoie pas la forme résultant de l'intersection, mais seulement si l'intersection existe ou non. Elle est donc beaucoup plus rapide que la fonction de calcul d'intersection entre deux formes.
Sérialise une forme géométrique en utilisant le format DSV spécifié. Ce format permet de choisir quels éléments textuels séparent les différents éléments géométriques dans le texte.
Important : la chaîne renvoyée par cette fonction est TOUJOURS une chaîne ANSI ne pouvant contenir que des caractères ASCII. Il en va de même des séparateurs, qui doivent tous être des chaînes ANSI avec seulement des caractères ASCII.
Renvoie vrai si la forme A contient la forme B, c'est-à-dire que B est complètement dans A. En détail : - Il n'existe pas de point de B dans l'extérieur de A : tout point de B est soit dans l'intérieur de A, soit dans son contour. - Il existe au moins un point de l'intérieur de B dans l'intérieur de A.
Renvoie vrai si la forme A est complètement dans la forme B, c'est-à-dire que B contient complètement A. En détail : - Il n'existe pas de point de A dans l'extérieur de B : tout point de A est soit dans l'intérieur de B, soit dans son contour. - Il existe au moins un point de l'intérieur de A dans l'intérieur de B.
Permet de savoir si tout point de la forme B se trouve à l'intérieur ou dans le contour de la forme A. C'est équivalent à renvoyer vrai s'il n'existe aucun point de B dans l'extérieur de A.
Permet de savoir si tout point de la forme A se trouve à l'intérieur ou dans le contour de la forme B. C'est équivalent à renvoyer vrai s'il n'existe aucun point de A dans l'extérieur de B.
Calcule l'intersection entre la première forme passée en paramètre et la seconde. Cela renvoie une nouvelle forme, qui contient une collection de formes d'un type donné : MultiPoint, MultiPolyligne, ou MultiPolygone.
Dans le cas où l'intersection entre deux formes est constituée d'un seul élément, il s'agit tout de même d'une collection, avec un seul élément. Dans le cas où l'intersection est vide (si les géométries passées en paramètre sont disjointes), la collection renvoyée est vide. Dans le cas où le résultat de l'intersection est disjoint (par exemple en faisant l'intersection de deux polygones en "U"), la collection contient plusieurs éléments.
Si le type des formes passées en paramètres est connu, alors le type du résultat est également pré-déterminé. La plupart des applications géospatiales ne travaillant pas avec des colonnes de données hétérogènes (rubrique de type "Forme" autorisant de mixer des points, lignes, polygones etc au sein d'une même rubrique), il n'y a donc en général pas besoin de vérifier le type des formes renvoyées par la fonction.
Calcule l'union entre la première forme passée en paramètre et la seconde. Cela renvoie une nouvelle forme, qui contient une collection de formes d'un type donné : MultiPoint, MultiPolyligne, ou MultiPolygone.
Dans le cas où l'union entre deux formes est constituée d'un seul élément, il s'agit tout de même d'une collection, avec un seul élément. Dans le cas où l'union est vide (par exemple en faisant l'union de multipolygones vides), la collection renvoyée est vide. Dans le cas où le résultat de l'union est disjoint (par exemple en faisant l'union de deux formes disjointes), la collection contient plusieurs éléments.
Si le type des formes passées en paramètres est connu, alors le type du résultat est également pré-déterminé. La plupart des applications géospatiales ne travaillant pas avec des colonnes de données hétérogènes (rubrique de type "Forme" autorisant de mixer des points, lignes, polygones etc au sein d'une même rubrique), il n'y a donc en général pas besoin de vérifier le type des formes renvoyées par la fonction.
Calcule la différence entre la première forme passée en paramètre et la seconde. Cela renvoie une nouvelle forme, qui contient une collection de formes d'un type donné : MultiPoint, MultiPolyligne, ou MultiPolygone.
Dans le cas où la différence entre deux formes est constituée d'un seul élément, il s'agit tout de même d'une collection, avec un seul élément. Dans le cas où différence est vide (par exemple en calculant la différence d'une forme avec elle-même), la collection renvoyée est vide. Dans le cas où le résultat de la différence est disjoint (par exemple en coupant un polygone en deux avec un autre polygone), la collection contient plusieurs éléments.
Cette fonction prend une forme en paramètre, et renvoie une nouvelle version "corrigée" de la forme passée en paramètre. Il est possible de corriger automatiquement un certain nombre de problèmes dans la forme d'origine, telle qu'une mauvaise orientation des points dans un polygone par exemple. Il n'est toutefois pas toujours possible de le faire.
Vérifie si la forme passée en paramètre est valide au sens de la norme OGC. Renvoie vrai si la forme est valide. Si elle ne l'est pas, renvoie faux et remplit le message d'erreur avec un message détaillant la raison pour laquelle la forme est invalide.
Calcule la différence symétrique entre les deux formes passées en paramètre. Cette opération est commutative. Cela renvoie une nouvelle forme, qui contient une collection de formes d'un type donné : MultiPoint, MultiPolyligne, ou MultiPolygone.
Dans le cas où la différence symétrique entre deux formes est constituée d'un seul élément, il s'agit tout de même d'une collection, avec un seul élément. Dans le cas où différence symétrique est vide (par exemple si les formes sont égales), la collection renvoyée est vide. Dans le cas où le résultat de la différence symétrique est disjoint, la collection contient plusieurs éléments.
Calcule l'aire d'une forme donnée. L'unité du résultat est le carré de l'unité utilisée pour définir les points des formes de l'entrée.
Exemples : - En 2D, si un programme WinDev considère que les polygones définissent leurs coordonnées en mètres, alors le résultat est exprimé en mètres carrés. Au contraire, si un programme utilise des miles, alors le résultat sera en miles carrées. - En coordonnées géographiques (latitude, longitude), renvoie l'aire en mètres carrés.
Calcule le périmètre d'une forme donnée. Cette fonction s'applique aux polygones et aux multipolygones. Elle renvoie systématiquement 0 pour les autres types de formes. Le périmètre d'un polygone est égal à la somme de la longueur de son contour, plus de la longueur de chacun de ses trous. Le périmètre d'un multipolygone est égal à la somme du périmètre des polygones le constituant.
Calcule l’enveloppe convexe de la géométrie passée en argument. L'enveloppe convexe est la plus petite géométrie convexe qui englobe toute la forme passée en paramètre.
Une forme est "convexe" si, lorsque l'on parcourt son contour, on tourne toujours dans le même sens lorsque l'on arrive sur un point. Sinon, la forme est "concave".
  • pratique, l'enveloppe convexe est ce que l'on obtiendrait si on essayait de placer un élastique autour de la géométrie d'entrée**. Il s'agit en général d'un polygone, sauf cas particuliers :
- L'enveloppe convexe d'un ensemble de points colinéaires est une polyligne. - L'enveloppe convexe d'un point, ou de plusieurs points identiques, est un point. - L'enveloppe convexe d'une polyligne colinéaire est une polyligne (similaire au point 1).
Renvoie vrai si les formes sont spatialement égales, c'est-à-dire si la première est incluse dans la deuxième, et si la deuxième est incluse dans la première.
Deux formes peuvent donc être spatialement égales sans avoir le même contenu : il faut simplement qu'elles décrivent la même chose spatialement.
Les types des géométries doivent être les mêmes sans quoi le résultat sera toujours faux, à l'exception des polygones et multipolygones qui peuvent décrire une même surface.
Calcule la longueur d'une forme donnée.
Pour les formes 2D, calcule la distance en utilisant la norme euclidienne (Pythagore). La distance est renvoyée dans la même unité que celle donnée aux coordonnées des points.
Pour les formes géographiques, utilise un modèle approché de la Terre pour prendre en compte sa courbure. La distance est renvoyée en mètres.
Calcule la distance entre deux formes. Pour les formes autres que les points, cette distance correspond à la distance entre les points les plus proches que l'on puisse trouver entre les deux formes.
Pour les formes 2D, calcule la distance en utilisant la norme euclidienne (Pythagore). La distance est renvoyée dans la même unité que celle donnée aux coordonnées des points.
Pour les formes géographiques, utilise le modèle approché de la Terre WGS84 pour prendre en compte sa courbure. La distance est renvoyée en mètres.
Permet de savoir si deux formes sont disjointes, c'est-à-dire si leur intersection est vide.
Permet de savoir si les formes se chevauchent, c'est-à-dire si elles ont la même dimension et que leurs intérieurs ont une intersection non vide de la même dimension que les formes passées en paramètres, différente des deux paramètres. Il faut de plus que chaque forme ait au moins un point à l'intérieur de l'autre.
Construit une forme géométrique à partir d'une représentation textuelle au format WKT. La forme générée sera une forme géospatiale (les points stockant donc une paire latitude-longitude).
Construit une forme géométrique à partir d'une représentation textuelle au format WKT. La forme générée sera une forme 2D (les points stockant donc une paire X Y).
Permet de savoir si deux formes se croisent. La notion de croisement est très spécifique. Deux formes se croisent si : - Les intérieurs de la forme A et de la forme B ont au moins un point en commun. - L'intérieur de A n'a pas tous ses points dans l'intérieur de B, et vice-versa : A ne doit pas contenir B et B ne doit pas contenir A. - L'intersection des intérieurs doit avoir une dimension inférieure au maximum de la dimension des arguments.
Exemple 1 : deux polygones (qui sont donc de dimension 2) ayant une partie de leur intérieur en commun ne se croisent pas, car leur intersection est également un polygone, dont la dimension est égale à la dimension des deux arguments (2). Toutefois, ces polygones se chevauchent et s'intersectent.
Exemple 2 : une polyligne passant au travers d'un polygone mais ayant des points hors de ce polygone croise le polygone, car l'intersection entre les deux formes est une polyligne, dont la dimension est inférieure à celle du polygone.
Permet de construire une forme géographique à partir de sa représentation au format GeoJSON. Le format GeoJSON est un format d'échange de données géospatiales basé sur le format JSON, et décrit une manière universelle de partager ces données géographiques entre différentes applications.
Ce format peut contenir soit une forme, soit une "feature" (~= "caractéristique"), un objet JSON contenant une forme ainsi qu'un ensemble de propriétés associées à cette forme. La fonction FormeDésérialiseGeoJSON renvoyant seulement une forme, tenter de lire une "feature" va lever une erreur, afin que l'appelant ne perde pas par inadvertance des données qui seraient présentes dans la "feature". Pour éviter cette erreur, il est recommandé de lire le JSON manuellement avec les fonctions WLangage associées, et d'appeler FormeDésérialiseGeoJSON spécifiquement sur le membre "geometry" de la feature, qui est nécessairement une forme pouvant être lue directement par FormeDésérialiseGeoJSON. Il est également possible de choisir d'ignorer les propriétés des "features" en passant le paramètre gjIgnorePropriétés.
Versión mínima requerida
  • Versión 2024
Esta página también está disponible para…
Comentarios
Haga clic en [Agregar] para publicar un comentario

Última modificación: 15/02/2024

Señalar un error o enviar una sugerencia | Ayuda local