分布式分析

服务搭建

第一步:下载SuperMap iServer(9D及以上版本),下载完成后,解压缩文件,目录结构如下:

图:下载SuperMap iServer
图:SuperMap iServer目录结构

第二步:启动iServer服务

运行“..\bin”路径下的“startup.bat”文件,启动iServer服务,出现如下界面,启动成功。

图:SuperMap iServer服务启动成功

第三步:注册和登录

在浏览器中输入“iServer服务地址:端口号/iserver”,如“192.168.12.4:8090/iserver”,打开iserver页面。首次使用时,需要创建管理员账户。在下列页面中,输入账户和密码,点击“下一步”。已有账号的用户,直接输入账号和密码。

若忘记密码,运行“..\bin”路径下的“shutdown.bat”文件,关闭iServer服务。然后运行“..\bin”路径下的“passwordreset.bat”文件,重置密码。再次运行“startup.bat”启动服务,待服务启动完成后,在浏览器中输入地址,打开iServer页面,重新创建管理员账户和密码。

图:创建管理员账户

进入“检查系统环境”页面,点击“下一步”。

图:检查系统环境

进入“检查许可信息”页面,点击“下一步”。

图:检查许可信息

在“配置示范服务”页面,选择“示范服务语言”,支持“中文”和“英文”,点击“下一步”。

图:配置示范服务

配置完成,结果如下所示。

图:服务配置完成

第四步:服务管理

配置完成后,刷新页面,进入iServer首页,如下所示,选择“服务管理”,出现登录页面,输入上一步创建的管理员账户和密码,进入“服务管理”页面。

图:进入“服务管理”
图:登录SuperMap iServer”

在“服务管理”页面,选择“集群”,进入“集群”页面。

图:进入“集群”

在“集群”页面,选择“分布式分析服务”选项卡。

图:进入“分布式分析服务”

在“分布式分析服务”页面,勾选“是否启用”。

图:勾选“是否”启用

勾选后,显示如下页面,填写相关信息。

图:写服务信息

其中,关联服务地址为iServer服务的地址。关联服务Token的获取,点击“在这里”进入生成令牌页面,输入用户名和密码,客户端标识类型选择“无客户端限制”,有效期根据使用时间选择,点击“生产令牌”,将生成的令牌的内容,拷贝至此处。

图:生成令牌1
图:生成令牌2

分布式分析服务的相关内容填写完毕后,点击“保存”, 根据应用情况选择需要配置的Spark集群并保存。

图:选择Spark集群

保存成功后,可以看到Spark主节点已经可用。

图:分布式分析服务配置完成

第五步:数据注册

选择“数据注册”选项卡,选择“注册数据存储”。

图:注册数据储存

根据数据的类型,进行相应的设置。若数据存储类型选择“大数据文件共享”,共享目录是iServer服务所在的设备中的目录。

图:注册数据存储(以大数据文件共享为例)

数据注册完成后,可以看到右侧的状态都是可用的。

图:数据注册完成

第六步:加入集群

选择“加入集群”选项卡,点击“添加报告器”。

图:加入集群

输入集群服务地址,注意“报告器是否启用”、“是否分布式分析节点”两项必须勾选。

图:添加报告器

保存添加,分布式分析服务,搭建完毕。

图:加入集群完成

第七步:验证(可选)

服务搭建完成后,可以进行如下验证,检测服务搭建是否成功。

选择“服务——服务管理——分布式分析服务——distributedanalyst”。

图:创建分布式分析服务

选择已搭建的服务地址,选择“jobs——spatialanalyst”。

图:选择“服务地址”
图:选择“REST服务根资源”
图:选择“分布式分析作业目录”

在“空间分析作业目录”页面,列出了所有的分析服务,以密度图(density)为例。

图:选择“密度分析(density)”

在“密度分析的作业列表”中,点击“创建分析任务”。

图:创建密度分析服务

根据数据内容,设置相关参数,点击“创建分析服务”,等待服务生成。

图:填写服务参数

在“进度信息”栏,可以监测进度情况和生成状态。

图:查看服务进度

服务生成完毕,可以在下方“地图列表”中,选择“浏览于…”,查看结果。

图:查看结果
图:密度分析结果

分布式分析

点聚合分析

第一步:创建点聚合分析。

