首页 / 浏览问题 / 移动GIS / 问题详情
android移动端,点画面后怎么把图层转成.shp图层文件,存到本地?
66EXP 2020年05月13日
android移动端动态的,点画面、手绘线,手绘面等操作完成后,怎么把图层转成.shp图层文件,存到本地?

1个回答

您好,可以通过DataConversion数据转换接口可以实现该方法,使用DataConversion.exportSHP(java.lang.String filepath, Dataset dataset) 

9,137EXP 2020年05月13日

请问需要在这个LinYeYHSY地图上加上Line和Region的图层,才能通过点来画线 画面吗

您好,您是想通过什么方式来绘制,如果是通过Action的方式就必须有对应的数据集图层并且开启编辑,第二种方式是将绘制的线对象放在跟踪图层上显示,直接通过构造几何对象就可以,也可以把绘制的几何对象通过recordset添加到数据集的记录中。
想直接在地图上通过点来画线、画面,然后生成shp文件存到手机本地。直接构造几何对象需要提前准备好需要的点数据吧?还是调用方法后点击地图,比如点了三下就能生成一个面数据,就能直接显示呢?
那你就直接新建同类型的数据集,在地图上进行绘制,最后导出为shp,这种方式最简单方便
那不能用Action方法,还有别的方式方法用来 手动的点画线  画面吗?Action方法是我在例子里找到的
不用action,你可以通过地图的点击事件,将屏幕的像素点坐标转换为地图坐标,然后再进行几何对象的构造。几何对象的构造方法在API文档中搜索Geometry,然后找到对应的几何对象
怎么用地图点击事件吧屏幕像素点转成地图坐标啊,官方有例子吗?方法不熟悉?

获取到像素点坐标,然后通过map.pixelToMap(Point point)转换地图坐标。具体看一下帮助文档

在API上看到这个方法了,这是不用必须有对应的数据集图层,就可以开启图层编辑,就能用了吗?   

提交绘制mapControl.submit();是提交到哪里的?怎么在提交时导出shp?

试了一下这个方法不能用,您不用回复这个问题了

你要通过Action的方式就必须有对应的图层并开启可编辑。通过构造的方法是把几何对象绘制在跟踪图层上面,如果需要把绘制的对象放在数据集里面就需要把绘制的几何对象添加到数据集的记录集recordset中,在帮助文档搜索recordset接口
这个功能还没写明白,先放下了,之后我在研究吧,谢谢您的回复

请教一下,面几何对象放到跟踪图层上,怎么导出SHP文件啊,

dataset = udbDatasource.getDatasets().get("WorldEarth");

DataConversion.exportSHP(filepath,  dataset)

看例子,"WorldEarth"是地图文件存在的图层,二参的数据集应该是是通过地图存在的图层获取的,那跟踪图层的数据集要怎么设置?

导出数据需要是以数据集的为参数,所以你需要创建一个新的数据集,使用接口datasets.create();然后获取数据集的记录集recordset。最后将几何对象Geometry添加到记录集中,
创建数据集不是需要数据源的吗,这种在跟踪图层画的面几何对象,要用哪个数据源?还是不需要数据源就能创建数据集?
肯定是需要数据源的,您需要在移动端打开数据源或者新建数据源

那我就需要新建数据源了,创建数据源需要先有文件,还是只要一个路径就可以了?数据源mainDatasource要怎么创建出来呢?

然后有了数据源,我在这样创建数据集,是吗?

//创建数据集
Dataset dataset = mainDatasource.getDatasets().get(0);
map.getLayers().add(dataset, false);

使用方法datasources.create(DatasourceConnectionInfo connectionInfo),在帮助文档搜索datasources,然后点击create方法,有示范代码的。
数据源都是.udb类型的吗?
是的,目前移动端sdk只支持文件型的数据源

数据源创建成功,断点datsourceYoungerClassRegion数据源时还是有值的。然后画面,然后从中取出名为“小班面数据”(面数据集)的矢量数据集 dataset,报错java.lang.IllegalStateException: 数据源所属的工作空间为空或者已经释放,创建数据源后面的释放是必须写的吗?是不是这段代码//释放资源 workspace.dispose();造成的?

...