AYUDA EN LÍNEA
 WINDEVWEBDEV Y WINDEV MOBILE

¡Nueva funcionalidad de WINDEV, WEBDEV y WINDEV Mobile 2024!
Ayuda / WLanguage / Administrar bases de datos / HFSQL / 
  • Présentation
  • Données spatiales
  • Les différents types de données
  • Remarques
  • Gestion des données spatiales dans l'analyse
  • Gestion des index spatiaux
  • Importer et exporter des données spatiales
  • Obtenir des données
  • Exporter des données spatiales
  • Manipuler les données spatiales en WLangage
  • Afficher des données géographiques sur un champ Carte
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
Présentation
A partir de la version 2024, il est possible de stocker et de manipuler des données géométriques et géographiques dans une base de données HFSQL.
Les données géométriques correspondent à des géométries définies dans un plan en 2 dimensions, à l'aide de leurs coordonnées (abscisse et ordonnée).
Les données géographiques correspondent à des géométries définies à la surface de la terre, à l'aide de leur latitude et de leur longitude.
Dans les deux cas, les géométries possibles sont les points, les lignes (ou polylignes) et les polygones.
Grâce aux données spatiales, il est possible de stocker et de représenter des points d'intérêt, des routes, des parcelles de terrains dans des fichiers de données HFSQL. De nombreuses opérations peuvent alors être effectuées sur ces données spatiales telles que des calculs de surface, des recherches d'éléments présents dans une zone, etc.
Remarques :
  • La norme OGC Simple Features est utilisée.
  • La gestion des données spatiales est compatible avec la norme "OpenGIS".
Données spatiales

Les différents types de données

Deux grandes catégories de données peuvent être représentées :
  • les données en 2 dimensions à l'aide des types "géométriques",
  • les données géographiques à l'aide des types "géographiques".
Dans ces deux catégories, les mêmes "géométries" sont disponibles. Le WLangage propose pour chaque géométrie des types de variables spécifiques :
GéométrieType géométriqueType géographique
PointPoint2DPointGéo
PolylignePolyligne2DPolyligneGéo
PolygonePolygone2DPolygoneGéo
MultiPointMultiPoint2DMultiPointGéo
MultiPolyligneMultiPolyligne2DMultiPolyligneGéo
MultiPolygoneMultiPolygone2DMultiPolygoneGéo

Les suffixes "2D" et "Géo" permettent de différencier les deux domaines pour les différentes variables. Ces types "2D" et "Géo" sont incompatibles entre eux : il est impossible de calculer la distance entre un point géométrique et un point géographique, puisqu'ils existent dans des espaces différents.
Un type spécifique "Géométrie" permet de stocker n'importe quel type de géométrie, aussi bien 2D que géographique.

Remarques

  • La définition des différents géométries nécessite une certaine rigueur mathématique. Ainsi, la définition d'un polygone nécessite la fermeture de ce polygone. Il est donc nécessaire que le dernier point du polygone corresponde au premier point de ce même polygone. Ce point est donc présent deux fois dans la définition du polygone.
  • Validité des données : Pour pouvoir être enregistrées dans les fichiers de données HFSQL, les données doivent être valides. Il est possible de vérifier la validité des données et si nécessaire de les corriger via les fonctions du WLangage.
  • Approximation géographique : Les calculs géographiques sont effectués en utilisant une approximation du rayon de la Terre. L'approximation utilisée est l'approximation ellipsoïde.
Gestion des données spatiales dans l'analyse
Pour stocker des données spatiales dans un fichier de données HFSQL, trois types de rubriques sont disponibles :
  • Données géométriques.
  • Données géographiques.
  • Données géométriques et géographiques quelconques.