//添加分布式分析监听器
m_AggregatePointsOnline.addListener(MainActivity.this);
//登录iServer
m_AggregatePointsOnline.login(m_ip, m_port, m_name, m_password);
//设置数据路径(必填项)
m_AggregatePointsOnline. setDatasetSource ("iMobile_chart_科教文化服务");
//设置网格面类型 0:四边形网格 1:六边形网格 (必填项)
m_AggregatePointsOnline.setMeshType(0);
//设置聚合类型 SUMMARYMESH:网格面聚合 SUMMARYREGION:多边形聚合(必填项)
m_AggregatePointsOnline.setAggregateType("SUMMARYMESH");
//设置网格大小(必填项)
m_AggregatePointsOnline.setResolution(100);
//设置网格单位 可用值包括:Meter(默认),Kilometer,Yard,Foot,Mile
m_AggregatePointsOnline.setMeshSizeUnit("Meter");
//执行分析
m_AggregatePointsOnline.execute();

第二步:移动端展示分析结果。

@Override
public void onPostExecute(final boolean bResult, final ArrayList<String> datasources) {
  runOnUiThread(new Runnable() {
    @Override
    public void run() {
      if (bResult && datasources != null && datasources.size() > 0) {
        String url = datasources.get(0);
        DatasourceConnectionInfo datasourceConnectionInfo = new DatasourceConnectionInfo();
        datasourceConnectionInfo.setEngineType(EngineType.Rest);
        datasourceConnectionInfo.setServer(url);
        Datasource datasource = m_wokspace.getDatasources().open(datasourceConnectionInfo);
        //添加至地图
        if (datasource != null) {
          m_mapControl.getMap().getLayers().add(datasource.getDatasets().get(0), true);
          m_mapControl.getMap().refresh();
        }
      }
    }
  });
}
图:移动端点聚合分析展示

缓冲区分析

第一步:创建缓冲区分析。

//添加分布式分析监听器
m_BufferAnalystOnline.addListener(MainActivity.this);
//登陆iServer
m_BufferAnalystOnline.login(m_ip, m_port, m_name, m_password);
//设置输入源数据集(必填项)
m_BufferAnalystOnline.setDatasetSource("iMobile_chart_road");
//设置缓冲距离
m_BufferAnalystOnline.setDistance(100);
//执行分析
m_BufferAnalystOnline.execute();

第二步:移动端展示分析结果。

同“点聚合分析”,略。

图:移动端缓冲区分析展示

密度分析

第一步:创建密度分析。

//添加分布式分析监听器
m_DensityAnalystOnline.addListener(MainActivity.this);
//登录iServer
m_DensityAnalystOnline.login(m_ip, m_port, m_name, m_password);
//设置数据路径(必填项)
m_DensityAnalystOnline. setDatasetSource("iMobile_chart_高等院校");
//设置网格面类型 0:四边形网格 1:六边形网格 (必填项)
m_DensityAnalystOnline.setMeshType(0);
//设置密度分析的分析方法  0:简单点密度分析 1:核密度分析 (必填项)
m_DensityAnalystOnline.setAnalystMethod(0);
//设置网格大小(必填项)
m_DensityAnalystOnline.setResolution(100);
//设置搜索半径(必填项)
m_DensityAnalystOnline.setRadius(500);
//执行分析
m_DensityAnalystOnline.execute();

第二步:移动端展示分析结果。

同“点聚合分析”,略。

图:移动端密度分析展示

叠加分析

第一步:创建叠加分析。

//添加分布式分析监听器
m_OverlayAnalystOnline.addListener(MainActivity.this);
//登陆iServer
String ip = "192.168.12.4";
String port = "8090";
String name = "iMobile";
String password = "iMobile_910";
m_OverlayAnalystOnline.login(ip,port,name,password);
//设置输入源数据集(必填项)
m_OverlayAnalystOnline.setDatasetSource("iMobile_chart_名胜景点");
//设置叠加对象数据集(必填项)
m_OverlayAnalystOnline.setDatasetOverlay("iMobile_chart_beijing");
//设置叠加分析模式(必填项)
m_OverlayAnalystOnline.setAnalystMode("clip");
//执行分析
m_OverlayAnalystOnline.execute();

第二步:移动端展示分析结果。

