2121
2222package org .locationtech .rasterframes .util
2323
24- import org .locationtech .rasterframes .ref .{DelegatingRasterSource , RasterRef , RFRasterSource }
24+ import org .locationtech .rasterframes .ref .{DelegatingRasterSource , RFRasterSource , RasterRef }
2525import org .locationtech .rasterframes .ref ._
2626import com .esotericsoftware .kryo .Kryo
2727import geotrellis .raster .io .geotiff .reader .GeoTiffInfo
28- import geotrellis .spark .store .kryo .KryoRegistrator
28+ import geotrellis .spark .store .kryo .{GeometrySerializer }
29+ import org .apache .spark .serializer .KryoRegistrator
2930
3031/**
3132 *
@@ -35,7 +36,210 @@ import geotrellis.spark.store.kryo.KryoRegistrator
3536 */
3637class RFKryoRegistrator extends KryoRegistrator {
3738 override def registerClasses (kryo : Kryo ): Unit = {
38- super .registerClasses(kryo)
39+
40+ // TreeMap serializaiton has a bug; we fix it here as we're stuck on low
41+ // Kryo versions due to Spark. Hack-tastic.
42+ // kryo.register(classOf[util.TreeMap[_, _]], (new XTreeMapSerializer).asInstanceOf[com.esotericsoftware.kryo.Serializer[TreeMap[_, _]]])
43+
44+ kryo.register(classOf [(_,_)])
45+ kryo.register(classOf [:: [_]])
46+ kryo.register(classOf [geotrellis.raster.ByteArrayFiller ])
47+
48+ // CellTypes
49+ kryo.register(geotrellis.raster.BitCellType .getClass) // Bit
50+ kryo.register(geotrellis.raster.ByteCellType .getClass) // Byte
51+ kryo.register(geotrellis.raster.ByteConstantNoDataCellType .getClass)
52+ kryo.register(classOf [geotrellis.raster.ByteUserDefinedNoDataCellType ])
53+ kryo.register(geotrellis.raster.UByteCellType .getClass) // UByte
54+ kryo.register(geotrellis.raster.UByteConstantNoDataCellType .getClass)
55+ kryo.register(classOf [geotrellis.raster.UByteUserDefinedNoDataCellType ])
56+ kryo.register(geotrellis.raster.ShortCellType .getClass) // Short
57+ kryo.register(geotrellis.raster.ShortConstantNoDataCellType .getClass)
58+ kryo.register(classOf [geotrellis.raster.ShortUserDefinedNoDataCellType ])
59+ kryo.register(geotrellis.raster.UShortCellType .getClass) // UShort
60+ kryo.register(geotrellis.raster.UShortConstantNoDataCellType .getClass)
61+ kryo.register(classOf [geotrellis.raster.UShortUserDefinedNoDataCellType ])
62+ kryo.register(geotrellis.raster.IntCellType .getClass) // Int
63+ kryo.register(geotrellis.raster.IntConstantNoDataCellType .getClass)
64+ kryo.register(classOf [geotrellis.raster.IntUserDefinedNoDataCellType ])
65+ kryo.register(geotrellis.raster.FloatCellType .getClass) // Float
66+ kryo.register(geotrellis.raster.FloatConstantNoDataCellType .getClass)
67+ kryo.register(classOf [geotrellis.raster.FloatUserDefinedNoDataCellType ])
68+ kryo.register(geotrellis.raster.DoubleCellType .getClass) // Double
69+ kryo.register(geotrellis.raster.DoubleConstantNoDataCellType .getClass)
70+ kryo.register(classOf [geotrellis.raster.DoubleUserDefinedNoDataCellType ])
71+
72+ // ArrayTiles
73+ kryo.register(classOf [geotrellis.raster.BitArrayTile ]) // Bit
74+ kryo.register(classOf [geotrellis.raster.ByteArrayTile ]) // Byte
75+ kryo.register(classOf [geotrellis.raster.ByteRawArrayTile ])
76+ kryo.register(classOf [geotrellis.raster.ByteConstantNoDataArrayTile ])
77+ kryo.register(classOf [geotrellis.raster.ByteUserDefinedNoDataArrayTile ])
78+ kryo.register(classOf [geotrellis.raster.UByteArrayTile ]) // UByte
79+ kryo.register(classOf [geotrellis.raster.UByteRawArrayTile ])
80+ kryo.register(classOf [geotrellis.raster.UByteConstantNoDataArrayTile ])
81+ kryo.register(classOf [geotrellis.raster.UByteUserDefinedNoDataArrayTile ])
82+ kryo.register(classOf [geotrellis.raster.ShortArrayTile ]) // Short
83+ kryo.register(classOf [geotrellis.raster.ShortRawArrayTile ])
84+ kryo.register(classOf [geotrellis.raster.ShortConstantNoDataArrayTile ])
85+ kryo.register(classOf [geotrellis.raster.ShortUserDefinedNoDataArrayTile ])
86+ kryo.register(classOf [geotrellis.raster.UShortArrayTile ]) // UShort
87+ kryo.register(classOf [geotrellis.raster.UShortRawArrayTile ])
88+ kryo.register(classOf [geotrellis.raster.UShortConstantNoDataArrayTile ])
89+ kryo.register(classOf [geotrellis.raster.UShortUserDefinedNoDataArrayTile ])
90+ kryo.register(classOf [geotrellis.raster.IntArrayTile ]) // Int
91+ kryo.register(classOf [geotrellis.raster.IntRawArrayTile ])
92+ kryo.register(classOf [geotrellis.raster.IntConstantNoDataArrayTile ])
93+ kryo.register(classOf [geotrellis.raster.IntUserDefinedNoDataArrayTile ])
94+ kryo.register(classOf [geotrellis.raster.FloatArrayTile ]) // Float
95+ kryo.register(classOf [geotrellis.raster.FloatRawArrayTile ])
96+ kryo.register(classOf [geotrellis.raster.FloatConstantNoDataArrayTile ])
97+ kryo.register(classOf [geotrellis.raster.FloatUserDefinedNoDataArrayTile ])
98+ kryo.register(classOf [geotrellis.raster.DoubleArrayTile ]) // Double
99+ kryo.register(classOf [geotrellis.raster.DoubleRawArrayTile ])
100+ kryo.register(classOf [geotrellis.raster.DoubleConstantNoDataArrayTile ])
101+ kryo.register(classOf [geotrellis.raster.DoubleUserDefinedNoDataArrayTile ])
102+
103+ kryo.register(classOf [Array [geotrellis.raster.Tile ]])
104+ kryo.register(classOf [Array [geotrellis.raster.TileFeature [_,_]]])
105+ kryo.register(classOf [geotrellis.raster.Tile ])
106+ kryo.register(classOf [geotrellis.raster.TileFeature [_,_]])
107+
108+ kryo.register(classOf [geotrellis.raster.ArrayMultibandTile ])
109+ kryo.register(classOf [geotrellis.raster.CompositeTile ])
110+ kryo.register(classOf [geotrellis.raster.ConstantTile ])
111+ kryo.register(classOf [geotrellis.raster.CroppedTile ])
112+ kryo.register(classOf [geotrellis.raster.Raster [_]])
113+ kryo.register(classOf [geotrellis.raster.RasterExtent ])
114+ kryo.register(classOf [geotrellis.raster.CellGrid [_]])
115+ kryo.register(classOf [geotrellis.raster.CellSize ])
116+ kryo.register(classOf [geotrellis.raster.GridBounds [_]])
117+ kryo.register(classOf [geotrellis.raster.GridExtent [_]])
118+ kryo.register(classOf [geotrellis.raster.mapalgebra.focal.TargetCell ])
119+ kryo.register(classOf [geotrellis.raster.summary.GridVisitor [_, _]])
120+ kryo.register(geotrellis.raster.mapalgebra.focal.TargetCell .All .getClass)
121+ kryo.register(geotrellis.raster.mapalgebra.focal.TargetCell .Data .getClass)
122+ kryo.register(geotrellis.raster.mapalgebra.focal.TargetCell .NoData .getClass)
123+
124+ kryo.register(classOf [geotrellis.layer.SpatialKey ])
125+ kryo.register(classOf [geotrellis.layer.SpaceTimeKey ])
126+ kryo.register(classOf [geotrellis.store.index.rowmajor.RowMajorSpatialKeyIndex ])
127+ kryo.register(classOf [geotrellis.store.index.zcurve.ZSpatialKeyIndex ])
128+ kryo.register(classOf [geotrellis.store.index.zcurve.ZSpaceTimeKeyIndex ])
129+ kryo.register(classOf [geotrellis.store.index.hilbert.HilbertSpatialKeyIndex ])
130+ kryo.register(classOf [geotrellis.store.index.hilbert.HilbertSpaceTimeKeyIndex ])
131+ kryo.register(classOf [geotrellis.vector.ProjectedExtent ])
132+ kryo.register(classOf [geotrellis.vector.Extent ])
133+ kryo.register(classOf [geotrellis.proj4.CRS ])
134+
135+ // UnmodifiableCollectionsSerializer.registerSerializers(kryo)
136+ kryo.register(geotrellis.raster.buffer.Direction .Center .getClass)
137+ kryo.register(geotrellis.raster.buffer.Direction .Top .getClass)
138+ kryo.register(geotrellis.raster.buffer.Direction .Bottom .getClass)
139+ kryo.register(geotrellis.raster.buffer.Direction .Left .getClass)
140+ kryo.register(geotrellis.raster.buffer.Direction .Right .getClass)
141+ kryo.register(geotrellis.raster.buffer.Direction .TopLeft .getClass)
142+ kryo.register(geotrellis.raster.buffer.Direction .TopRight .getClass)
143+ kryo.register(geotrellis.raster.buffer.Direction .BottomLeft .getClass)
144+ kryo.register(geotrellis.raster.buffer.Direction .BottomRight .getClass)
145+
146+ /* Exhaustive Registration */
147+ kryo.register(classOf [Array [Double ]])
148+ kryo.register(classOf [Array [Float ]])
149+ kryo.register(classOf [Array [Int ]])
150+ kryo.register(classOf [Array [String ]])
151+ kryo.register(classOf [Array [org.locationtech.jts.geom.Coordinate ]])
152+ kryo.register(classOf [Array [org.locationtech.jts.geom.LinearRing ]])
153+ kryo.register(classOf [Array [org.locationtech.jts.geom.Polygon ]])
154+ kryo.register(classOf [Array [geotrellis.store.avro.AvroRecordCodec [Any ]]])
155+ kryo.register(classOf [Array [geotrellis.layer.SpaceTimeKey ]])
156+ kryo.register(classOf [Array [geotrellis.layer.SpatialKey ]])
157+ kryo.register(classOf [Array [geotrellis.vector.Feature [_, Any ]]])
158+ kryo.register(classOf [Array [geotrellis.vector.MultiPolygon ]])
159+ kryo.register(classOf [Array [geotrellis.vector.Point ]])
160+ kryo.register(classOf [Array [geotrellis.vector.Polygon ]])
161+ kryo.register(classOf [Array [scala.collection.Seq [Any ]]])
162+ kryo.register(classOf [Array [(Any , Any )]])
163+ kryo.register(classOf [Array [(Any , Any , Any )]])
164+ kryo.register(classOf [org.locationtech.jts.geom.Coordinate ])
165+ kryo.register(classOf [org.locationtech.jts.geom.Envelope ])
166+ kryo.register(classOf [org.locationtech.jts.geom.GeometryFactory ])
167+ kryo.register(classOf [org.locationtech.jts.geom.impl.CoordinateArraySequence ])
168+ kryo.register(classOf [org.locationtech.jts.geom.impl.CoordinateArraySequenceFactory ])
169+ kryo.register(classOf [org.locationtech.jts.geom.LinearRing ])
170+ kryo.register(classOf [org.locationtech.jts.geom.MultiPolygon ])
171+ kryo.register(classOf [org.locationtech.jts.geom.Point ])
172+ kryo.register(classOf [org.locationtech.jts.geom.Polygon ])
173+ kryo.register(classOf [org.locationtech.jts.geom.PrecisionModel ])
174+ kryo.register(classOf [org.locationtech.jts.geom.PrecisionModel .Type ])
175+ kryo.register(classOf [geotrellis.raster.histogram.FastMapHistogram ])
176+ kryo.register(classOf [geotrellis.raster.histogram.Histogram [AnyVal ]])
177+ kryo.register(classOf [geotrellis.raster.histogram.MutableHistogram [AnyVal ]])
178+ kryo.register(classOf [geotrellis.raster.histogram.StreamingHistogram ])
179+ kryo.register(classOf [geotrellis.raster.histogram.StreamingHistogram .DeltaCompare ])
180+ kryo.register(classOf [geotrellis.raster.histogram.StreamingHistogram .Delta ])
181+ kryo.register(classOf [geotrellis.raster.histogram.StreamingHistogram .Bucket ])
182+ kryo.register(classOf [geotrellis.raster.density.KernelStamper ])
183+ kryo.register(classOf [geotrellis.raster.ProjectedRaster [_]])
184+ kryo.register(classOf [geotrellis.raster.TileLayout ])
185+ kryo.register(classOf [geotrellis.layer.TemporalProjectedExtent ])
186+ kryo.register(classOf [geotrellis.raster.buffer.BufferSizes ])
187+ kryo.register(classOf [geotrellis.store.avro.AvroRecordCodec [Any ]])
188+ kryo.register(classOf [geotrellis.store.avro.AvroUnionCodec [Any ]])
189+ kryo.register(classOf [geotrellis.store.avro.codecs.KeyValueRecordCodec [Any , Any ]])
190+ kryo.register(classOf [geotrellis.store.avro.codecs.TupleCodec [Any , Any ]])
191+ kryo.register(classOf [geotrellis.layer.KeyBounds [Any ]])
192+ kryo.register(classOf [geotrellis.spark.knn.KNearestRDD .Ord [Any ]])
193+ kryo.register(classOf [geotrellis.vector.Feature [_, Any ]])
194+ kryo.register(classOf [geotrellis.vector.Geometry ], new GeometrySerializer [geotrellis.vector.Geometry ])
195+ kryo.register(classOf [geotrellis.vector.GeometryCollection ])
196+ kryo.register(classOf [geotrellis.vector.LineString ], new GeometrySerializer [geotrellis.vector.LineString ])
197+ kryo.register(classOf [geotrellis.vector.MultiLineString ], new GeometrySerializer [geotrellis.vector.MultiLineString ])
198+ kryo.register(classOf [geotrellis.vector.MultiPoint ], new GeometrySerializer [geotrellis.vector.MultiPoint ])
199+ kryo.register(classOf [geotrellis.vector.MultiPolygon ], new GeometrySerializer [geotrellis.vector.MultiPolygon ])
200+ kryo.register(classOf [geotrellis.vector.Point ])
201+ kryo.register(classOf [geotrellis.vector.Polygon ], new GeometrySerializer [geotrellis.vector.Polygon ])
202+ kryo.register(classOf [geotrellis.vector.SpatialIndex [Any ]])
203+ kryo.register(classOf [java.lang.Class [Any ]])
204+ kryo.register(classOf [java.util.TreeMap [Any , Any ]])
205+ kryo.register(classOf [java.util.HashMap [Any , Any ]])
206+ kryo.register(classOf [java.util.HashSet [Any ]])
207+ kryo.register(classOf [java.util.LinkedHashMap [Any , Any ]])
208+ kryo.register(classOf [java.util.LinkedHashSet [Any ]])
209+ kryo.register(classOf [org.apache.hadoop.io.BytesWritable ])
210+ kryo.register(classOf [org.apache.hadoop.io.BigIntWritable ])
211+ kryo.register(classOf [Array [org.apache.hadoop.io.BigIntWritable ]])
212+ kryo.register(classOf [Array [org.apache.hadoop.io.BytesWritable ]])
213+ kryo.register(classOf [org.locationtech.proj4j.CoordinateReferenceSystem ])
214+ kryo.register(classOf [org.locationtech.proj4j.datum.AxisOrder ])
215+ kryo.register(classOf [org.locationtech.proj4j.datum.AxisOrder .Axis ])
216+ kryo.register(classOf [org.locationtech.proj4j.datum.Datum ])
217+ kryo.register(classOf [org.locationtech.proj4j.datum.Ellipsoid ])
218+ kryo.register(classOf [org.locationtech.proj4j.datum.Grid ])
219+ kryo.register(classOf [org.locationtech.proj4j.datum.Grid .ConversionTable ])
220+ kryo.register(classOf [org.locationtech.proj4j.util.PolarCoordinate ])
221+ kryo.register(classOf [org.locationtech.proj4j.util.FloatPolarCoordinate ])
222+ kryo.register(classOf [org.locationtech.proj4j.util.IntPolarCoordinate ])
223+ kryo.register(classOf [Array [org.locationtech.proj4j.util.FloatPolarCoordinate ]])
224+ kryo.register(classOf [org.locationtech.proj4j.datum.PrimeMeridian ])
225+ kryo.register(classOf [org.locationtech.proj4j.proj.LambertConformalConicProjection ])
226+ kryo.register(classOf [org.locationtech.proj4j.proj.LongLatProjection ])
227+ kryo.register(classOf [org.locationtech.proj4j.proj.TransverseMercatorProjection ])
228+ kryo.register(classOf [org.locationtech.proj4j.proj.MercatorProjection ])
229+ kryo.register(classOf [org.locationtech.proj4j.units.DegreeUnit ])
230+ kryo.register(classOf [org.locationtech.proj4j.units.Unit ])
231+ kryo.register(classOf [scala.collection.mutable.WrappedArray .ofInt])
232+ kryo.register(classOf [scala.collection.mutable.WrappedArray .ofRef[AnyRef ]])
233+ kryo.register(classOf [scala.collection.Seq [Any ]])
234+ kryo.register(classOf [(Any , Any , Any )])
235+ kryo.register(geotrellis.proj4.LatLng .getClass)
236+ kryo.register(geotrellis.layer.EmptyBounds .getClass)
237+ kryo.register(scala.collection.immutable.Nil .getClass)
238+ kryo.register(scala.math.Ordering .Double .getClass)
239+ kryo.register(scala.math.Ordering .Float .getClass)
240+ kryo.register(scala.math.Ordering .Int .getClass)
241+ kryo.register(scala.math.Ordering .Long .getClass)
242+ kryo.register(scala.None .getClass)
39243 kryo.register(classOf [RFRasterSource ])
40244 kryo.register(classOf [RasterRef ])
41245 kryo.register(classOf [DelegatingRasterSource ])
0 commit comments