首页 / 浏览问题 / 移动GIS / 问题详情
android 获取.shp文件的图层面积
66EXP 2020年05月14日

有一个.shp文件的A图层数据,里面的A图层是一块一块的分成了很多小块,通过点查面方法,根据我当前的位置查到了当前的A图层整体的数据,但要怎么获取我所在位置的A图层中的一个小块的面积呢?而不是A图层整体的面积

1个回答

您好,获取几何对象面有两种方法:
1。获取需要获取面积的几何对象GeoRegion,然后通过GeoRegion.getArea()方法获取面积
2.在数据的属性表中存储了每个几何对象的面积字段SmArea,可以通过获取字段值来获取面积。使用接口recordset.getFieldValue()
9,197EXP 2020年05月14日
地图上有一个A图层,A图层就是上面的图片,每一块有一个小班号的int类型字段,比如:1,2,3之类的小班号。通过点查面可以找到对应的小班字段数。我手动的在地图A图层上画了一个多边形,然后这个多边形和A图层有一部分重叠了,我想根据手动画的这个面来获取覆盖了几个小班号的图层,如果有面查面方法,可以把覆盖的小班号数据都取出来吗?要用哪个方法啊?
您好,sdk中提供了空间查询的接口,使用datasetvector.query()方法进行查询,然后在查询参数中设置空间查询的搜索对象、设置空间查询模式,可以选择查询模式为相交。具体查询模式的介绍请参考帮助文档搜索SpatialQueryMode
YoungerClassLayerRegion是底下的图层名,region是上面手动画的图层

我通过画面几何图形,获取的小班号都是1,没有获取到别的小班号,但我画的面几何图形应该包含了别的小班号了,这个面查面数据用相交方法不对吗?

您可以看返回的记录集个数,返回的记录集个数就是查询的结果对象数。如果需要获取里面的属性信息,需要循环获取recordset,使用方法:
recordset.moveFirst();
while(!recordset_world.isEOF()){
您的业务代码;
recordset.moveNext();

}
谢谢,用这个方法得到我要的数据了。再问一个小问题,循环获取都要用这种while(!recordset_world.isEOF())方法吗?for循环获取为什么会不对呢?
一般是用这个循环,如果是for循环需要用moveTo的方法来将记录集移动到指定位置
解决了,谢谢您的帮助
...