同“点聚合分析”,略。

图:移动端叠加分析展示

单对象空间查询分析

第一步:创建单对象空间查询分析。

//添加分布式分析监听器
m_QueryOnline.addListener(MainActivity.this);
//登陆iServer
String ip = "192.168.12.4";
String port = "8090";
String name = "iMobile";
String password = "iMobile_910";
m_ QueryOnline.login(ip,port,name,password);
//设置查询对象数据集(必填项)
m_QueryOnline.setDataset("iMobile_chart_beijing");
//设置源数据集(必填项)
m_QueryOnline.setDatasetSource("iMobile_chart_科教文化服务");
//设置查询模式(必填项)
m_QueryOnline.setQueryMode("CONTAIN");
//设置查询对象类型(必填项)
m_QueryOnline.setQueryType(QueryOnline.QueryType.DATASET_QUERY);
//执行分析
m_QueryOnline.execute();

第二步:移动端展示分析结果。

同“点聚合分析”,略。

图:移动端单对象空间查询分析展示

区域汇总分析

第一步:创建区域汇总分析。

//添加分布式分析监听器
m_SummaryRegionOnline.addListener(MainActivity.this);
//登录iServer
String ip = "192.168.12.4";
String port = "8090";
String name = "iMobile";
String password = "iMobile_910";
m_SummaryRegionOnline.login(ip, port, name, password);
//设置数据路径(必填项)
m_SummaryRegionOnline.setDatasetSource("iMobile_chart_road");
//设置网络面汇总类型 0:四边形网格   1:六边形网格
m_SummaryRegionOnline.setMeshType(0);
// 设置汇总类型 SUMMARYMESH:网格面汇总 SUMMARYREGION:多边形汇总
m_SummaryRegionOnline.setSummaryType("SUMMARYMESH");
// 设置标准属性字段统计
m_SummaryRegionOnline.setStandardFields("KIND", "max");
//设置网格大小
m_SummaryRegionOnline.setResolution(200);
//设置权重字段统计
m_SummaryRegionOnline.setWeightedFields("", "");
//执行分析
m_SummaryRegionOnline.execute();

第二步:移动端展示分析结果。

同“点聚合分析”,略。

图:移动端汇总分析展示

拓扑检查

第一步:创建拓扑检查。

//添加分布式分析监听器
m_TopologyValidatorOnline.addListener(MainActivity.this);
//登陆iServer
String ip = "192.168.12.4";
String port = "8090";
String name = "iMobile";
String password = "iMobile_910";
m_TopologyValidatorOnline.login(ip, port, name, password);
//设置输入源数据集(必填参数)。
m_TopologyValidatorOnline.setDatasetSource("iMobile_chart_road");
//设置拓扑检查数据集
m_TopologyValidatorOnline.setDatasetTopology("iMobile_chart_road");
//设置拓扑检查规则
m_TopologyValidatorOnline.setRule(TopologyValidatorOnline.RuleType.LINENOOVERLAPWITH);
//执行分析
m_TopologyValidatorOnline.execute();

第二步:移动端展示分析结果。

同“点聚合分析”,略。

图:移动端创建拓扑检查展示

矢量裁剪

第一步:创建矢量裁剪分析。

//添加分布式分析监听器
m_VectorClipAnalystOnline.addListener(MainActivity.this);
//登陆iServer
String ip = "192.168.12.4";
String port = "8090";
String name = "iMobile";
String password = "iMobile_910";
m_VectorClipAnalystOnline.login(ip, port, name, password);
//设置裁剪对象数据集(必填项)
m_VectorClipAnalystOnline.setDataset("iMobile_chart_beijing");
//设置源数据集(必填项)
m_VectorClipAnalystOnline.setDatasetSource("iMobile_chart_名胜景点");
//设置裁剪分析模式(必填项) clip:内部裁剪 intersect:外部裁剪
m_VectorClipAnalystOnline.setAnalystMode("clip");
//设置裁剪对象的类型(必填项)
m_VectorClipAnalystOnline.setClipType(VectorClipAnalystOnline.ClipType.DATASET_VECTOR_CLIP);
//执行分析
m_VectorClipAnalystOnline.execute();

第二步:移动端展示分析结果。

同“点聚合分析”,略。

图:移动端矢量裁剪分析展示