专题图图层

发送反馈


专题图图层,支持矢量图层的点密度专题图、等级符号专题图、统计专题图、标签专题图、分段专题图、单值专题图,栅格图层的分段专题图和单值专题图。专题图的展示可在主线程和监听器类中两种方式来实现。

点密度专题图。专题图效果在主线程中进行展示。

    // 专题图结果
    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;
        }
    }