zoukankan      html  css  js  c++  java
  • GDAL的java环境配置以及将shp转换为json

    概述:

    前两天,有位同仁再问我一个问题,问题大概是介个样子的:打包shp数据位zip格式并上传,上传完成后再在web上展示出来。这个需求,以前在Arcgis Online上见过,所以还是比较熟悉的,所以我就给他说:先将zip解压,再读取shp数据并将之转换为Geojson返回前台,并在web上展示出来。很庆幸的是,者为同仁很快就实现了shp到Geojson的转换,就问我Arcgis for js 中怎么展示Geojson,我截了个Arcgis for js的API给他他就实现了上述的功能。同时,我想他请教了如何实现的转换,他告诉我说是GDAL实现的,并给了我关键代码,因为代码是C#的,所以,经过周末的折腾,在JAVA上实现了,在此分享给大家。


    实现:

    想要在java上用GDAL比较费劲,中间的尝试过程在此略过,直接说结果。

    首先是jdk,下载的GDAL的位数一定要与JDK的位数相符,我的JDK的位数是32位的,所以下载了32位的GDAL,为方便大家使用,并将此上传到了百度网盘,下载地址为:链接:http://pan.baidu.com/s/1mhrywn2 密码:lsch。将GDAL下载完成后,将所有的dll文件复制到jdk的安装路径“C:Program Files (x86)Javajdk1.7.0_17jrein”下即可。

    接着,将JDAL.jar文件添加到你的Java lib引用中去。

    最后,代码实现。实现的关键代码如下:

    package com.lzugis.gdal;
    
    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:\data\china\capital.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:\data\china\capital.geojson");
            System.out.println("转换成功!" );
    	}
    }
    
    打印的信息如下:





  • 相关阅读:
    Ubuntu 安装 Caffe
    数字图像处理
    直方图均衡化
    神经网络深层网络实现
    CNN理解与实现
    ReactiveX 学习笔记(19)使用 RxSwift + RxCocoa 进行 GUI 编程
    ReactiveX 学习笔记(18)使用 RxJS + Angular 调用 REST API
    ReactiveX 学习笔记(17)使用 RxSwift + Alamofire 调用 REST API
    JSON数据的解析和生成(Swift)
    Haskell语言学习笔记(92)HXT
  • 原文地址:https://www.cnblogs.com/lzugis/p/6539794.html
Copyright © 2011-2022 走看看