[ 
https://issues.apache.org/jira/browse/SIS-548?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Johann Sorel updated SIS-548:
-----------------------------
    Description: 
The following test case produces an intersection like below. This intersection 
covers 360° of longitude, while a much smaller intersection was expected. This 
is caused by an unexpected "wraparound" applied by 
{{CoordinateOperationFinder}}.

{noformat}
Column: [-179 … 181] (361 cellules)
Row:    [   3 …   3]   (1 cellules)
{noformat}

Test cases:

{code:java}
public static void main(String[] args) {
    CoordinateReferenceSystem crs = CommonCRS.WGS84.normalizedGeographic();
    AffineTransform2D gridToCrs = new AffineTransform2D(1, 0, 0, -1, -103.5, 
52.5);
    GridGeometry tilingScheme = new GridGeometry(new GridExtent(1, 1), 
PixelInCell.CELL_CENTER, gridToCrs, crs);
    AffineTransform2D gridToCrs2 = new AffineTransform2D(
            2.7770063871146905E-4, 0,
            0, -2.7770063871146905E-4,
            77.00013885031936,
            49.99986114968065);

    GridGeometry tileGrid = new GridGeometry(new GridExtent(3601, 3601), 
PixelInCell.CELL_CENTER, gridToCrs2, crs);
    GridExtent intersection = tilingScheme.derive()
            .clipping(GridClippingMode.NONE)
            .rounding(GridRoundingMode.ENCLOSING)
            .subgrid(tileGrid).getIntersection();

    System.out.println(intersection);
}
{code}

{code:java}
    public static void main(String[] args) {
        CoordinateReferenceSystem crs = CommonCRS.WGS84.normalizedGeographic();
        AffineTransform2D gridToCrs = new AffineTransform2D(
                0.0020833333333333333, 0,
                0, -0.0020833333333333333,
                -179.99895833333332,
                -45.001041666666666);
        GridGeometry tilingScheme = new GridGeometry(
                new GridExtent(null, new long[]{0, -64800}, new 
long[]{172799,21599}, true),
                PixelInCell.CELL_CENTER, gridToCrs, crs);

        AffineTransform2D gridToCrs2 = new AffineTransform2D(
                0.001373291015625, 0,
                0, -0.001373291015625,
                -179.99931335449220,
                89.99931335449219);

        GridGeometry tileGrid = new GridGeometry(new GridExtent(256, 256), 
PixelInCell.CELL_CENTER, gridToCrs2, crs);
        GridGeometry intersection = tilingScheme.derive()
                .subgrid(tileGrid).build();

        System.out.println(tilingScheme);
        System.out.println(tileGrid);
        System.out.println(intersection);
    }
{code}

This issue has been reported by Johann.

  was:
The following test case produces an intersection like below. This intersection 
covers 360° of longitude, while a much smaller intersection was expected. This 
is caused by an unexpected "wraparound" applied by 
{{CoordinateOperationFinder}}.

{noformat}
Column: [-179 … 181] (361 cellules)
Row:    [   3 …   3]   (1 cellules)
{noformat}

Test case:

{code:java}
public static void main(String[] args) {
    CoordinateReferenceSystem crs = CommonCRS.WGS84.normalizedGeographic();
    AffineTransform2D gridToCrs = new AffineTransform2D(1, 0, 0, -1, -103.5, 
52.5);
    GridGeometry tilingScheme = new GridGeometry(new GridExtent(1, 1), 
PixelInCell.CELL_CENTER, gridToCrs, crs);
    AffineTransform2D gridToCrs2 = new AffineTransform2D(
            2.7770063871146905E-4, 0,
            0, -2.7770063871146905E-4,
            77.00013885031936,
            49.99986114968065);

    GridGeometry tileGrid = new GridGeometry(new GridExtent(3601, 3601), 
PixelInCell.CELL_CENTER, gridToCrs2, crs);
    GridExtent intersection = tilingScheme.derive()
            .clipping(GridClippingMode.NONE)
            .rounding(GridRoundingMode.ENCLOSING)
            .subgrid(tileGrid).getIntersection();

    System.out.println(intersection);
}
{code}

This issue has been reported by Johann.


> Unexpected wraparound during intersection of grid geometries
> ------------------------------------------------------------
>
>                 Key: SIS-548
>                 URL: https://issues.apache.org/jira/browse/SIS-548
>             Project: Spatial Information Systems
>          Issue Type: Improvement
>          Components: Coverage
>    Affects Versions: 1.1, 1.2
>            Reporter: Martin Desruisseaux
>            Assignee: Martin Desruisseaux
>            Priority: Major
>             Fix For: 1.3
>
>
> The following test case produces an intersection like below. This 
> intersection covers 360° of longitude, while a much smaller intersection was 
> expected. This is caused by an unexpected "wraparound" applied by 
> {{CoordinateOperationFinder}}.
> {noformat}
> Column: [-179 … 181] (361 cellules)
> Row:    [   3 …   3]   (1 cellules)
> {noformat}
> Test cases:
> {code:java}
> public static void main(String[] args) {
>     CoordinateReferenceSystem crs = CommonCRS.WGS84.normalizedGeographic();
>     AffineTransform2D gridToCrs = new AffineTransform2D(1, 0, 0, -1, -103.5, 
> 52.5);
>     GridGeometry tilingScheme = new GridGeometry(new GridExtent(1, 1), 
> PixelInCell.CELL_CENTER, gridToCrs, crs);
>     AffineTransform2D gridToCrs2 = new AffineTransform2D(
>             2.7770063871146905E-4, 0,
>             0, -2.7770063871146905E-4,
>             77.00013885031936,
>             49.99986114968065);
>     GridGeometry tileGrid = new GridGeometry(new GridExtent(3601, 3601), 
> PixelInCell.CELL_CENTER, gridToCrs2, crs);
>     GridExtent intersection = tilingScheme.derive()
>             .clipping(GridClippingMode.NONE)
>             .rounding(GridRoundingMode.ENCLOSING)
>             .subgrid(tileGrid).getIntersection();
>     System.out.println(intersection);
> }
> {code}
> {code:java}
>     public static void main(String[] args) {
>         CoordinateReferenceSystem crs = 
> CommonCRS.WGS84.normalizedGeographic();
>         AffineTransform2D gridToCrs = new AffineTransform2D(
>                 0.0020833333333333333, 0,
>                 0, -0.0020833333333333333,
>                 -179.99895833333332,
>                 -45.001041666666666);
>         GridGeometry tilingScheme = new GridGeometry(
>                 new GridExtent(null, new long[]{0, -64800}, new 
> long[]{172799,21599}, true),
>                 PixelInCell.CELL_CENTER, gridToCrs, crs);
>         AffineTransform2D gridToCrs2 = new AffineTransform2D(
>                 0.001373291015625, 0,
>                 0, -0.001373291015625,
>                 -179.99931335449220,
>                 89.99931335449219);
>         GridGeometry tileGrid = new GridGeometry(new GridExtent(256, 256), 
> PixelInCell.CELL_CENTER, gridToCrs2, crs);
>         GridGeometry intersection = tilingScheme.derive()
>                 .subgrid(tileGrid).build();
>         System.out.println(tilingScheme);
>         System.out.println(tileGrid);
>         System.out.println(intersection);
>     }
> {code}
> This issue has been reported by Johann.



--
This message was sent by Atlassian Jira
(v8.20.7#820007)

Reply via email to