专题图图层 |
专题图图层,支持矢量图层的点密度专题图、等级符号专题图、统计专题图、标签专题图、分段专题图、单值专题图,栅格图层的分段专题图和单值专题图。专题图的展示可在主线程和监听器类中两种方式来实现。
点密度专题图。专题图效果在主线程中进行展示。
// 专题图结果 public ThemeResult result; public void ThemeDotDensity() throws InterruptedException, ExecutionException { // 定义点密度专题图 ThemeDotDensity theme = new ThemeDotDensity(); theme.dotExpression = "Pop_1994"; theme.value = 5000000; ServerStyle dotStyle = new ServerStyle(); dotStyle.markerSize = 3; dotStyle.markerSymbolID = 12; theme.style = dotStyle; // 定义专题图基数类参数 ThemeParameters themeParam = new ThemeParameters(); themeParam.themes = new Theme[] { theme }; themeParam.dataSourceNames = new String[] { "World" }; themeParam.datasetNames = new String[] { "Countries" }; ThemeService themeservice = new ThemeService("http://MyServerIP:8090/iserver/services/map-world/rest/maps/World"); MyThemeServiceEventListener listener = new MyThemeServiceEventListener(); // 和服务端异步通讯 themeservice.process(themeParam, listener); // 等待监听器执行完毕 try { listener.waitUntilProcessed(); } catch (Exception e) { e.printStackTrace(); } // 判断专题图创建是否成功 if (result == null || result.resourceInfo == null || result.resourceInfo.newResourceID == null) { return; } // 展示已创建的专题图 LayerView themeLayer = new LayerView(this,"http://MyServerIP:8090/iserver/services/map-world/rest/maps/World"); themeLayer.setTransparent(true); themeLayer.setLayersID(result.resourceInfo.newResourceID); // mapview中增加专题图图层 mapView.addLayer(themeLayer); } // 监听器类 class MyThemeServiceEventListener extends ThemeServiceEventListener { @Override public void onThemeServiceStatusChanged(Object sourceObject, EventStatus status) { // 返回结果 result = (ThemeResult) sourceObject; } }
等级符号专题图。专题图效果展示代码和点密度专题图一样,这里不重复列出。
// 专题图结果 public ThemeResult result; public void ThemeGraduatedSymbol() throws InterruptedException, ExecutionException { // 定义等级符号样式 ThemeGraduatedSymbolStyle graStyle = new ThemeGraduatedSymbolStyle(); ServerStyle positiveStyle = new ServerStyle(); positiveStyle.markerSize = 50; positiveStyle.markerSymbolID = 0; positiveStyle.lineColor = new ServerColor(255, 165, 0); positiveStyle.fillBackColor = new ServerColor(255, 0, 0); graStyle.positiveStyle = positiveStyle; // 定义等级符号专题图 ThemeGraduatedSymbol theme = new ThemeGraduatedSymbol(); theme.baseValue = 3000000000000.00; theme.expression = "SMAREA"; theme.graduatedMode = GraduatedMode.CONSTANT; theme.flow =new ThemeFlow(); theme.flow.flowEnabled = true; theme.style = graStyle; // 定义专题图基数类参数 ThemeParameters themeParam = new ThemeParameters(); themeParam.themes = new Theme[] { theme }; themeParam.dataSourceNames = new String[] { "China400" }; themeParam.datasetNames = new String[] { "China_Province_R" }; ThemeService themeservice = new ThemeService("http://MyServerIP:8090/iserver/services/map-china400/rest/maps/China"); MyThemeServiceEventListener listener = new MyThemeServiceEventListener(); // 和服务端异步通讯 themeservice.process(themeParam, listener); // 等待监听器执行完毕 try { listener.waitUntilProcessed(); } catch (Exception e) { e.printStackTrace(); } } // 监听器类 class MyThemeServiceEventListener extends ThemeServiceEventListener { @Override public void onThemeServiceStatusChanged(Object sourceObject, EventStatus status) { // 返回结果 result = (ThemeResult) sourceObject; } }
统计专题图。专题图效果展示代码和点密度专题图一样,这里不重复列出。
// 专题图结果 public ThemeResult result; public void ThemeGraph() throws InterruptedException, ExecutionException { // 定义统计专题图子项1 ThemeGraphItem item1 = new ThemeGraphItem(); item1.caption = "1992-1995人口增长率"; item1.graphExpression = "Pop_Rate95"; ServerStyle style1 = new ServerStyle(); style1.fillForeColor = new ServerColor(); style1.fillForeColor.blue = 234; style1.fillForeColor.green = 73; style1.fillForeColor.red = 92; item1.uniformStyle = style1; // 定义统计专题图子项2 ThemeGraphItem item2 = new ThemeGraphItem(); item2.caption = "1992-1995人口增长率"; item2.graphExpression = "Pop_Rate99"; ServerStyle style2 = new ServerStyle(); style2.fillForeColor = new ServerColor(); style2.fillForeColor.blue = 240; style2.fillForeColor.green = 111; style2.fillForeColor.red = 211; item2.uniformStyle = style2; // 定义统计专题图 ThemeGraph theme = new ThemeGraph(); theme.items = new ThemeGraphItem[] { item1, item2 }; theme.barWidth = 0.05; theme.graduatedMode = GraduatedMode.SQUAREROOT; theme.graphAxes = new ThemeGraphAxes(); theme.graphAxes.axesDisplayed = true; theme.graphSize = new ThemeGraphSize(); theme.graphSize.maxGraphSize = 1; theme.graphSize.minGraphSize = 0.35; theme.graphText = new ThemeGraphText(); theme.graphText.graphTextDisplayed = true; theme.graphText.graphTextFormat = ThemeGraphTextFormat.VALUE; theme.graphType = ThemeGraphType.BAR3D; // 定义专题图基数类参数 ThemeParameters themeParam = new ThemeParameters(); themeParam.themes = new Theme[] { theme }; themeParam.dataSourceNames = new String[] { "Jingjin" }; themeParam.datasetNames = new String[] { "BaseMap_R" }; ThemeService themeservice = new ThemeService("http://MyServerIP:8090/iserver/services/map-jingjin/rest/maps/京津地区土地利用现状图"); MyThemeServiceEventListener listener = new MyThemeServiceEventListener(); // 和服务端异步通讯 themeservice.process(themeParam, listener); // 等待监听器执行完毕 try { listener.waitUntilProcessed(); } catch (Exception e) { e.printStackTrace(); } } // 监听器类 class MyThemeServiceEventListener extends ThemeServiceEventListener { @Override public void onThemeServiceStatusChanged(Object sourceObject, EventStatus status) { // 返回结果 result = (ThemeResult) sourceObject; } }
标签专题图。专题图效果展示代码和点密度专题图一样,这里不重复列出。
// 专题图结果 public ThemeResult result; public void ThemeLabel() throws InterruptedException, ExecutionException { //定义标签专题图 ThemeLabel themelabel= new ThemeLabel(); themelabel.text = new ThemeLabelText(); themelabel.text.uniformStyle = new ServerTextStyle(); themelabel.text.uniformStyle.align = TextAlignment.MIDDLECENTER; themelabel.text.uniformStyle.foreColor = new ServerColor(29, 169, 29); themelabel.text.uniformStyle.fontHeight = 4; themelabel.text.uniformStyle.fontName = "宋体"; themelabel.text.uniformStyle.fontWeight = 10; themelabel.labelExpression = "Capital"; themelabel.labelOverLengthMode = LabelOverLengthMode.NONE; // 定义专题图基数类参数 ThemeParameters themeParam= new ThemeParameters(); themeParam.themes = new Theme[]{themelabel}; themeParam.dataSourceNames = new String[]{"World"}; themeParam.datasetNames =new String[]{"Countries"}; ThemeService themeservice = new ThemeService("http://MyServerIP:8090/iserver/services/map-world/rest/maps/World"); MyThemeServiceEventListener listener = new MyThemeServiceEventListener(); // 和服务端异步通讯 themeservice.process(themeParam, listener); // 等待监听器执行完毕 try { listener.waitUntilProcessed(); } catch (Exception e) { e.printStackTrace(); } } // 监听器类 class MyThemeServiceEventListener extends ThemeServiceEventListener { @Override public void onThemeServiceStatusChanged(Object sourceObject, EventStatus status) { // 返回结果 result = (ThemeResult) sourceObject; } }
分段专题图。专题图效果展示代码和点密度专题图一样,这里不重复列出。
// 专题图结果 public ThemeResult result; public void ThemeRange() throws InterruptedException, ExecutionException { // 定义分段专题图子项1 ThemeRangeItem item1 = new ThemeRangeItem(); item1.start = 0; item1.end = 500000000000.0; ServerStyle style1 = new ServerStyle(); style1.fillForeColor = new ServerColor(137, 203, 187); style1.lineColor = new ServerColor(0, 0, 0); style1.lineWidth = 0.1; item1.style = style1; // 定义分段专题图子项2 ThemeRangeItem item2 = new ThemeRangeItem(); item2.start = 500000000000.0; item2.end = 1000000000000.0; ServerStyle style2 = new ServerStyle(); style2.fillForeColor = new ServerColor(233, 235, 171); style2.lineColor = new ServerColor(0, 0, 0); style2.lineWidth = 0.1; item2.style = style2; // 定义分段专题图子项3 ThemeRangeItem item3 = new ThemeRangeItem(); item3.start = 1000000000000.0; item3.end = 3000000000000.0; ServerStyle style3 = new ServerStyle(); style3.fillForeColor = new ServerColor(135, 157, 157); style3.lineColor = new ServerColor(0, 0, 0); style3.lineWidth = 0.1; item3.style = style3; // 定义分段专题图 ThemeRange theme = new ThemeRange(); theme.items = new ThemeRangeItem[] { item1, item2, item3 }; theme.rangeExpression = "SMAREA"; theme.rangeMode = RangeMode.EQUALINTERVAL; // 定义专题图基数类参数 ThemeParameters themeParam = new ThemeParameters(); themeParam.themes = new Theme[] { theme }; themeParam.dataSourceNames = new String[] { "China400" }; themeParam.datasetNames = new String[] { "China_Province_R" }; ThemeService themeservice = new ThemeService("http://MyServerIP:8090/iserver/services/map-china400/rest/maps/China"); MyThemeServiceEventListener listener = new MyThemeServiceEventListener(); // 和服务端异步通讯 themeservice.process(themeParam, listener); // 等待监听器执行完毕 try { listener.waitUntilProcessed(); } catch (Exception e) { e.printStackTrace(); } } // 监听器类 class MyThemeServiceEventListener extends ThemeServiceEventListener { @Override public void onThemeServiceStatusChanged(Object sourceObject, EventStatus status) { // 返回结果 result = (ThemeResult) sourceObject; } }
单值专题图。专题图效果展示代码和点密度专题图一样,这里不重复列出。
// 专题图结果 public ThemeResult result; public void ThemeUnique() throws InterruptedException, ExecutionException { // 风格1 ServerStyle style1 = new ServerStyle(); style1.fillForeColor = new ServerColor(248, 203, 249); style1.lineColor = new ServerColor(0, 0, 0); style1.lineWidth = 0.1; // 风格2 ServerStyle style2 = new ServerStyle(); style2.fillForeColor = new ServerColor(196, 255, 189); style2.lineColor = new ServerColor(0, 0, 0); style2.lineWidth = 0.1; // 子项1 ThemeUniqueItem item1 = new ThemeUniqueItem(); item1.unique = "黑龙江省"; item1.style = style1; // 子项2 ThemeUniqueItem item2 = new ThemeUniqueItem(); item2.unique = "北京市"; item2.style = style2; // 定义单值专题图 ThemeUnique theme = new ThemeUnique(); theme.items = new ThemeUniqueItem[] { item1, item2 }; theme.uniqueExpression = "Name"; theme.defaultStyle = style1; // 定义专题图基数类参数 ThemeParameters themeParam = new ThemeParameters(); themeParam.themes = new Theme[] { theme }; themeParam.dataSourceNames = new String[] { "China400" }; themeParam.datasetNames = new String[] { "China_Province_R" }; ThemeService themeservice = new ThemeService("http://MyServerIP:8090/iserver/services/map-china400/rest/maps/China"); MyThemeServiceEventListener listener = new MyThemeServiceEventListener(); // 和服务端异步通讯 themeservice.process(themeParam, listener); // 等待监听器执行完毕 try { listener.waitUntilProcessed(); } catch (Exception e) { e.printStackTrace(); } } // 监听器类 class MyThemeServiceEventListener extends ThemeServiceEventListener { @Override public void onThemeServiceStatusChanged(Object sourceObject, EventStatus status) { // 返回结果 result = (ThemeResult) sourceObject; } }
栅格分段专题图。专题图效果展示代码和点密度专题图一样,这里不重复列出。
// 专题图结果 public ThemeResult result; public void ThemeGridRange() throws InterruptedException, ExecutionException { // 定义栅格分段专题图子项1 ThemeGridRangeItem item1 = new ThemeGridRangeItem(); item1.start = -4; item1.end = 120; item1.color = new ServerColor(198, 244, 240); // 定义栅格分段专题图子项2 ThemeGridRangeItem item2 = new ThemeGridRangeItem(); item2.start = 120; item2.end = 240; item2.color = new ServerColor(176, 244, 188); // 定义栅格分段专题图 ThemeGridRange theme = new ThemeGridRange(); theme.reverseColor = false; theme.rangeMode = RangeMode.EQUALINTERVAL; theme.items = new ThemeGridRangeItem[] { item1, item2 }; // 定义专题图基数类参数 ThemeParameters themeParam = new ThemeParameters(); themeParam.themes = new Theme[] { theme }; themeParam.dataSourceNames = new String[] { "Jingjin" }; themeParam.datasetNames = new String[] { "JingjinTerrain" }; ThemeService themeservice = new ThemeService("http://MyServerIP:8090/iserver/services/map-jingjin/rest/maps/京津地区人口分布图_专题图"); MyThemeServiceEventListener listener = new MyThemeServiceEventListener(); // 和服务端异步通讯 themeservice.process(themeParam, listener); // 等待监听器执行完毕 try { listener.waitUntilProcessed(); } catch (Exception e) { e.printStackTrace(); } } // 监听器类 class MyThemeServiceEventListener extends ThemeServiceEventListener { @Override public void onThemeServiceStatusChanged(Object sourceObject, EventStatus status) { // 返回结果 result = (ThemeResult) sourceObject; } }
栅格单值专题图。专题图效果展示代码和点密度专题图一样,这里不重复列出。
// 专题图结果 public ThemeResult result; public void ThemeGridUnique() throws InterruptedException, ExecutionException { // 定义栅格单值专题图子项1 ThemeGridUniqueItem item1 = new ThemeGridUniqueItem(); item1.caption = "子项1"; item1.unique = 0; // 栅格值 item1.color = new ServerColor(198, 244, 240); // 定义栅格单值专题图子项2 ThemeGridUniqueItem item2 = new ThemeGridUniqueItem(); item1.caption = "子项2"; item1.unique = 100; // 栅格值 item2.color = new ServerColor(176, 244, 188); // 定义栅格单值专题图 ThemeGridUnique theme = new ThemeGridUnique(); theme.defaultcolor = new ServerColor(0, 0, 0); theme.items = new ThemeGridUniqueItem[] { item1, item2 }; // 定义专题图基数类参数 ThemeParameters themeParam = new ThemeParameters(); themeParam.themes = new Theme[] { theme }; themeParam.dataSourceNames = new String[] { "Jingjin" }; themeParam.datasetNames = new String[] { "JingjinTerrain" }; ThemeService themeservice = new ThemeService("http://MyServerIP:8090/iserver/services/map-jingjin/rest/maps/京津地区土地利用现状图"); MyThemeServiceEventListener listener = new MyThemeServiceEventListener(); // 和服务端异步通讯 themeservice.process(themeParam, listener); // 等待监听器执行完毕 try { listener.waitUntilProcessed(); } catch (Exception e) { e.printStackTrace(); } } // 监听器类 class MyThemeServiceEventListener extends ThemeServiceEventListener { @Override public void onThemeServiceStatusChanged(Object sourceObject, EventStatus status) { // 返回结果 result = (ThemeResult) sourceObject; } }