我是靠谱客的博主 开心万宝路,最近开发中收集的这篇文章主要介绍Java gdal裁切灰度图_Java用GDAL读写shapefile的方法示例,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

GDAL介绍

GDAL(Geospatial Data Abstraction Library)是一个在X/MIT许可协议下的开源栅格空间数据转换库。它利用抽象数据模型来表达所支持的各种文件格式。它还有一系列命令行工具来进行数据转换和处理。

GDAL官方网址:http://www.gdal.org/,它能支持当前流行的各种地图数据格式,包括栅格和矢量地图,具体参考官方网站。该库使用C/C++开发,在Java中使用需要自己编译,具体编译过程这里就不说了,下面来看看本文的主要内容吧。

Java使用GDAL读写shapefile的方法示例

读取shp文件,并把它转化为json

import org.gdal.ogr.*;

import org.gdal.ogr.Driver;

import org.gdal.gdal.*;

public class GdalShpTest {

public static void main(String[] args) {

// 注册所有的驱动

ogr.RegisterAll();

// 为了支持中文路径,请添加下面这句代码

gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8","YES");

// 为了使属性表字段支持中文,请添加下面这句

gdal.SetConfigOption("SHAPE_ENCODING","");

String strVectorFile = "D:\test\NODE.shp";

//打开文件

DataSource ds = ogr.Open(strVectorFile,0);

if (ds == null)

{

System.out.println("打开文件失败!" );

return;

}

System.out.println("打开文件成功!" );

Driver dv = ogr.GetDriverByName("GeoJSON");

if (dv == null)

{

System.out.println("打开驱动失败!" );

return;

}

System.out.println("打开驱动成功!" );

dv.CopyDataSource(ds,"D:\test\node.json");

System.out.println("转换成功!" );

}

}

写shp文件

import org.gdal.ogr.*;

import org.gdal.gdal.*;

class writeShp2 {

public static void main(String[] args) {

writeShp2 readshpObj = new writeShp2();

readshpObj.WriteVectorFile();

}

static void WriteVectorFile() {

String strVectorFile = "D:\test\test.shp";

ogr.RegisterAll();

gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8","NO");

gdal.SetConfigOption("SHAPE_ENCODING","CP936");

String strDriverName = "ESRI Shapefile";

org.gdal.ogr.Driver oDriver = ogr.GetDriverByName(strDriverName);

if (oDriver == null) {

System.out.println(strVectorFile + " 驱动不可用!n");

return;

}

DataSource oDS = oDriver.CreateDataSource(strVectorFile,null);

if (oDS == null) {

System.out.println("创建矢量文件【" + strVectorFile + "】失败!n");

return;

}

Layer oLayer = oDS.CreateLayer("TestPolygon",null,ogr.wkbPolygon,null);

if (oLayer == null) {

System.out.println("图层创建失败!n");

return;

}

// 下面创建属性表

// 先创建一个叫FieldID的整型属性

FieldDefn oFieldID = new FieldDefn("FieldID",ogr.OFTInteger);

oLayer.CreateField(oFieldID);

// 再创建一个叫FeatureName的字符型属性,字符长度为50

FieldDefn oFieldName = new FieldDefn("FieldName",ogr.OFTString);

oFieldName.SetWidth(100);

oLayer.CreateField(oFieldName);

FeatureDefn oDefn = oLayer.GetLayerDefn();

// 创建三角形要素

Feature oFeatureTriangle = new Feature(oDefn);

oFeatureTriangle.SetField(0,0);

oFeatureTriangle.SetField(1,"三角形");

Geometry geomTriangle = Geometry.CreateFromWkt("POLYGON ((0 0,20 0,10 15,0 0))");

oFeatureTriangle.SetGeometry(geomTriangle);

oLayer.CreateFeature(oFeatureTriangle);

// 创建矩形要素

Feature oFeatureRectangle = new Feature(oDefn);

oFeatureRectangle.SetField(0,1);

oFeatureRectangle.SetField(1,"矩形");

Geometry geomRectangle = Geometry.CreateFromWkt("POLYGON ((30 0,60 0,60 30,30 30,30 0))");

oFeatureRectangle.SetGeometry(geomRectangle);

oLayer.CreateFeature(oFeatureRectangle);

// 创建五角形要素

Feature oFeaturePentagon = new Feature(oDefn);

oFeaturePentagon.SetField(0,2);

oFeaturePentagon.SetField(1,"五角形");

Geometry geomPentagon = Geometry.CreateFromWkt("POLYGON ((70 0,85 0,90 15,80 30,65 15,70 0))");

oFeaturePentagon.SetGeometry(geomPentagon);

oLayer.CreateFeature(oFeaturePentagon);

oDS.SyncToDisk();

System.out.println("n数据集创建完成!n");

}

}

得到test.dbf,test.shp,test.shx。

test.dbf如下:

14847114651.png?20161115153626

打开形状如下

14847114652.png?20161115153652

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

如您喜欢交流学习经验,点击链接加入交流1群:1065694478(已满)交流2群:163560250

最后

以上就是开心万宝路为你收集整理的Java gdal裁切灰度图_Java用GDAL读写shapefile的方法示例的全部内容,希望文章能够帮你解决Java gdal裁切灰度图_Java用GDAL读写shapefile的方法示例所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(34)

评论列表共有 0 条评论

立即
投稿
返回
顶部