我是靠谱客的博主 犹豫鸡,最近开发中收集的这篇文章主要介绍ArcGIS Pro2.5 (OSGB)发布三维场景服务并调用一系列操作,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

让我们一起康康ArcGIS Pro如何发布三维服务嘻嘻。

思路:拿到手的OSGB数据先别扔,可以通过Create Integrated Mesh Scene Layer工具转成SLPK文件,SLPK文件可以直接在ArcGIS Portal(门户网站)导航栏的content里上传并share,然后前端就可以调用来显示了。

下面来排坑。

OSGB转SLPK:这里我拿到的OSGB数据好像有问题(预先不知道,一个大坑),而且有70G,用Create Integrated Mesh Scene Layer工具转了两天,到99%的时候因为有一些OSGB文件夹有问题导致工具无法生成最终结果,但是文件夹能够看见生成了SLPK文件,不过这个SLPK文件并不能够被Pro识别。

这是一个悲伤的故事(狗哭了)但是没关系,把我的arcpy逼出来了。

我用几个没问题的OSGB小文件夹测试了一下,是可以转成SLPK并且发布服务的,所以这里我需要从Create Integrated Mesh Scene Layer之前给出的错误日志里找到这些错误OSGB文件夹。

把错误日志复制到txt文本里,然后用python读取并且通过正则处理好错误文件夹名然后存到列表(数组)。

接着开始造GB工具箱,造好把Create Integrated Mesh Scene Layer工具branch给自己造的GP工具箱,然后导入到arcpy里,这样就可以用arcpy调用Create Integrated Mesh Scene Layer工具了,接着只要把参数给搞好,调用就完事了。

输出文件名,锚点,都可以写死,没啥问题。最关键的是输入文件,如何躲开错误文件夹。

自己手动躲开显得我太蠢了,都拿到错误文件夹名了,直接写个过滤方法就O了。先拿到所有OSGB文件夹的路径,然后写个过滤方法,把含有错误文件夹名的路径都过滤了,接着生成没毛病的那些OSGB文件夹路径,我这也有1000多个了。然后调用工具慢慢等待把。

arcpy小教程时间:

ArcGIS Pro自带的python是python3。不知道为啥,我的arcpy内置工具没有Create Integrated Mesh Scene Layer这个工具,想看arcpy里有哪些工具可以去官网看看。

没有就自定义一个工具箱,然后将Create Integrated Mesh Scene Layer工具brach到自己的工具箱。接着用arcpy里导入工具箱的方法导入这个工具箱。没有导入工具箱,虽然能够看得见工具箱里的工具,但是是无法调用工具箱里面的工具的(切记这个坑)。

然后就arcpy.工具箱.模型名就可以调用这个工具了。

前端调用服务:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="initial-scale=1,maximum-scale=1,user-scalable=no">
  <title>Create a local scene - 4.8</title>
  <style>
    html,
    body,
    #viewDiv {
      padding: 0;
      margin: 0;
      height: 100%;
      width: 100%;
    }

    #homeDiv {
      left: 15px;
      top: 130px;
      z-index: 35;
      position: absolute;
    }
  </style>

  <link rel="stylesheet" href="https://js.arcgis.com/4.8/esri/css/main.css">
  <script src="https://js.arcgis.com/4.8/"></script>

  <script>
    require([
      "esri/Map",
      "esri/views/SceneView",
      "esri/layers/IntegratedMeshLayer",
      "dojo/domReady!"
    ], function(Map, SceneView, IntegratedMeshLayer) {

      var wellsUrl =
        "url";  //场景服务的url

      // The clipping extent for the scene
      var kansasExtent = { // autocasts as new Extent() 要显示的范围
        xmax: 43763.292717,
        xmin: 43487.127403,
        ymax: 105127.956954,
        ymin: 104917.374159,
        spatialReference: { // autocasts as new SpatialReference()
          wkid: 4547
        }
      };

      // Layer for depicting wells below the surface
      var wellsLayer = new IntegratedMeshLayer({     //图层的类型是IntegratedMesh类型
        url: wellsUrl,
      });


      var map = new Map({
        layers: wellsLayer
      });

      var view = new SceneView({
        container: "viewDiv",
        map: map,
        clippingArea: kansasExtent,
        extent: kansasExtent,
        // Turns off atmosphere and stars settings
        environment: {
          atmosphere: null,
          starsEnabled: false
        },
        spatialReference: { // autocasts as new SpatialReference()
          wkid: 4547
        }
      });

      });
  </script>
</head>

<body>
  <div id="viewDiv"></div>
</body>
</html>

 

最后

以上就是犹豫鸡为你收集整理的ArcGIS Pro2.5 (OSGB)发布三维场景服务并调用一系列操作的全部内容,希望文章能够帮你解决ArcGIS Pro2.5 (OSGB)发布三维场景服务并调用一系列操作所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(38)

评论列表共有 0 条评论

立即
投稿
返回
顶部