0%

ArcGIS中导入2000系的OSGB数据后发布服务,并在前端调用

本文在上一篇文章的基础之上,介绍下OSGB的倾斜摄影数据如何导入ArcGIS平台做数据处理、服务发布和前端ArcGIS JS API调用显示的一整套流程。

环境要求

  • ArcGIS Pro 2.2+
  • Portal 10.8或者Online

以上portal版本为自测版本,具体支持的版本号请查看ArcGIS官网。

数据准备

  • OSGB数据(2000坐标系)
  • 一份2000坐标系的shp数据,作为底图(或者用天地图底图,具体使用见昨天的文档)

以上的OSGB数据应该是带有相应元数据信息的xml文件的,单个的OSGB数据在制作slpk时会报错

具体操作步骤

数据处理

1、从ArcGIS Pro 2.2开始,我们就没必要先将OSGB转为multipatch,然后再发布服务。在Pro 2.2往后的版本中,我们直接用Create Integrated Mesh Scene Layer Package这个工具将OSGB转为slpk,然后发布服务即可,具体操作如下。

2、打开ArcGIS Pro,然后配置相应的Online或者Portal连接。

3、在Pro的菜单栏找到分析菜单,然后点击打开工具面板,如下:

img

img

4、在工具面板的顶部搜索框里输入Create Integrated Mesh Scene Layer Package来查找转换工具,打开转换工具面板,如下图:

img

5、然后依次按照下图为此工具面板中配置各个参数:

img

img

img

6、然后点击下方运行按钮来转换数据,最终结果如下:

img

img

img

服务发布

1、打开Portal或者Online登陆后选择Content面板,然后选择左上角的【添加项目】按钮,将我们生成的slpk数据上传,如下:

img

img

img

2、因为我们Portal或者Online提供了上传文件时自动发布服务的功能,所以我们上图中勾选发布服务的选项之后,点击【添加项目】按钮,最终我们的slpk会发布成一个数据服务。

3、发布后的服务我们可以在Portal或者Online的ontent面板中看到,如下:

img

4、具体服务地址可以点击相应的服务后,在右下角看到地址,如下:

img

前端调用

1、发布后的服务在前端需要调用的话需要用到ArcGIS JS API,所以我们要编写相应的代码,具体的调用代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no" />
<title>Intro to SceneView - Create a 3D map</title>
<style>
html,
body,
#viewDiv {
padding: 0;
margin: 0;
height: 100%;
width: 100%;
}
</style>
<link rel="stylesheet" href="https://js.arcgis.com/4.16/esri/themes/light/main.css" />
<script src="https://js.arcgis.com/4.16/"></script>
<script>
require(["esri/Map", "esri/views/SceneView","esri/Basemap",
"esri/layers/MapImageLayer","esri/layers/IntegratedMeshLayer"], function(Map,
SceneView,Basemap,MapImageLayer,IntegratedMeshLayer) {
var basemap = new Basemap({
baseLayers: [
new MapImageLayer({
url: "https://www.arcgisonline.cn/server/rest/services/YNbasemapcgcs2000/MapServer",
title: "Basemap"
})
],
title: "basemap",
id: "basemap"
});

var map = new Map({
basemap: basemap,
//ground: "world-elevation"
});
var view = new SceneView({
container: "viewDiv", // Reference to the scene div created in step 5
map: map, // Reference to the map object created before the scene
zoom: 16, // Sets the initial scale to 1:50,000,000
//scale: 50000,
//center: [118.889198,28.915444] // Sets the center point of view with lon/lat
center: {
x: 118.889198,
y: 28.915444,
spatialReference: {
wkid: 4490,
},
},
});

IntegratedMeshLayer = new IntegratedMeshLayer({
url: "https://www.arcgisonline.cn/server/rest/services/Hosted/result05/SceneServer"
});
view.map.add(IntegratedMeshLayer);

console.log(view);
});
</script>
</head>
<body>
<div id="viewDiv"></div>
</body>
</html>

2、以上代码中需要更改的是两处的服务地址,第一个是文章刚开始时提到的关于底图地址,第二个是发布后的倾斜摄影的服务地址,然后将代码保存在html文件中,通过本地服务访问即可,最后效果如下:

img

附:

底图制作与发布

1、加载相应的地图数据到Pro中,然后通过分析菜单中的工具按钮,打开投影定义工具,如下:

img

2、按照上述配置输入参数后,点击右下方的运行按钮进行坐标定义,如下:

img

3、定义完成后,将其添加至Pro,然后在左侧内容面板中的图层目录上鼠标右击选择发布为服务,如下:

img

4、然后在右侧的服务发布面板输入相应信息,点击发布即可,如下:

img

5、发布成功后,跟上述一样,在Portal或者Online的Content目录下可看到发布的服务。