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(" 驱动不可用!\n");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("图层创建失败!\n");return;}// 下面创建属性表// 先创建一个叫FieldID的整型属性FieldDefn oFieldID = new FieldDefn("ID", ogr.OFTInteger);oLayer.CreateField(oFieldID, 1);// 再创建一个叫FeatureName的字符型属性,字符长度为50FieldDefn 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
Android GIS开发系列-- 入门季(13)Gdal简单写个shp文件相关推荐
- Android GIS开发系列-- 入门季(11) Callout气泡的显示
一.气泡的简单显示 首先我们要获取MapView中的气泡,通过MapView的getCallout()方法获取一个气泡.看一下Callout的简单介绍: 大体的意思是通过MapView获取Callou ...
- Android GIS开发系列-- 入门季(5) FeatureLayer加载本地shp文件与要素查询
FeatureLayer是要素图层,也是Arcgis的主要图层.用这个图层可以加载本地的shp文件.下面我们看怎样加载shp文件到MapView中.查看ArcGis API可知FeatureLayer ...
- Android Studio 开发系列之二:创建简单的APP启动界面
1.准备措施:准备一张用来开机的P好的照片 2.在原有项目的基础上,新建一个Activity,命名为StartActivity(这个其实无所谓,都可以) 3.将准备好的照片放入mipmap中 (1)复 ...
- 《 Android物联网开发从入门到实战》
今天小编分享的这本书是国内第一本Android物联网开发书籍,由42个全真实战案例,环环相扣,深入解析Android物联网开发. <Android物联网开发从入门到实战>内容分为 5篇,共 ...
- 《 Android物联网开发从入门到实战》国内第一本开发书籍!
今天小编分享的这本书是国内第一本Android物联网开发书籍,由42个全真实战案例,环环相扣,深入解析Android物联网开发. <Android物联网开发从入门到实战>内容分为 5篇,共 ...
- Android自定义控件开发系列(零)——基础原理篇
在后边的文章中发现在说Android自定义时,有时候要重复解释很多东西,所以想想返回来增加一篇"基础原理篇",直接进入正题吧-- 首先的问题是:在Android项目开发中,什么时候 ...
- Android蓝牙开发系列文章-玩转BLE开发(一)
我们在<Android蓝牙开发系列文章-策划篇>中计划讲解一下蓝牙BLE,现在开始第一篇:Android蓝牙开发系列文章-玩转BLE开发(一).计划要写的BLE文章至少分四篇,其他三篇分别 ...
- Android游戏开发的入门实例
在Android系统上开发游戏是Android开发学习者所向往的,有成就感也有乐趣,还能取得经济上的报酬.那怎样开发Android游戏呢?下面介绍一个简单的入门实例. 一.创建 ...
- Android蓝牙开发系列文章-蓝牙设备类型知多少?
在写<Android蓝牙开发系列文章-蓝牙音箱连接>时,计划细化出一篇讲解蓝牙设备类型的文章,现在它来了~ 阅读其他内容,可以点击<Android蓝牙开发系列文章-策划篇>,或 ...
最新文章
- 签名工具 signtool.exe 参数简介
- android中Invalidate和postInvalidate的区别
- 从0到1建立一张评分卡之可视化分析
- Verilog HDL语言实现的单周期CPU设计(全部代码及其注释)
- 子商城管理之签到活动
- LeetCode 1002. 查找常用字符(哈希)
- Fiddler (一) 教程(Web调试工具)
- Linux(Ubuntu)设置系统时区
- HTML标签的分类与特点
- 与素数有关的一些性质及证明(一)
- 阅读《构建执法》11-12章
- java bzip2 压缩,Java bzip2压缩与解压缩工具类
- 项目经理必看逻辑思维书单
- Cross Domian iFrame Exceptions 跨域iFrame屏蔽例外
- AI元宇宙数字人直播带货软件 全天24小时直播带货系统 含搭建教程
- 数据传输方式串行快于并行
- 汽车芯片TJA1057GTK/3高速 CAN 收发器3 毫米 x 3 毫米 x 0.85 毫米
- sql server unique约束的增加与删除
- 夏普比率excel_在Excel中计算比率
- php kestrel,转载 kestrel php 讯息队列