Les rubriques de type "Données géométriques (x,y)" permettent de stocker des données utilisant le plan en 2 dimensions. Dans une rubrique de type "Données géométriques", il sera possible de stocker une donnée correspondant à l'un des types de variable géométrique. Ce type de rubrique peut être défini comme "Clé spatiale".
Les rubriques de type "Données géographiques (lat.,long.)" permettent de stocker des données géographiques utilisant la sphère terrestre. Dans une rubrique de type "Données géographiques", il sera possible de stocker une donnée correspondant à l'un des types de variable géographique. Ce type de rubrique peut être défini comme "Clé spatiale".
Les rubriques de type "Données géométriques et géographiques quelconques" permettent de stocker tous les types de données, géographiques ou géométriques. Les données sont stockées sous forme de "Géométrie (coordonnées 2D ou géographique)". Ce type de rubrique ne peut pas être défini comme "Clé spatiale".
Les fichiers de données contenant des données spatiales peuvent ensuite être manipulés avec les fonctions classiques du WLangage (fonctions d'ajout, de parcours, etc). Les rubriques spatiales peuvent être lues et modifiées via les différents types WLangage correspondants.

Gestion des index spatiaux

Les index spatiaux permettent d'optimiser les parcours dans les fichiers contenant des données spatiales. Une rubrique spatiale est indexée si elle est définie comme "Clé spatiale".
A partir de la version 2024 Update 2, il est possible de connaître les rubriques définies comme "clé spatiale" grâce à la fonction HListeClésSpatiales.
Il est possible d'effectuer un parcours sur un fichier de données avec un filtre concernant des données spatiales. 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.RubriqueSpatiale, variable_spatiale)
// Traitement
FIN
où :
  • Fonction_WLangage correspond à la fonction utilisée pour le filtre.
  • 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 de parcours optimisé :
// 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 des communes qui ont leur territoire contenu entièrement dans le triangle ciblé
nbEnregs est un entier
POUR CHAQUE DatasCommunes AVEC GéométrieContient(DatasCommunes.geometry, polyGeo) 
	// Nom de la commune dans une trace
	Trace(DatasCommunes.NomCommune)
FIN
Importer et exporter des données spatiales

Obtenir des données

Plusieurs méthodes permettent d'obtenir des données spatiales :
  • De nombreuses sources permettent de récupérer des données spatiales concernant divers sujets. Des sites gouvernementaux (IGN, etc.) contiennent des jeux de données pour le cadastre, les zones naturelles protégées, les routes et rivières, etc. Ces jeux de données sont souvent disponibles au format GeoJSON. Ce format peut être manipulé directement en utilisant les fonctionnalités JSON du WLangage, afin de le convertir en géométrie pour les intégrer dans les fichiers de données HFSQL.
  • Il est également possible d'importer des données spatiales en utilisant le format WKT.

Exporter des données spatiales

Pour exporter les données spatiales présentes dans les fichiers de données HFSQL, il est possible d'utiliser le format DSV ou WKT grâce aux fonctions GéométrieSérialiseDSV et GéométrieSérialiseWKT.
Manipuler les données spatiales en WLangage
Le WLangage propose de nombreuses fonction permettant de manipuler les données spatiales. La plupart de ces fonctions peuvent être utilisées aussi bien avec des données géométriques qu'avec des données géographiques. Pour plus de détails, consultez Fonctions de gestion des données spatiales.
Les données spatiales peuvent également être manipulées via des fonctions SQL dédiées. Pour plus de détails, consultez Fonctions SQL permettant de gérer les données spatiales.

Afficher des données géographiques sur un champ Carte

Les données géographiques peuvent être affichées sur un champ Carte. Pour cela, il est nécessaire de transformer les polygones géométriques en polygones affichable sur un champ Carte (variable de type CartePolygone).
Exemple de code pouvant être utilisé :
PROCÉDURE PolygoneGéoVersCartePolygone(polyGeo est un PolygoneGéo)

PolygoneGéoPourChampCarte est un CartePolygone

PremièrePosition est une géoPosition	// pour mémorisation du premier point
PositionCourante est une géoPosition	// pour mémoriser le point en cours

// Parcours des points géographiques du polygone
POUR i = 1 _À_ polyGeo.Contour.Point..Occurrence

	SI i = 1 ALORS
		// Mémorisation du 1er point 
		PremièrePosition.Latitude = polyGeo.Contour.Point[i].Latitude
		PremièrePosition.Longitude = polyGeo.Contour.Point[i].Longitude
	FIN

	// Récupération d'un point géographique
	PositionCourante.Latitude = polyGeo.Contour.Point[i].Latitude
	PositionCourante.Longitude = polyGeo.Contour.Point[i].Longitude

	// Mémorisation du point dans le tableau des points composant la géométrie en 2 dimensions
	// pour la dessiner dans le champ Carte
	Ajoute(PolygoneGéoPourChampCarte.Point, PositionCourante)
FIN
RENVOYER PolygoneGéoPourChampCarte
Versión mínima requerida
  • Versión 2024
Comentarios
Haga clic en [Agregar] para publicar un comentario

Última modificación: 27/03/2024

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