`
zhy584520
  • 浏览: 183794 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

gdal代码生成shape带索引

 
阅读更多

最近做项目需要程序自动生成shapfile,生成shapefile的方案比较多有arcgis engine、gdal、geotools,推荐使用arcgis engine、gdal。

本文采用GDAL,国内JAVA方面的GDAL资料比较少,在这里分享出来方便他人。

备注:我使用的GDAL版本是2.0.0,大家尽量使用2.0+版本,因为2.0后才支持索引,如果数据比较大,没有索引那性能相差不是一星半点。

准备工作:

一、配置gdal库,下载地址:http://www.gisinternals.com/release.php,一定要对应相应版本哦,下载好了配置GDAL环境变量,配置方法如下:

1、右键计算机——》属性——》高级系统设置——》环境变量——》新建系统变量:

新建两个系统变量GDAL32_DLL

变量名:GDAL32_DLL

变量值:C:\GDAL\release-1600-win32-dev\release-1600\bin;C:\GDAL\release-1600-win32-dev\release-1600\bin\gdal\java

名字可以自己定义,指定GDAL DLL路径位置,和GDAL java版编译出路径。

注意:以上路径需要根据gdal库真实存放目录调整。

 

2、在Path前面增加(如果没有Path系统变量,则新建)"%GDAL32_DLL%;",即path变为

%GDAL32_DLL%;

二、JAVA代码生成shapefile

1、注册  

  ogr.RegisterAll();

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

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

2、加载驱动

   String strDriverName = "ESRI Shapefile";

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

        if (oDriver == null) {

            System.out.println("驱动不可用");

            return -1;

        }

3、创建数据源

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

        if (oDS == null) {

            System.out.println("创建矢量文件失败");

            return -1;

        }

4、创建图层

        Vector vector = new Vector<>();

        vector.add("SPATIAL_INDEX=YES");

//这里需要注意,默认gdal是不会创建索引的,需要设置:可参考API:http://gdal.org/java/org/gdal/ogr/DataSource.html#CopyLayer-org.gdal.ogr.Layer-java.lang.String-java.util.Vector-

参数说明文档:http://www.gdal.org/ogr_formats.html

        Layer oLayer = oDS.CreateLayer(SatArea.SHAPLEFILE_PROVINCE_NAME, webMercatro, ogr.wkbPolygon, vector);

        if (oLayer == null) {

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

            return -1;

        }

5、为图层创建字段

   FieldDefn oFieldNo = new FieldDefn("No", ogr.OFTString);

        oFieldNo.SetWidth(10);

        oLayer.CreateField(oFieldNo);

6、设置字段值

FeatureDefn oDefn = oLayer.GetLayerDefn();

Feature oFeatureTriangle = new Feature(oDefn);

oFeatureTriangle.SetField(0, "no");

oFeatureTriangle.SetGeometry(shape);

oLayer.CreateFeature(oFeatureTriangle);

7、释放资源

   oDS.SyncToDisk();

        oDefn.delete();

        oLayer.delete();

        oDS.delete();

 

 

0
0
分享到:
评论

相关推荐

    C#调用GDAL操作Shape文件及点线面读写,坐标系统配置文件prj,GDAL类库.zip

    - `C#用GDAL生成shp文件,包含点、线、面、环等类型_Gdal_GenerateShp.cs`:这个文件可能包含了一个完整的示例,展示了如何使用GDAL_csharp创建不同类型的Shapefile要素。 - `gdal_Test.cs`:可能是对GDAL功能的...

    Shape格式海图数据向S57格式的转换

    它主要由.shp、.shx和.dbf三个文件组成,分别用于存储几何数据、几何索引和属性数据。尽管Shape格式简单易用,但在数据的拓扑结构、属性管理以及规范化方面,与S57格式相比存在明显不足,尤其是在复杂的海图数据处理...

    AE TXT生成点shp与点Shp生成TIN

    这个过程涉及到的空间数据处理技术包括:空间索引、三角网生成算法、空间数据结构(如多边形和三角形)以及三维空间分析。 标签“AE C# Shp”表明了这个任务是在Adobe Illustrator的上下文中使用C#编程语言处理...

    数据库geometry导出成矢量shape

    它由多个关联的文件组成,包括.shp(几何数据)、.dbf(属性数据)、.shx(索引数据)等。将数据库中的`geometry`数据转换为Shapefile,有助于在不同的GIS软件中进行数据交换和分析。 实现这个功能的两个关键步骤是...

    shapelib(vc7.1)

    Shapefiles由三个相互关联的文件组成:.shp(几何数据),.shx(索引数据)和.dbf(属性数据)。 2. **读取与写入操作**:库提供了读取和写入Shapefile的功能,允许开发者轻松地创建、修改或分析地理数据。例如,...

    arcgis--shp文件格式说明

    此外,许多开源GIS软件,如QGIS和GDAL/OGR,也支持SHP格式。通过这些工具,用户可以进行数据转换、数据分析、地图制作等操作。 **7. 数据交换** SHP格式因其开放性和兼容性,常被用作不同GIS系统间数据交换的标准...

    绥化市百度poi矢量wgs84坐标系2021年最新shp.zip

    同时,用户也可以通过编程语言如Python的GDAL/OGR库或者R的sf包来操作和处理SHAPE文件。在进行数据转换、投影、叠加分析或生成可视化地图时,这些工具非常有用。 总的来说,这个压缩包提供的数据集是一份宝贵的资源...

    C++实现shapefile文件的读写以及基本功能的操作

    Shapefile由多个文件组成,包括.shp(几何数据),.shx(索引),.dbf(属性数据)等。C++中处理shapefile通常需要解析这些文件的二进制结构。可以使用开源库,如libshp或GDAL,它们提供了接口来读取和写入shapefile...

    shp转MapInfo、BNA、CSV、GML、KML、GMT、GPX工具

    这个名为"ogr2gui-0.6"的压缩包文件可能包含一个名为"ogr2ogr"的工具的图形用户界面版本,这是一个开源的GDAL库的一部分,GDAL全称为Geospatial Data Abstraction Library,用于处理多种地理空间数据格式。...

Global site tag (gtag.js) - Google Analytics