go gdal库 配置应用

说明

最近要用go写一个应用gdal库的程序,go的gdal库文档资料很少,记录一下,自己摸索的过程。
需要用到cgo 要编译gdal
windows的环境 一直编译这块处理很麻烦 一直出现问题 最后换成到linux
有解决的可以分享出来 :)

环境 Ubuntu18.4
下载安装GDAL

通过 apt-get 下载安装

sudo apt-get install libgdal-dev

执行上面的命令,用于安装 GDAL 的开发环境
可通过gdal-config 命令来查看 GDAL 的相关配置
头文件路径默认安装在:/usr/include/gdal
共享库及静态库默认安装在:/usr/lib
库名字:libgdal.alibgdal.so

在这里插入图片描述

pkg-config

pkg-config用来检索系统中安装库文件的信息,典型的是用作库的编译和连接。
方便我们后续编译连接

 sudo apt install pkg-config

在默认情况下,每个支持 pkg-config 的库对应的.pc文件在安装后都位于安装目录中的lib/pkgconfig目录下.新软件一般都会安装.pc文件,没有可以自己创建,并且设置环境变量PKG_CONFIG_PATH设置擦汗寻.pc文件路径。使用pkg-config工具提取库的编译和连接参数有两个基本的前提:

库本身在安装的时候必须提供一个相应的.pc文件。不这样做的库说明不支持pkg-config工具的使用。
pkg-config必须知道要到哪里去寻找此.pc 文件。

gdal.pc文件

编写一下gdal.pc文件

name=gdal
prefix=/usr
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${exec_prefix}/include
datadir=${prefix}/share/${name}

Name: lib${name}
Description: Geospatial Data Abstraction Library
Version: 1.9.1
Libs: -L${libdir} -l${name}
Cflags: -I${includedir}/${name}

gdal.pc文件放到/usr/lib/pkgconfig路径下
然后拉取gogdal
linux下通过pkg-config自动获取编译连接路径,可以正常运行了

go调用gdal的例子
package main

import (
	"fmt"

	"github.com/lukeroth/gdal"
)

func main() {
	readfilename := "./out.tif"
	outfilename := "aout.tif"
	if readfilename == "" {
		fmt.Printf("Usage: tiff [filename]\n")
		return
	}
	fmt.Printf("Filename: %s\n", readfilename)

	dataset,_ := gdal.Open(readfilename,gdal.ReadOnly)
	x := dataset.RasterXSize()
	y := dataset.RasterYSize()
	fmt.Println(x,y)
	buffer := make([]int8,x*y)
	fmt.Printf("Getting raster band\n")
	raster := dataset.RasterBand(1)

	fmt.Printf("Writing to raster band\n")
	raster.IO(gdal.Read, 0, 0, x, y, buffer, x, y, 0, 0)
	fmt.Println(buffer)

	fmt.Printf("Loading driver\n")
	driver, err := gdal.GetDriverByName("GTiff")
	if err != nil {
		fmt.Println(err.Error())
		return
	}
	fmt.Printf("Creating dataset\n")
	outdataset := driver.Create(outfilename, 256, 256, 1, gdal.Byte, nil)
	defer outdataset.Close()
}
关于go的gdal的一些API

go的gdal的函数跟c类似差不多,由于我也是刚接触,也有很多函数不是很了解,
可以多看看c函数的一些用法,在查看库的源代码进行测试。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值