zoukankan      html  css  js  c++  java
  • Android GIS开发系列-- 入门季(13)Gdal简单写个shp文件

    Gdal是用来读写栅格与矢量数据的,在Gdal官网,可以下载相关的资源进行平台的编译。其实Arcgis底层也是用Gdal来读取shp文件的,那在Android中可以直接读写shp文件吗,是可以的。这里已经有人编译了Android端的so ,下载地址。也可以自己尝试编译相关so。

    新建项目,将下载的so 与相关资源导入,相关目录结构如下:

    注意gdal的相关包名不要修改,避免so读取不到相应的类。
    简单写个shp,注意导包,要导入org.gdal下面相关的类:

    private void writeShp() throws UnsupportedEncodingException {
            //存放路径
            String shpPath = basePath + "/my_line.shp";
            ogr.RegisterAll();
            gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8", "NO");
            // 不支持中文
            gdal.SetConfigOption("SHAPE_ENCODING", "");
            String strDriverName = "ESRI Shapefile";
            org.gdal.ogr.Driver oDriver = ogr.GetDriverByName(strDriverName);
            if (oDriver == null) {
                System.out.println(" 驱动不可用!
    ");
                return;
            }
            // 创建数据源
            DataSource oDS = oDriver.CreateDataSource(shpPath, null);
            if (oDS == null) {
                return;
            }
            // 创建一个84坐标系的图层
            org.gdal.osr.SpatialReference sap = new org.gdal.osr.SpatialReference();
            sap.SetWellKnownGeogCS("WGS84");
            Layer oLayer = oDS
                    .CreateLayer("TestPolygon", sap, ogr.wkbPolygon, null);
            if (oLayer == null) {
                System.out.println("图层创建失败!
    ");
                return;
            }
            // 下面创建属性表
            // 先创建一个叫FieldID的整型属性
            FieldDefn oFieldID = new FieldDefn("ID", ogr.OFTInteger);
            oLayer.CreateField(oFieldID, 1);
    
            // 再创建一个叫FeatureName的字符型属性,字符长度为50
            FieldDefn oFieldName = new FieldDefn("name", ogr.OFTString);
            oFieldName.SetWidth(100);
            oLayer.CreateField(oFieldName, 1);
    
            FeatureDefn oDefn = oLayer.GetLayerDefn();
    
            // 创建要素
            Feature oFeatureTriangle = new Feature(oDefn);
            oFeatureTriangle.SetField(0, 0);
            oFeatureTriangle.SetField(1, "test");
            Geometry geomTriangle = Geometry
                    .CreateFromWkt("POLYGON ((112 45,112 30,140 30))");
            oFeatureTriangle.SetGeometry(geomTriangle);
    
            oLayer.CreateFeature(oFeatureTriangle);
            //同步到文件中,一定要写
            oLayer.SyncToDisk();
        }

    用Arcgis MapView加载shp文件效果:

    Gdal Java相关Api

  • 相关阅读:
    智能大数据分析平台用例
    Mapreduce实例——去重
    Mapreduce实例——求平均值
    智能大数据分析平台数据流图
    .net程序设计文件操作
    2021.11.17 Guns框架基本应用
    Guns框架基本知识
    2021.11.16 .net——Windows应用程序开发
    1129每日博客
    1126每日博客
  • 原文地址:https://www.cnblogs.com/arxive/p/7751997.html
Copyright © 2011-2022 走看看