Suite

Objet mobile de dimension fixe sans distorsion

Objet mobile de dimension fixe sans distorsion


J'essaie de déplacer un objet polygone dans un fichier de formes vers un nouvel emplacement. Je vais effectuer un décalage afin que le processus puisse être automatisé en déplaçant l'objet vers une nouvelle coordonnée géographique ou déplacé d'une certaine distance définie par rapport à la position actuelle. Si les méthodes sont différentes, concentrons-nous sur le déplacement de ma boîte rigide vers une nouvelle coordonnée.

L'objet a des dimensions définies (disons 10m x 10m) mais le système de coordonnées de référence est un système de coordonnées géographiques. En tant que tel, les dimensions changent lorsque je le déplace loin de son emplacement actuel.

Faits à prendre en compte dans la solution :

  • Les solutions ArcPy fonctionneront
  • Utilisation d'ArcGIS Desktop 10.1
  • Un mouvement du centre de gravité serait acceptable, car c'est le décalage par rapport à la position initiale que l'objet sera déplacé ; alternativement, il pourrait être déplacé de n'importe quel point arbitraire tant que le point est connu
  • Le système de coordonnées est également arbitraire. Les solutions peuvent préciser ou être générales à cet égard.
  • Le processus doit être répété des centaines de fois

La question demande un mouvement rigide de l'objet sur une idéalisation de la surface terrestre. Pour les ellipsoïdes, les seules familles continues de mouvements rigides possibles sont les rotations autour de l'axe de la Terre. Mais pour un modèle sphéroïdal, il existe une famille tridimensionnelle de mouvements rigides et ils peuvent déplacer un objet de n'importe quel endroit à n'importe quel autre (pour deux dimensions de mouvement) ainsi que le faire pivoter autour de son centre en cours de route (pour la troisième dimension de mouvement). Dans la mesure où un sphéroïde est suffisamment précis pour le but - et ce sera dans la plupart des applications - la tâche est alors d'accomplir un tel mouvement.

Ces mouvements sont obtenus en faisant tourner la sphère. En général, cela se fait en convertissant les sommets de l'objet en coordonnées 3D centrées sur la terre, en leur appliquant une matrice de rotation 3 par 3 et en projetant le résultat (en utilisant n'importe quelle projection adaptée à la destination). C'est assez simple et rapide, mais cela nécessite d'écrire du code pour accéder et modifier les coordonnées du sommet.

Avec un SIG, une rotation générale peut être effectuée sans un tel codage détaillé. Une méthode exploite la représentation angulaire d'Euler des rotations. Par exemple, nous pourrions spécifier la rotation dans la convention ZXZ' : une rotation arbitraire peut être obtenue par une rotation autour de l'axe Z (l'axe polaire de la Terre), autour de l'axe X (qui s'étend du centre jusqu'au point à (lat ,lon) = (0,0) là où l'équateur et le premier méridien se rencontrent), puis à nouveau autour de l'axe Z.

Pour tourner autour de l'axe Z, utiliser n'importe quelle projection cylindrique (y compris Plate Carree et Mercator, qui sont toutes deux couramment utilisées). Créez une nouvelle projection dans laquelle la quantité de rotation est soustrait de toutes les coordonnées horizontales. Cela peut être accompli en soustrayant la quantité de rotation du méridien de référence (sous forme d'angle) ou de la fausse abscisse (sous forme de distance). (En rendant l'échelle à l'équateur vraie, un degré de rotation correspond à 1/360 de la longueur de l'équateur projeté. Utilisez-le pour convertir une rotation en degrés en distance.) Reprojetez l'entité dans cette nouvelle projection, mais ne modifiez pas ses métadonnées de projection. Lorsque le SIG affiche le Nouveau fonction à l'aide de la vieille informations de projection, il semblera avoir été tourné de manière rigide autour de l'axe Z.

Une entité polygonale représentant l'Italie (en jaune) a été tournée de -40 degrés dans l'océan Atlantique moyen (en violet) en la reprojetant d'une projection Mercator standard dans une projection Mercator dans laquelle 40 degrés ont été ajoutés au méridien central. Les métadonnées de la forme reprojetée spécifient toujours la projection Mercator d'origine.

Une façon de tourner autour de l'axe X utilise une projection Mercator transverse (avec un méridien central à +-90 degrés, selon celui qui couvre le mieux la caractéristique). Changer le faux Nord dans les métadonnées de projection devrait faire l'affaire. Une rotation autour de n'importe quel axe situé dans le plan équatorial peut être accomplie de la même manière.

Après avoir effectué les trois rotations, effectuez une reprojection, si nécessaire, dans le système de coordonnées final souhaité.

En résumé, n'importe quelle caractéristique SIG peut être tournée pour occuper n'importe quelle position souhaitée à n'importe quelle orientation souhaitée au moyen de pas plus de quatre reprojections appropriées (d'origine à cylindrique à TM de nouveau à cylindrique à finale) et peut-être avec juste une ou deux.

Attention aux complications chaque fois que la caractéristique ou l'une de ses configurations intermédiaires chevauche le méridien +-180 degrés ou l'un des pôles. Aucun SIG (à ma connaissance) n'est capable de traiter correctement et de manière transparente toutes ces situations (comme l'attestent de nombreux fils de discussion sur ce site). Habituellement, la solution (qui nous est imposée) consiste à diviser ces caractéristiques en portions qui ne seront pas soumises à de telles complications, puis à les réassembler par la suite.


Voir la vidéo: Comment flouter ou cacher un objet en mouvement Magix Video