locationtech / geotrellis

GeoTrellis is a geographic data processing engine for high performance applications.
http://geotrellis.io
Other
1.33k stars 360 forks source link

Specialize Grid for Int and Long #3428

Closed pomadchin closed 2 years ago

pomadchin commented 2 years ago

Overview

scala> val tile = ShortUserDefinedNoDataArrayTile(Array(), 10, 10, ShortUserDefinedNoDataCellType(-1))
tile: geotrellis.raster.ShortUserDefinedNoDataArrayTile = ArrayTile(10,10,int16ud-1)

scala> trait C { def cols: Int = (tile: CellGrid[Int]).cols }
defined trait C

scala> :javap C
  // ...
  public default int cols();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
         0: getstatic     #71                 // Field $line3/$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$.MODULE$:L$line3/$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$;
         3: invokevirtual #75                 // Method $line3/$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$.tile:()Lgeotrellis/raster/ShortUserDefinedNoDataArrayTile;
         6: invokevirtual #80                 // Method geotrellis/raster/CellGrid.cols$mcI$sp:()I
         9: ireturn
      LineNumberTable:
        line 27: 0
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
            0      10     0  this   L$line4/$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$C;
  // ...

Checklist

Closes https://github.com/locationtech/geotrellis/issues/3427