|
1 | 1 | """ |
2 | | - O = gd2gmt(dataset; band=0, bands=[], sds=0, pad=0) |
| 2 | + O = gd2gmt(dataset; band::Int=0, bands=Vector{Int}(), sds::Int=0, pad::Int=0) |
3 | 3 |
|
4 | 4 | Convert a GDAL raster dataset into either a GMTgrid (if type is Int16 or Float) or a GMTimage type |
5 | 5 | Use `band` to select a single band of the dataset. When you know that the dataset contains several |
|
22 | 22 | G = gd2gmt("NETCDF:AQUA_MODIS.20210228.L3m.DAY.NSST.sst.4km.NRT.nc:sst"); |
23 | 23 | """ |
24 | 24 | function gd2gmt(_dataset; band::Int=0, bands=Vector{Int}(), sds::Int=0, pad::Int=0, layout::String="")::Union{GItype, GDtype} |
| 25 | + _gd2gmt(_dataset, band, bands, sds, pad, layout) |
| 26 | +end |
| 27 | +function _gd2gmt(@nospecialize(_dataset), band::Int, bands::Vector{Int}, sds::Int, pad::Int, layout::String) |
25 | 28 |
|
26 | 29 | (isa(_dataset, GMTgrid) || isa(_dataset, GMTimage) || isGMTdataset(_dataset)) && return _dataset |
27 | 30 |
|
@@ -257,7 +260,7 @@ function gd2gmt(geom::Gdal.AbstractGeometry, proj::String="")::Union{GMTdataset, |
257 | 260 | end |
258 | 261 |
|
259 | 262 | # --------------------------------------------------------------------------------------------------- |
260 | | -function gd2gmt(dataset::Gdal.AbstractDataset) |
| 263 | +function gd2gmt(@nospecialize(dataset::Gdal.AbstractDataset)) |
261 | 264 | # This method is for OGR formats only |
262 | 265 | (Gdal.GDALGetRasterCount(dataset.ptr) >= 1) && return gd2gmt(dataset; pad=0) |
263 | 266 |
|
@@ -491,7 +494,10 @@ by `grdinfo`. An unfortunate consequence of using either GMT or GDAL to inquire |
491 | 494 | `x_inc, y_inc` when reading with GDAL, and `z_min, z_max` when reading with GMT. |
492 | 495 | """ |
493 | 496 | function getregion(input; pad=0, xSize=0, ySize=0, gridreg::Bool=false, sds::Int=0, GMT=false)::NTuple{6, Float64} |
494 | | - (GMT == 1 && isa(input, String)) && return vec(gmt_grdinfo_C(input).data) |
| 497 | + _getregion(input, Int(pad), Int(xSize), Int(ySize), gridreg==1, sds, GMT==1) |
| 498 | +end |
| 499 | +function _getregion(@nospecialize(input), pad::Int, xSize::Int, ySize::Int, gridreg::Bool, sds::Int, GMT::Bool)::NTuple{6, Float64} |
| 500 | + (GMT && isa(input, String)) && return vec(gmt_grdinfo_C(input).data) |
495 | 501 | dataset = gd2gmt_helper(input, sds; short=true)[1] |
496 | 502 | (xSize == 0) && (xSize = Gdal.width(dataset)) |
497 | 503 | (ySize == 0) && (ySize = Gdal.height(dataset)) |
|
0 commit comments