AYUDA EN LÍNEA
 WINDEVWEBDEV Y WINDEV MOBILE

¡Nueva funcionalidad de WINDEV, WEBDEV y WINDEV Mobile 2024!
Ayuda / WLanguage / Administrar bases de datos / HFSQL / 
  • Parcours des données spatiales : utilisation des index spatiaux
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
Verifica si la intersección de dos geometrías no da como resultado un conjunto vacío.
Observaciones:
  • Para obtener la geometría que corresponde a la intersección, utilice la función GeometryIntersection.
  • Dado que la función GeometryIntersect no devuelve una geometría resultante, es mucho más rápida que la función GeometryIntersection.
Ejemplo
// Example 1: two disjoint polygons
o2DPolygon_1 is Polygon2D
Linestring2DAddPoint(o2DPolygon_1.Outline, -1.00, 3.00)
Linestring2DAddPoint(o2DPolygon_1.Outline, 0.00, 3.00)
Linestring2DAddPoint(o2DPolygon_1.Outline, -2.00, -1.00)
Linestring2DAddPoint(o2DPolygon_1.Outline, -3.00, -1.00)
// Add last point (same as first)
Linestring2DAddPoint(o2DPolygon_1.Outline, -1.00, 3.00)
// Corrects the new geometry
o2DPolygon_1 = GeometryCorrect(o2DPolygon_1)

o2DPolygon_2 is Polygon2D
Linestring2DAddPoint(o2DPolygon_2.Outline, 2.00, 4.00)
Linestring2DAddPoint(o2DPolygon_2.Outline, 3.00, 4.00)
Linestring2DAddPoint(o2DPolygon_2.Outline, 3.00, -2.00)
Linestring2DAddPoint(o2DPolygon_2.Outline, -2.00, -2.00)
// Add last point (same as first)
Linestring2DAddPoint(o2DPolygon_2.Outline, 2.00, 4.00)
// Corrects the new geometry
o2DPolygon_2 = GeometryCorrect(o2DPolygon_2)

Trace(GeometryIntersect(o2DPolygon_1, o2DPolygon_2)) // False
// Example 2: two polygons with an intersection
o2DPolygon_1 is Polygon2D
Linestring2DAddPoint(o2DPolygon_1.Outline, -1.00, 3.00)
Linestring2DAddPoint(o2DPolygon_1.Outline, 0.00, 3.00)
Linestring2DAddPoint(o2DPolygon_1.Outline, -2.00, -1.00)
Linestring2DAddPoint(o2DPolygon_1.Outline, -3.00, -1.00)
// Add last point (same as first)
Linestring2DAddPoint(o2DPolygon_1.Outline, -1.00, 3.00)
// Corrects the new geometry
o2DPolygon_1 = GeometryCorrect(o2DPolygon_1)

o2DPolygon_2 is Polygon2D
Linestring2DAddPoint(o2DPolygon_2.Outline, 1.00, 4.00)
Linestring2DAddPoint(o2DPolygon_2.Outline, 3.00, 4.00)
Linestring2DAddPoint(o2DPolygon_2.Outline, 3.00, 1.00)
Linestring2DAddPoint(o2DPolygon_2.Outline, -1.00, -1.00)
Linestring2DAddPoint(o2DPolygon_2.Outline, -3.00, 1.00)
// Add last point (same as first)
Linestring2DAddPoint(o2DPolygon_2.Outline, 1.00, 4.00)
// Corrects the new geometry
o2DPolygon_2 = GeometryCorrect(o2DPolygon_2)

Trace(GeometryIntersect(o2DPolygon_1, o2DPolygon_2)) // True
Sintaxis
<Result> = GeometryIntersect(<Geometry A> , <Geometry B>)
<Result>: Booleano
  • True si la intersección de dos geometrías no da como resultado un conjunto vacío,
  • False en caso contrario.
Si se produce un error, la variable ErrorOccurred se establece en True. Para obtener más información sobre el error, utilice la función ErrorInfo con la constante errMessage.
<Geometry A>: Variable que contiene datos espaciales
Primera geometría de entrada utilizada para la intersección. Esta geometría puede corresponder a uno de los siguientes tipos de variables:
<Geometry B>: Variable que contiene datos espaciales
Segunda geometría de entrada utilizada para la intersección. Esta geometría puede corresponder a uno de los siguientes tipos de variables:
Observaciones

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 GeometryIntersect.
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)

où :
  • Fonction_WLangage correspond à la fonction GeometryIntersect.
  • 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. 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
Ejemplo:
// Define a triangle delimiting a geographic area
// Store this triangle in a variable of type PolygonGeo 
polyGeo is PolygonGeo
polyGeo.Outline.AddPoint(0n48.8187479172765, 0n1.9550104465229536)
polyGeo.Outline.AddPoint(0n48.685649220185574, 0n2.023674998054354)
polyGeo.Outline.AddPoint(0n48.82612543243871, 0n2.2106580854197566)
polyGeo = GeometryCorrect(polyGeo)
// Search for towns with territory within the specified triangle
NumberOfRecords is int
FOR EACH MunicipalityData where GeometryIntersect(MunicipalityData.geometry, polyGeo) 
	// Name of municipality in a trace window
	Trace(MunicipalityData.MunicipalityName)
END
Clasificación Lógica de negocio / UI: Lógica de negocio
Componente: wd290hf.dll
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: 24/05/2024

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