首页 / 浏览问题 / 移动GIS / 问题详情
GetFeaturesBySQLService
81EXP 2019年08月29日

这是发布的服务,可以通过SPATIAL方式进行相交查询;

使用的场景:获取两个三维模型相交的部分;

代码如下:

public static final String QUERY_B12 = "http://192.168.5.229:8090/iserver/services/data-b12m/rest/data";

String[] dtnames = {dataSourece + ":" + dataSet};
QueryParameter parameter = new QueryParameter();
//parameter.attributeFilter = sql;
GetFeaturesByGeometryParameters geoParameters = new GetFeaturesByGeometryParameters();
geoParameters.datasetNames = dtnames;
geoParameters.spatialQueryMode = SpatialQueryMode.INTERSECT;
GetFeaturesByGeometryService geoService = new GetFeaturesByGeometryService(Constant.QUERY_B12);
MyEventListener eventListener = new MyEventListener();
geoService.process(geoParameters, eventListener);

我想知道这个parameter和sqlParameters的参数怎么设置,好像没有设置Geometry的地方。

1个回答

您好,您那边使用的产品是哪个产品呢?麻烦详细说一下使用的产品和具体的问题。
9,127EXP 2019年08月29日

现在开发的是imobile三维场景里面遇到的问题,服务是 iserver是9.1.1的发布的,配套的。

刚才上述的问题,我解决了,下面是新的问题:

一个多点围成的区域,我想用这个区域去跟上面的三维模型做求交操作,区域的边界点是一系列的point3D ;

做上述空间查询的时候,需要设置geometry,

GetFeaturesByGeometryParameters params = new GetFeaturesByGeometryParameters();
String[] datasetNames = new String[]{"udb13:b13_polygon"};
params.datasetNames = datasetNames;
params.geometry = geometry;
params.spatialQueryMode = SpatialQueryMode.INTERSECT;
Log.d("GeometryParameters", JsonConverter.toJson(params));

// 与服务器交互
GetFeaturesByGeometryService service = new GetFeaturesByGeometryService(url);
MyGetFeaturesEventListener listener = new MyGetFeaturesEventListener();
service.process(params, listener);

这个geometry应该设置成 GeometryType.REGION是吗?

但是这个REGION怎么通过一系列的点去构建呢

//Point3D point3D = new Point3D(x,y,limitHeight);
geometry = new com.supermap.services.components.commontypes.Geometry();
geometry.type = GeometryType.REGION;

我查看了一下android开发包里面并没有构建REGION的方法,那我应该用这一系列的point3D边界点去构造成什么类型的面,去跟这个模型做求交操作。

Android里面是可以构造GeoRegion的,构造方法GeoRegion3D geoRegion3D = new GeoRegion3D(Point3ds),相应的构造二维面也是可以的。我看你发的代码使用的是iserver的库吗?
之前你们给的android的示例代码里面的代码
...