Skip to content

Commit 001beed

Browse files
committed
update some pointers
1 parent 96c6d96 commit 001beed

File tree

3 files changed

+83
-55
lines changed

3 files changed

+83
-55
lines changed

band.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,7 @@ import (
1919

2020
// Fetch the pixel data type for this band
2121
func (band *RasterBand) RasterDataType() DataType {
22-
dataType := C.GDALGetRasterDataType(band.cval)
23-
return DataType(dataType)
22+
return DataType(C.GDALGetRasterDataType(band.cval))
2423
}
2524

2625
// Fetch the "natural" block size of this band
@@ -86,7 +85,6 @@ func (band *RasterBand) IO(
8685
dataPtr = unsafe.Pointer(&data[0])
8786
case []float64:
8887
dataType = Float64
89-
dataPtr = unsafe.Pointer(&data[0])
9088
default:
9189
return fmt.Errorf("Error: buffer is not a valid data type (must be a valid numeric slice)")
9290
}

gdal.go

Lines changed: 41 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -357,22 +357,21 @@ const (
357357
DMD_EXTENSION = string(C.GDAL_DMD_EXTENSION)
358358
DMD_CREATIONOPTIONLIST = string(C.GDAL_DMD_CREATIONOPTIONLIST)
359359
DMD_CREATIONDATATYPES = string(C.GDAL_DMD_CREATIONDATATYPES)
360-
361-
DCAP_CREATE = string(C.GDAL_DCAP_CREATE)
362-
DCAP_CREATECOPY = string(C.GDAL_DCAP_CREATECOPY)
363-
DCAP_VIRTUALIO = string(C.GDAL_DCAP_VIRTUALIO)
360+
DCAP_CREATE = string(C.GDAL_DCAP_CREATE)
361+
DCAP_CREATECOPY = string(C.GDAL_DCAP_CREATECOPY)
362+
DCAP_VIRTUALIO = string(C.GDAL_DCAP_VIRTUALIO)
364363
)
365364

366365
// Open an existing dataset
367-
func Open(filename string, access Access) (Dataset, error) {
366+
func Open(filename string, access Access) (*Dataset, error) {
368367
cFilename := C.CString(filename)
369368
defer C.free(unsafe.Pointer(cFilename))
370369

371370
dataset := C.GDALOpen(cFilename, C.GDALAccess(access))
372371
if dataset == nil {
373-
return Dataset{nil}, fmt.Errorf("Error: dataset '%s' open error", filename)
372+
return nil, fmt.Errorf("Error: dataset '%s' open error", filename)
374373
}
375-
return Dataset{dataset}, nil
374+
return &Dataset{dataset}, nil
376375
}
377376

378377
// Open a shared existing dataset
@@ -385,7 +384,7 @@ func OpenShared(filename string, access Access) Dataset {
385384
}
386385

387386
// TODO(kyle): deprecate Open(), rename OpenEx->Open
388-
func OpenEx(filename string, flags Access, allowedDrivers []string, options []string, siblingFiles []string) (Dataset, error) {
387+
func OpenEx(filename string, flags Access, allowedDrivers []string, options []string, siblingFiles []string) (*Dataset, error) {
389388
cFilename := C.CString(filename)
390389
defer C.free(unsafe.Pointer(cFilename))
391390

@@ -433,9 +432,9 @@ func OpenEx(filename string, flags Access, allowedDrivers []string, options []st
433432
(**C.char)(unsafe.Pointer(&cSiblings[0])))
434433
}
435434
if dataset == nil {
436-
return Dataset{nil}, fmt.Errorf("Error: dataset '%s' open error", filename)
435+
return nil, fmt.Errorf("Error: dataset '%s' open error", filename)
437436
}
438-
return Dataset{dataset}, nil
437+
return &Dataset{dataset}, nil
439438
}
440439

441440
// Unimplemented: DumpOpenDatasets
@@ -492,7 +491,7 @@ func (object MajorObject) SetMetadataItem(name, value, domain string) {
492491
return
493492
}
494493

495-
func (dataset Dataset) Metadata(domain string) []string {
494+
func (dataset *Dataset) Metadata(domain string) []string {
496495
c_domain := C.CString(domain)
497496
defer C.free(unsafe.Pointer(c_domain))
498497

@@ -567,12 +566,12 @@ func (object *Driver) MetadataItem(name, domain string) string {
567566
/* ==================================================================== */
568567

569568
// Get the driver to which this dataset relates
570-
func (dataset Dataset) Driver() *Driver {
569+
func (dataset *Dataset) Driver() *Driver {
571570
return &Driver{C.GDALGetDatasetDriver(dataset.cval)}
572571
}
573572

574573
// Fetch files forming the dataset.
575-
func (dataset Dataset) FileList() []string {
574+
func (dataset *Dataset) FileList() []string {
576575
p := C.GDALGetFileList(dataset.cval)
577576
var strings []string
578577
q := uintptr(unsafe.Pointer(p))
@@ -588,27 +587,24 @@ func (dataset Dataset) FileList() []string {
588587
}
589588

590589
// Close the dataset
591-
func (dataset Dataset) Close() {
590+
func (dataset *Dataset) Close() {
592591
C.GDALClose(dataset.cval)
593592
return
594593
}
595594

596595
// Fetch X size of raster
597-
func (dataset Dataset) RasterXSize() int {
598-
xSize := int(C.GDALGetRasterXSize(dataset.cval))
599-
return xSize
596+
func (dataset *Dataset) RasterXSize() int {
597+
return int(C.GDALGetRasterXSize(dataset.cval))
600598
}
601599

602600
// Fetch Y size of raster
603-
func (dataset Dataset) RasterYSize() int {
604-
ySize := int(C.GDALGetRasterYSize(dataset.cval))
605-
return ySize
601+
func (dataset *Dataset) RasterYSize() int {
602+
return int(C.GDALGetRasterYSize(dataset.cval))
606603
}
607604

608605
// Fetch the number of raster bands in the dataset
609-
func (dataset Dataset) RasterCount() int {
610-
count := int(C.GDALGetRasterCount(dataset.cval))
611-
return count
606+
func (dataset *Dataset) RasterCount() int {
607+
return int(C.GDALGetRasterCount(dataset.cval))
612608
}
613609

614610
// ErrInvalidBand represents an invalid band number when requested. It is set
@@ -620,7 +616,7 @@ var ErrIllegalBand = errors.New("illegal band #")
620616
// 0 > band >= Dataset.RasterCount()
621617
//
622618
// If the band is invalid, nil and ErrInvalidBand is returned
623-
func (dataset Dataset) RasterBand(band int) (*RasterBand, error) {
619+
func (dataset *Dataset) RasterBand(band int) (*RasterBand, error) {
624620
p := C.GDALGetRasterBand(dataset.cval, C.int(band))
625621
if p == nil {
626622
return nil, ErrIllegalBand
@@ -629,7 +625,7 @@ func (dataset Dataset) RasterBand(band int) (*RasterBand, error) {
629625
}
630626

631627
// Add a band to a dataset
632-
func (dataset Dataset) AddBand(dataType DataType, options []string) error {
628+
func (dataset *Dataset) AddBand(dataType DataType, options []string) error {
633629
length := len(options)
634630
cOptions := make([]*C.char, length+1)
635631
for i := 0; i < length; i++ {
@@ -655,28 +651,23 @@ const (
655651
GRA_Lanczos = ResampleAlg(4)
656652
)
657653

658-
func (dataset Dataset) AutoCreateWarpedVRT(srcWKT, dstWKT string, resampleAlg ResampleAlg) (Dataset, error) {
654+
func (dataset *Dataset) AutoCreateWarpedVRT(srcWKT, dstWKT string, resampleAlg ResampleAlg) (*Dataset, error) {
659655
c_srcWKT := C.CString(srcWKT)
660656
defer C.free(unsafe.Pointer(c_srcWKT))
661657
c_dstWKT := C.CString(dstWKT)
662658
defer C.free(unsafe.Pointer(c_dstWKT))
663-
/*
664-
665-
*/
666659
h := C.GDALAutoCreateWarpedVRT(dataset.cval, c_srcWKT, c_dstWKT, C.GDALResampleAlg(resampleAlg), 0.0, nil)
667-
d := Dataset{h}
668660
if h == nil {
669-
return d, fmt.Errorf("AutoCreateWarpedVRT failed")
661+
return nil, fmt.Errorf("AutoCreateWarpedVRT failed")
670662
}
671-
return d, nil
672-
663+
return &Dataset{h}, nil
673664
}
674665

675666
// Unimplemented: GDALBeginAsyncReader
676667
// Unimplemented: GDALEndAsyncReader
677668

678669
// Read / write a region of image data from multiple bands
679-
func (dataset Dataset) IO(
670+
func (dataset *Dataset) IO(
680671
rwFlag RWFlag,
681672
xOff, yOff, xSize, ySize int,
682673
buffer interface{},
@@ -730,7 +721,7 @@ func (dataset Dataset) IO(
730721
}
731722

732723
// Advise driver of upcoming read requests
733-
func (dataset Dataset) AdviseRead(
724+
func (dataset *Dataset) AdviseRead(
734725
rwFlag RWFlag,
735726
xOff, yOff, xSize, ySize, bufXSize, bufYSize int,
736727
dataType DataType,
@@ -758,36 +749,35 @@ func (dataset Dataset) AdviseRead(
758749
}
759750

760751
// Fetch the projection definition string for this dataset
761-
func (dataset Dataset) ProjectionRef() string {
762-
proj := C.GoString(C.GDALGetProjectionRef(dataset.cval))
763-
return proj
752+
func (dataset *Dataset) ProjectionRef() string {
753+
return C.GoString(C.GDALGetProjectionRef(dataset.cval))
764754
}
765755

766756
// Set the projection reference string
767-
func (dataset Dataset) SetProjection(proj string) error {
757+
func (dataset *Dataset) SetProjection(proj string) error {
768758
cProj := C.CString(proj)
769759
defer C.free(unsafe.Pointer(cProj))
770760

771761
return C.GDALSetProjection(dataset.cval, cProj).Err()
772762
}
773763

774764
// Get the affine transformation coefficients
775-
func (dataset Dataset) GeoTransform() [6]float64 {
765+
func (dataset *Dataset) GeoTransform() [6]float64 {
776766
var transform [6]float64
777767
C.GDALGetGeoTransform(dataset.cval, (*C.double)(unsafe.Pointer(&transform[0])))
778768
return transform
779769
}
780770

781771
// Set the affine transformation coefficients
782-
func (dataset Dataset) SetGeoTransform(transform [6]float64) error {
772+
func (dataset *Dataset) SetGeoTransform(transform [6]float64) error {
783773
return C.GDALSetGeoTransform(
784774
dataset.cval,
785775
(*C.double)(unsafe.Pointer(&transform[0])),
786776
).Err()
787777
}
788778

789779
// Return the inverted transform
790-
func (dataset Dataset) InvGeoTransform() [6]float64 {
780+
func (dataset *Dataset) InvGeoTransform() [6]float64 {
791781
return InvGeoTransform(dataset.GeoTransform())
792782
}
793783

@@ -799,17 +789,16 @@ func InvGeoTransform(transform [6]float64) [6]float64 {
799789
}
800790

801791
// Get number of GCPs
802-
func (dataset Dataset) GDALGetGCPCount() int {
803-
count := C.GDALGetGCPCount(dataset.cval)
804-
return int(count)
792+
func (dataset *Dataset) GDALGetGCPCount() int {
793+
return int(C.GDALGetGCPCount(dataset.cval))
805794
}
806795

807796
// Unimplemented: GDALGetGCPProjection
808797
// Unimplemented: GDALGetGCPs
809798
// Unimplemented: GDALSetGCPs
810799

811800
// Fetch a format specific internally meaningful handle
812-
func (dataset Dataset) GDALGetInternalHandle(request string) unsafe.Pointer {
801+
func (dataset *Dataset) GDALGetInternalHandle(request string) unsafe.Pointer {
813802
cRequest := C.CString(request)
814803
defer C.free(unsafe.Pointer(cRequest))
815804

@@ -818,19 +807,19 @@ func (dataset Dataset) GDALGetInternalHandle(request string) unsafe.Pointer {
818807
}
819808

820809
// Add one to dataset reference count
821-
func (dataset Dataset) GDALReferenceDataset() int {
810+
func (dataset *Dataset) GDALReferenceDataset() int {
822811
count := C.GDALReferenceDataset(dataset.cval)
823812
return int(count)
824813
}
825814

826815
// Subtract one from dataset reference count
827-
func (dataset Dataset) GDALDereferenceDataset() int {
816+
func (dataset *Dataset) GDALDereferenceDataset() int {
828817
count := C.GDALDereferenceDataset(dataset.cval)
829818
return int(count)
830819
}
831820

832821
// Build raster overview(s)
833-
func (dataset Dataset) BuildOverviews(
822+
func (dataset *Dataset) BuildOverviews(
834823
resampling string,
835824
nOverviews int,
836825
overviewList []int,
@@ -859,19 +848,19 @@ func (dataset Dataset) BuildOverviews(
859848
// Unimplemented: GDALGetOpenDatasets
860849

861850
// Return access flag
862-
func (dataset Dataset) Access() Access {
851+
func (dataset *Dataset) Access() Access {
863852
accessVal := C.GDALGetAccess(dataset.cval)
864853
return Access(accessVal)
865854
}
866855

867856
// Write all write cached data to disk
868-
func (dataset Dataset) FlushCache() {
857+
func (dataset *Dataset) FlushCache() {
869858
C.GDALFlushCache(dataset.cval)
870859
return
871860
}
872861

873862
// Adds a mask band to the dataset
874-
func (dataset Dataset) CreateMaskBand(flags int) error {
863+
func (dataset *Dataset) CreateMaskBand(flags int) error {
875864
return C.GDALCreateDatasetMaskBand(dataset.cval, C.int(flags)).Err()
876865
}
877866

gdal_test.go

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,17 @@ func TestInvalidCreate(t *testing.T) {
4343
}
4444
}
4545

46+
func TestShortName(t *testing.T) {
47+
format := "GTiff"
48+
drv, err := GetDriverByName(format)
49+
if err != nil {
50+
t.Error(err)
51+
}
52+
if drv.ShortName() != format {
53+
t.Errorf("invalid short name: %s", drv.ShortName())
54+
}
55+
}
56+
4657
func TestLongName(t *testing.T) {
4758
drv, err := GetDriverByName("GTiff")
4859
if err != nil {
@@ -104,6 +115,36 @@ func TestOpenExMismatchFlags(t *testing.T) {
104115
}
105116
}
106117

118+
func TestRasterSize(t *testing.T) {
119+
ds, err := Open("test/small_world.tif", ReadOnly)
120+
if err != nil {
121+
t.Fatal(err)
122+
}
123+
x := ds.RasterXSize()
124+
y := ds.RasterYSize()
125+
if x != 400 {
126+
t.Errorf("invalid x size: %f", x)
127+
}
128+
if y != 200 {
129+
t.Errorf("invalid y size: %f", y)
130+
}
131+
}
132+
133+
func TestDataType(t *testing.T) {
134+
ds, err := Open("test/small_world.tif", ReadOnly)
135+
if err != nil {
136+
t.Fatal(err)
137+
}
138+
b, err := ds.RasterBand(1)
139+
if err != nil {
140+
t.Fatal(err)
141+
}
142+
dt := b.RasterDataType()
143+
if dt != Byte {
144+
t.Errorf("invalid data type: %d", dt.Name())
145+
}
146+
}
147+
107148
func TestHistogram(t *testing.T) {
108149
drv, err := GetDriverByName("MEM")
109150
if err != nil {

0 commit comments

Comments
 (0)