Skip to content

Commit 4ffbd9c

Browse files
committed
Handle null URI scheme in RasterSource
Signed-off-by: Jason T. Brown <[email protected]>
1 parent cdef623 commit 4ffbd9c

File tree

2 files changed

+18
-3
lines changed

2 files changed

+18
-3
lines changed

core/src/main/scala/org/locationtech/rasterframes/ref/RasterSource.scala

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -129,13 +129,18 @@ object RasterSource extends LazyLogging {
129129
} else false
130130

131131
/** Extractor for determining if a scheme indicates GDAL preference. */
132-
def unapply(source: URI): Boolean =
133-
gdalOnly(source) || ((preferGdal || source.getScheme.startsWith("gdal")) && GDALRasterSource.hasGDAL)
132+
def unapply(source: URI): Boolean = {
133+
lazy val schemeIsGdal = Option(source.getScheme())
134+
.exists(_.startsWith("gdal"))
135+
136+
gdalOnly(source) || ((preferGdal || schemeIsGdal) && GDALRasterSource.hasGDAL)
137+
}
134138
}
135139

136140
object IsDefaultGeoTiff {
137141
def unapply(source: URI): Boolean = source.getScheme match {
138-
case "file" | "http" | "https" | "s3" | "" => true
142+
case "file" | "http" | "https" | "s3" => true
143+
case null | "" true
139144
case _ => false
140145
}
141146
}

core/src/test/scala/org/locationtech/rasterframes/ref/RasterSourceSpec.scala

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,7 @@ class RasterSourceSpec extends TestEnvironment with TestData {
109109
it("should interpret no scheme as file://"){
110110
val localSrc = geotiffDir.resolve("LC08_B7_Memphis_COG.tiff").toString()
111111
val schemelessUri = new URI(localSrc)
112+
schemelessUri.getScheme should be (null)
112113
val src = RasterSource(schemelessUri)
113114
assert(!src.extent.isEmpty)
114115
}
@@ -138,6 +139,15 @@ class RasterSourceSpec extends TestEnvironment with TestData {
138139

139140
gdal.bandCount should be (3)
140141
}
142+
143+
it("should interpret no scheme as file://") {
144+
val localSrc = geotiffDir.resolve("LC08_B7_Memphis_COG.tiff").toString()
145+
val schemelessUri = new URI(localSrc)
146+
val gdal = GDALRasterSource(schemelessUri)
147+
val jvm = JVMGeoTiffRasterSource(schemelessUri)
148+
gdal.extent should be (jvm.extent)
149+
gdal.cellSize should be(jvm.cellSize)
150+
}
141151
}
142152
}
143153

0 commit comments

Comments
 (0)