ArcGIS server使用动态工作空间的服务发布及利用ArcGIS API for Javascript添加动态图层

本篇介绍下 利用arcgis server如何发布使用动态工作空间的服务以及在前端利用ArcGIS API for Javascript添加动态图层。
      所谓动态图层它是需要依附于一个开启动态图层的地图服务,然后把数据资源所在位置注册为这个地图服务的动态工作空间(shape、raster、filegdb、database等),也就是将动态工作空间寄宿到该服务里,在Web前端调用的时候指定图层关联的数据源进行符号化、查询等操作。

具体过程:

1、启用动态工作空间
添加动态工作空间有两种方式:
方法一: 在发布地图服务的时候点击Mapping选项卡里的Manage注册一个工作空间
(1)共享地图服务

(2)动态工作空间的添加,切换到地图Mapping选项卡,点击manage,点击添加。

(3)工作空间类型可以是四种类型:文件地理数据库、企业级数据库、shapefile文件夹、栅格文件夹,本篇示例选择file geodatabase类型。

填写工作空间ID 及连接字符串

(4)发布的时候如果这时候点击分析会看到有一个报错:Dynamic workspace with workspace ID [FileGDBWorkspaceID] is not registered with the server,这个说明工作空间中的数据没有注册,此时可以双击错误进行注册,或者打开server properties窗口进行注册,如下图所示:

(5)发布服务

方法二
也可以对之前已经发布的地图服务,在ArcGIS Server Manager对应服务的功能选项卡里启用添加动态工作空间,如下图所示

点击保存并重新启动才能生效

(6)可以在服务的rest地址去验证下动态工作空间是否成功发布,进入服务的地址,点击下方的 Dynamic Layer,进入测试页面:

输入动态图层json字符串:

点击 get dynamic Layer ,可以看到已经验证成功,

web前端利用arcgis api for javascript进行调用,

示例代码:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8"/>
    <meta name="viewport" content="initial-scale=1,maximum-scale=1,user-scalable=no"/>
    <title>test</title>
    <link rel="stylesheet" href="https://js.arcgis.com/4.14/esri/themes/light/main.css"/>
    <script src="https://js.arcgis.com/4.14/init.js"></script>
    <style>
        html,
        body,
        #viewDiv {
            padding: 0;
            margin: 0;
            height: 100%;
            width: 100%;
        }
    </style>
    <script>
        require([
            "esri/Map",
            "esri/views/MapView",
            "esri/views/SceneView",
            "esri/layers/FeatureLayer",
            "esri/layers/MapImageLayer",
            "esri/widgets/Legend"
        ], function (Map, MapView, SceneView, FeatureLayer, MapImageLayer, Legend) {

            var map = new Map({
                basemap:"osm"
            });

            var view = new MapView({
                container: "viewDiv",
                map: map,
                zoom: 3
            });
              var  layer= new MapImageLayer({
                url:"https://wl.arcgisonline.cn/server/rest/services/wl/dttc/MapServer",
                sublayers: [
                    {
                        title: 'datatable',
                        id: 0,
                        refreshInterval: 0.1,
                        renderer: renderer,
                        opacity: 0.75,
                        source: {
                            type: "data-layer",
                            dataSource: {
                                type: "join-table",
                                leftTableSource: {
                                    type: "map-layer",
                                    mapLayerId: 0
                                },
                                rightTableSource: {
                                    type: "data-layer",
                                    dataSource: {
                                        type: "table",
                                        workspaceId: "FileGDBWorkspaceID",
                                        dataSourceName: "datatable"
                                    }
                                },
                                leftTableKey: "id",
                                rightTableKey: "id",
                                joinType: "left-outer-join"
                            }
                        }
                    }
                ]
            });
              map.add(layer);

            var  renderer = {
                type: "class-breaks", // autocasts as new ClassBreaksRenderer()
                field: "datatable.PM10",
                classBreakInfos: [
                    {
                        minValue: 0,
                        maxValue: 10,
                        symbol: symbolf("#f8e3c2"),
                        label: "0 - 1.26%"
                    },
                    {
                        minValue: 10,
                        maxValue: 20,
                        symbol: symbolf("#e5998c"),
                        label: "1.26 - 2.6%"
                    },
                    {
                        minValue: 20,
                        maxValue: 50,
                        symbol: symbolf("#d86868"),
                        label: "2.6 - 15%"
                    },
                    {
                        minValue: 50,
                        maxValue: 100,
                        symbol: symbolf("#9b3557"),
                        label: "15 - 50%"
                    }
                ]
            };
            function symbolf(color) {
                return {
                    type: "simple-fill",
                    color: color,
                    outline: {
                        width: 0.5,
                        color: [255, 255, 255, 0.4]
                    },
                    style: "solid"
                };
            }
            view.when(function () {
                var legend = new Legend({
                    view: view
                });
                view.ui.add(legend, "bottom-left");
            });

        });
    </script>
</head>
<body>
<div id="viewDiv"></div>
</body>
</html>

(0)

相关推荐