Fonctionnement de l'outil Intersection ligne 3D avec multipatchs (3D Analyst)

L'outil Intersection ligne 3D avec multipatchs recherche les points d'intersection entre les lignes et les multipatchs. Il peut aussi éventuellement écrire ces points, et/ou les lignes fractionnées à ces emplacements, vers une classe d'entités en sortie. Les calculs sont effectués sur les entités 3D dans l'espace euclidien 3D. L'outil renvoie un nombre (entier) qui représente le nombre de points d'intersection trouvés.

Si une Classe d'entités points en sortie est spécifiée, les OID de la ligne et du multipatch seront écrits en tant qu'attributs pour chaque point, de façon à identifier les deux entités responsables de la création du point. La distance 3D le long de la ligne, du début de la ligne jusqu'au point d'intersection, sera incluse.

Si une Classe d'entités linéaires en sortie est spécifiée, les lignes en entrée sont fractionnées aux points d'intersection avec les multipatches, puis écrites. L'OID de la ligne source ainsi que les OID des multipatches responsables des points de fractionnement source et cible sont inclus. Le nombre -1 permet, en tant que code, d'indiquer que le point de début ou de fin d'une ligne n'est pas un point d'intersection (autrement dit, l'emplacement de fractionnement), mais plutôt le début ou la fin de la ligne d'entrée d'origine. La distance 3D spécifiée pour le point de début d'une ligne en sortie par rapport au début de la ligne en entrée source est incluse. Si une ligne n'intersecte aucun multipatch, elle est copiée sans aucune modification vers la sortie.

Si un multipatch intersecte une ligne d'origine, la ligne d'origine toute entière est représentée par une ou plusieurs nouvelles lignes qui, en cas de combinaison, sont géométriquement équivalentes à la ligne d'origine. La somme de la valeur LENGTH_3D de chaque nouvelle ligne issue d'une ligne d'origine sera égale à la longueur 3D de la ligne d'origine.

Pour chaque nouvelle ligne, la somme de DIST_3D et LENGTH_3D sera égale à la distance 3D le long de la ligne d'origine où se situe la fin de la nouvelle ligne.

Il existe une paire d'ID multipatch pour chaque nouvelle ligne générée. Si une nouvelle ligne provient du début d'une ligne d'origine et qu'il n'y avait pas d'intersection avec un multipatch exactement au début de la ligne d'origine, alors la valeur -1 est attribuée comme ID du multipatch au début de la nouvelle ligne. De même, si une nouvelle ligne provient de la fin d'une ligne d'origine et qu'il n'y avait pas d'intersection avec un multipatch exactement à la fin de la ligne d'origine, alors la valeur -1 est attribuée comme ID du multipatch à la fin de la nouvelle ligne.

Pour chaque nouvelle ligne provenant de l'intérieur d'une ligne d'origine (autrement dit, aucune extrémité commune), le même ID multipatch est attribué pour chaque extrémité si une paire correspondante est détectée ; sinon, le premier ID multipatch trouvé pour chaque extrémité est attribué. Par exemple, si une ligne traverse deux cubes contigus (multipatch 1 et multipatch 2) et rien d'autre, et que les deux extrémités de la ligne d'origine se trouvent à l'extérieur des multipatches, alors quatre nouvelles lignes seront créées. Les paires d'ID multipatch (début et fin) de chaque nouvelle ligne sont (-1, 1) ; (1, 1) ; (2, 2) et (2, -1).


7/10/2012