1

**Python Scripting / Coordinates system influence on chunk rotation matrix**

« **on:**May 07, 2019, 04:26:02 PM »

Hi everyone,

Within my automated pipeline, I've developed a method that calculate and set the smallest bounding box which included a "project contour" polygon.

The calculation has been separated in 3 steps :

- Set the bounding box center

- Set the bounding box size

- Set the bounding box orientation

Everything works very fine until today ... when I decided to include coordinates system in my pipeline.

Indeed, in "Local Coordinates" (

but when I use projected coordinates system (For exemple EPSG::3946 in France), the box orientation doesn't work anymore (Center and size are OK !)...

Here is the following code for bounding box orientation setting (Where vertex_a / vertex_b / vertex_c are the corners of my minimum rotated rectangle that include my polygon) :

After some investigation, my pseudo_region hasn't changed, so the problem is coming from the chunk rotation matrix (

I cannot understand how chunk.crs has inlfuenced the chunk.transform matrix... and have no idea how to fix the problem...

Regards

Within my automated pipeline, I've developed a method that calculate and set the smallest bounding box which included a "project contour" polygon.

The calculation has been separated in 3 steps :

- Set the bounding box center

- Set the bounding box size

- Set the bounding box orientation

Everything works very fine until today ... when I decided to include coordinates system in my pipeline.

Indeed, in "Local Coordinates" (

*'LOCAL_CS["Local Coordinates",LOCAL_DATUM["Local Datum",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]]]'*), everything is OK,but when I use projected coordinates system (For exemple EPSG::3946 in France), the box orientation doesn't work anymore (Center and size are OK !)...

Here is the following code for bounding box orientation setting (Where vertex_a / vertex_b / vertex_c are the corners of my minimum rotated rectangle that include my polygon) :

Code: [Select]

` cos_teta = (vertex_c.x - vertex_a.x) / vertex_a.distance(vertex_c)`

sin_teta = (vertex_c.y - vertex_a.y) / vertex_a.distance(vertex_c)

__pseudo_region.rot = [[sin_teta, -cos_teta, 0],

[cos_teta, sin_teta, 0],

[0, 0, 1]]

chunk.region.rot = chunk.transform.matrix.rotation().inv() * __pseudo_region.rot

After some investigation, my pseudo_region hasn't changed, so the problem is coming from the chunk rotation matrix (

*chunk.transform.matrix.rotation()*).I cannot understand how chunk.crs has inlfuenced the chunk.transform matrix... and have no idea how to fix the problem...

Regards