前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >macOS下GDAL Java开发环境搭建

macOS下GDAL Java开发环境搭建

作者头像
卡尔曼和玻尔兹曼谁曼
发布2020-04-10 11:40:23
3.5K1
发布2020-04-10 11:40:23
举报

版权声明:本文为博主原创文章,转载请注明原文出处!

写作时间:2020年4月9日下午


macOS下GDAL Java开发环境搭建

今天在笔记本(macOS平台)上折腾了一下如何搭建GDAL的Java开发环境。虽然GDAL的Python接口更好用,但是有时候需要协同使用一些Java库的时候,也必须使用Java版本的GDAL。

在macOS上安装GDAL一般有三种方式:

  1. 使用HomeBrew
  2. 使用Kyng-Chaos提供的编译好的二进制包(Framework)
  3. 从源码编译

由于前两种方式不自带有Java相关的接口,所以这里选择从源码编译。

GDAL源码编译安装

首先,下载GDAL源码,可以从GitHub上下载,也可以从GDAL官网下载。

我这里从官网下载了最新的2.4.4版本(3.X版本也发布了,但是还是先用稳定一点的吧)的源码进行编译安装。GDAL依赖的库都可以使用HomeBrew安装,我的方法是直接使用Brew安装GDAL,然后再卸载掉GDAL,这样GDAL依赖的第三方库都就自动安装了。

此外,还需要系统中安装了Java JDK和SWIG以及Ant编译工具。

下面进行GDAL源码编译并安装到/usr/local目录中。注意配置系统中Java的路径,我这里使用的是JDK11。

cd gdal-2.4.4
./configure --with-threads --disable-static --without-grass --with-jasper=/usr/local/lib --with-libtiff=/usr/local/lib --with-jpeg=/usr/local/lib --with-gif=/usr/local/lib --with-png=/usr/local/lib --with-geotiff=/usr/local/lib --with-pcraster=internal --with-geos=/usr/local/lib --with-static-proj4=/usr/local/lib --with-expat=/usr/local/lib --with-curl=/usr/local/lib --with-netcdf=/usr/local/lib --with-hdf5=/usr/local/lib --with-opencl --with-libz=internal --without-python --with-java --with-jvm-lib=/Library/Java/JavaVirtualMachines/openjdk-11.0.2.jdk/Contents/Home 
make
sudo make install

然后接下来我们编译Java接口需要的相关文件。make install命令会将动态链接库libgdalalljni.20.dyliblibgdalalljni.dylib拷贝到/usr/local/lib目录中。

cd swig/java
make CFLAGS="-I/Library/Java/JavaVirtualMachines/openjdk-11.0.2.jdk/Contents/Home/include -I//Library/Java/JavaVirtualMachines/openjdk-11.0.2.jdk/Contents/Home/include/darwin"
sudo make install

make命令会生成我们需要的gdal.jar包,是我们做Java开发需要的依赖包,必须添加到工程中。

我以为这样就可以了,但是当我在工程中调用GDAL的时候,提示找不到Native Library,然后我就把libgdalalljni.20.dyliblibgdalalljni.dylib又拷贝到了/Library/Java/Extensions目录中,问题才得以解决。

Maven安装本地JAR

我习惯使用Maven管理依赖,但是Maven中央仓库中没有提供GDAL 2.4.4版本的JAR包。所以需要把刚才生成的gdal.jar文件安装到本地Maven仓库中,这样才能在Maven工程中使用。

使用如下命令进行安装以后,我们就可以在工程中开心的使用了!

mvn install:install-file -Dfile=/Users/TheOneGIS/Development/gdal-2.4.4/swig/java/gdal.jar -DgroupId=org.gdal -DartifactId=gdal -Dversion=2.4.4 -Dpackaging=jar

使用Java版GDAL示例

这里使用Better Java(Kotlin)语言进行一个简单的Shapefile文件读取的示例。首先,新建Maven Kotlin工程;然后在POM文件中添加GDAL依赖,最后书写我们的HelloWorld示例。

<dependency>
  <groupId>org.gdal</groupId>
  <artifactId>gdal</artifactId>
  <version>2.4.4</version>
</dependency>

示例代码如下:

package cn.demo

import org.gdal.gdal.*

fun main(args: Array<String>) {
    // 初始化GDAL环境
    gdal.UseExceptions()
    gdal.AllRegister()
	
		// 读取数据,输出数据信息
    val path = "China.shp"
    val ds = gdal.OpenEx(path)
    val layer = ds.GetLayer(0)
    println(layer.GetName())
    for (i in 0 until layer.GetFeatureCount()) {
        print(layer.GetNextFeature().GetFieldAsString("NAME"))
    }
    ds.delete()
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • macOS下GDAL Java开发环境搭建
    • GDAL源码编译安装
      • Maven安装本地JAR
        • 使用Java版GDAL示例
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档