读取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();
oLayer.CreateField(oFieldName); FeatureDefn oDefn = oLayer.GetLayerDefn(); // 创建三角形要素
Feature oFeatureTriangle = new Feature(oDefn);
oFeatureTriangle.SetField(, );
oFeatureTriangle.SetField(, "三角形");
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(, );
oFeatureRectangle.SetField(, "矩形");
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(, );
oFeaturePentagon.SetField(, "五角形");
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如下:

打开形状如下

Java 使用GDAL 读写 shapefile的更多相关文章

  1. JAVA用geotools读写shape格式文件

    转自:http://toplchx.iteye.com/blog/1335007 JAVA用geotools读写shape格式文件 (对应geotools版本:2.7.2) (后面添加对应geotoo ...

  2. java文件的读写操作

    java文件的读写操作主要是对输入流和输出流的操作,由于流的分类很多,所以概念很容易模糊,基于此,对于流的读写操作做一个小结. 1.根据数据的流向来分: 输出流:是用来写数据的,是由程序(内存)--- ...

  3. C#读写Shapefile

    Shapefile文件是ArcGIS存储矢量要素的标准格式,要读写Shapefile最简单的方法当然是基于ArcObject(或者ArcEngine)开发,不过网上也有一些开源的解译Shapefile ...

  4. java通过dom读写xml文件

    java通过dom读写xml文件 要读的xml文件 <?xml version="1.0" encoding="GB2312"?><学生花名册 ...

  5. java FileReader/FileWriter读写文件

    java FileReader/FileWriter读写字母和数字没问题,但读写汉字就乱码.记录下,后面找到解决方法再补上. public static void main(String[] args ...

  6. ArcEngine和GDAL读写栅格数据机制对比(一)

    最近应用AE开发插值和栅格转等值线的程序,涉及到栅格读写的有关内容.联想到ArcGIS利用了GDAL的某些东西,从AE的OMD中也发现RasterDataset和RasterBand这些命名和GDAL ...

  7. Java中如何读写cookie (二)

    Java中删除cookie Cookie[]   cookies=request.getCookies();       //cookies不为空,则清除       if(cookies!=null ...

  8. 沉淀再出发:java的文件读写

    沉淀再出发:java的文件读写 一.前言 对于java的文件读写是我们必须使用的一项基本技能,因此了解其中的原理,字节流和字符流的本质有着重要的意义. 二.java中的I/O操作 2.1.文件读写的本 ...

  9. java 文件的读写操作

    java  文件的读写操作 一.读: public String getSetting() { HttpServletRequest request=org.apache.struts2.Servle ...

随机推荐

  1. Install MySQL on CentOS 7

    原文:https://devops.profitbricks.com/tutorials/install-mysql-on-centos-7/ 1.下载mysql 在mysql官网选择适合的mysql ...

  2. tftp服务器的搭建

    基于 红帽6的tftp搭建,当然其他系统搭建方法也大致一样 #mount /dev/cdrom /mnt/           挂载安装光盘  不同光盘挂载用 fdisk -l  查看光盘 #rpm ...

  3. OSS层基础:平台区分

    #define PLATFORM_WINDOWS 1 #define PLATFORM_MAC 2 #define PLATFORM_UNIX 3 #if defined(_WIN32) #defin ...

  4. TodoMVC中的Backbone+MarionetteJS+RequireJS例子源码分析之三 Views

    这个版本的TodoMVC中的视图组织划分比较细,更加易于理解,这也得益于Marionette为我们带来了丰富的视图选择,原生的backbone只有views,而Marionette则有itemview ...

  5. python中列表,元组,字符串互相转换

    列表,元组和字符串python中有三个内建函数:,他们之间的互相转换使用三个函数,str(),tuple()和list(),具体示例如下所示 >>> s = "xxxxx& ...

  6. css疑难汇总

    关于a标签不换行顶开容器的问题(转自): 我们用div,p,ul,li(等块级元素)布局给其设定了特定的width,那么就会自动的换行.用span,a(等内联元素)设置了display:inline- ...

  7. python之 rabbitmq

    一.发布hello world 首先我们看一个最简单的消息队列系统 #!/usr/bin/env python3 # -*- coding: utf-8 -*- """ ...

  8. Spring基础学习笔记-Bean的基础知识

    一. Bean的定义,初始化,使用和销毁 二.ref指定依赖的三种模式 三.Bean的五种自动装配模式(autowire) 四.Bean依赖检查的4种模式:配合atuowire使用,dependenc ...

  9. [转自itilxf论坛]iTop百问百答

    iTop是什么,和其他itsm软件相比有什么优势?iTop,是一个开源web应用程序,用于IT环境的日常运营.它基于ITIL最佳实践,而又不拘泥于任何具体流程. 优势: 1. 开源,扩展性强容易开发. ...

  10. SQL语法整理

    SQL是Structured Query Language的缩写,中文全名为结构化查询语言,是一种用于数据存储,查询,更新和管理的关系数据库系统. SQL语法 创建表 create table tab ...