首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

【GeoScene】一、创建、发布路网服务,并在代码中测试最短路径分析

编程知识
2024年08月02日 16:09

前言

网上关于GeoScene及GeoScene API for JavaScript的资料太少了,官方的技术支持又太慢了,最近把在项目中踩过的坑分享出来;

**版本信息**
    GeoScene Pro 4.0
    GeoScene Enterprise 3.1
    GeoScene API for JavaScript 4.27.4

一、创建网络分析图层

1、在地理数据库中新建要素数据集

右击地理数据库 -> 新建 -> 要素数据集 -> 输入要素数据集名称、坐标系 -> 创建

image

2、导入路网要素类

右击要素数据集 -> 导入 -> 要素类 -> 选择路网shp文件 -> 导入

image

可以将导入的要素类加载的地图中检查一下,是否存在问题

image

3.创建网络数据集

右击要素数据集 -> 新建 -> 网络数据集 -> 填写名称、勾选要素类(这里高层模型没玩明白,自行研究吧) -> 运行

image

然后要素数据集中就会增加两个(一个是网络数据集、一个是交汇点),网络数据集也会加载到地图中去

image

4、设置网络数据集并构建

右键刚创建的网络数据集 -> 常规 -> 服务区索引-> 源设置 -> 组连通性 -> 策略修改为任意节点(默认是端点,但是我的路网不是很规范,会导致分析出来的结果有点问题,所以我就修改为这样了);修改后保存

image

右击网络数据集 -> 选择构建 -> 运行,等待运行结束
image

分析 -> 网络分析 -> 路径,这样就会生成一个路线/路径图层组,
image

二、桌面端测试网络分析服务

选择路线/路径图层组 -> 路径图层 -> 创建要素 -> 创建停靠点、点障碍、线障碍等要素

image

这里我创建了三个停靠点和一条障碍线,创建完成后点击运行分析路线

image

三、发布服务

图层组重命名(geoscene pro默认生成图层组的名称是中文的而且存在斜杠,后面使用过程中会有问题,所以我们需要手动修改)
image

选择共享 -> 填写名称、摘要、标签 -> 如果你的数据源注册到服务器上了,数据和图层类型可以选择引用,地图服务;我这里因为是文件数据库,没注册,所以选择的复制 -> 一定要切换到配置页面勾选网络分析 -> 然后点击分析、发布,等待发布完成

发布服务之前记得提前连接门户并登录,然后将门户设置为活动门户

image

发布成功后就可以在门户中看到
image

四、JS调用

这个我直接贴代码吧,逻辑很简单

<!--
 * @Author: xuhanchi
 * @Date: 2024-06-18 11:01:14
 * @LastEditors: TanXJ
 * @LastEditTime: 2024-08-02 16:59:41
 * @Description: 最短路径分析
-->
<template>
    <div></div>
</template>

<script setup>
import { ref, reactive, onMounted } from "vue"
import Map from "@geoscene/core/Map"
import SceneView from "@geoscene/core/views/SceneView"
import WebTileLayer from "@geoscene/core/layers/WebTileLayer"
import FeatureLayer from "@geoscene/core/layers/FeatureLayer"
import Collection from "@geoscene/core/core/Collection"
import Stop from "@geoscene/core/rest/support/Stop"
import * as route from "@geoscene/core/rest/route"
import Graphic from "@geoscene/core/Graphic"
import RouteParameters from "@geoscene/core/rest/support/RouteParameters"

let view = null

onMounted(() => {
    initView()
})

// 初始化场景
const initView = () => {
    view = new SceneView({
        map: new Map(),
        container: "viewDiv",
        camera: {
            position: {
                x: 114.356454,
                y: 30.546360,
                z: 40000
            }
        }
    })
    // Google影像地图
    const googleLayer = new WebTileLayer({
        urlTemplate: "https://mt3.google.com/vt/lyrs=s&x={x}&y={y}&z={z}",
        subDomains: ["mt0", "mt1", "mt2", "mt3"]
    })
    view.map.add(googleLayer)

    // 加载路网图层
    const featureLayer = new FeatureLayer({
        url: "/server/rest/services/roads_analyze/MapServer/6",
        renderer: {
            type: "simple",
            symbol: {
                type: "simple-line",
                width: 2,
                style: "solid",
                color: "#FFAA00"
            }
        }
    })
    view.map.add(featureLayer)

    // 最短路径分析
    const routeParams = new RouteParameters({
        stops: new Collection([
            new Stop({ geometry: { x: 114.168312, y: 30.538078 } }),
            new Stop({ geometry: { x: 114.260126, y: 30.558536 } }),
            new Stop({ geometry: { x: 114.250880, y: 30.520646 } }),
            new Stop({ geometry: { x: 114.287516, y: 30.510952 } }),
            new Stop({ geometry: { x: 114.297802, y: 30.421159 } }),
            new Stop({ geometry: { x: 114.396715, y: 30.460172 } }),
            new Stop({ geometry: { x: 114.396303, y: 30.502812 } })
        ])
    })
    // 创建点、文字
    routeParams.stops.items.forEach((element, key) => {
        const pointGraphic = new Graphic({
            geometry: element.geometry,
            symbol: {
                type: 'simple-marker',
                style: 'circle',
                color: 'red',
                size: '20px'
            }
        })
        view.graphics.add(pointGraphic)

        const textGraphic = new Graphic({
            geometry: element.geometry,
            symbol: {
                type: 'text',
                color: "white",
                text: key
            }
        })
        view.graphics.add(textGraphic)
    });
    // 分析路径
    route.solve("/server/rest/services/roads_analyze/NAServer/testroad", routeParams).then((routeSolveResult) => {
        let geometry = routeSolveResult.routeResults[0].route.geometry
        var pathGraphic = new Graphic({
            geometry: geometry,
            symbol: {
                type: 'simple-line',
                color: 'red',
                width: '4px',
                style: 'solid'
            }
        })
        view.graphics.add(pathGraphic)
    })
}

</script>

<style lang="scss" scoped>
#viewDiv {
    width: 100%;
    height: 100%;
}
</style>

最终实现效果:
image

From:https://www.cnblogs.com/tanxj/p/18337096
本文地址: http://www.shuzixingkong.net/article/718
0评论
提交 加载更多评论
其他文章 SemanticKernel/C#:使用Ollama中的对话模型与嵌入模型用于本地离线场景
本文介绍了在SemanticKernel/C#中如何使用Ollama中的对话模型与嵌入模型用于本地离线场景。
SemanticKernel/C#:使用Ollama中的对话模型与嵌入模型用于本地离线场景 SemanticKernel/C#:使用Ollama中的对话模型与嵌入模型用于本地离线场景 SemanticKernel/C#:使用Ollama中的对话模型与嵌入模型用于本地离线场景
.Net 6.0 Web API 项目生成镜像并上传到私有仓库 Harbor
本文首先简单介绍了 Dockerfile 内容和常用命令;然后是在 Windows 环境 Docker desktop 的安装和配置;最后创建了 Web API 示例项目,并简单说明了从构建到推送至 Harbor 镜像仓库的步骤。
.Net 6.0 Web API 项目生成镜像并上传到私有仓库 Harbor .Net 6.0 Web API 项目生成镜像并上传到私有仓库 Harbor .Net 6.0 Web API 项目生成镜像并上传到私有仓库 Harbor
DASCTF2022.07赋能赛PWN部分WP
DASCTF2022.07赋能赛PWN部分WP eyfor 程序保护情况 64位ida逆向 可以看见是一个随机数的逻辑,只要我们猜不对4次就可以进入漏洞函数,但是我感觉这原本可能是==号,让用随机数的 那我们就4次不输入一个数就可以进入漏洞函数,这里注意这个a1就是我们进入漏洞函数之前要输入的值,可
DASCTF2022.07赋能赛PWN部分WP DASCTF2022.07赋能赛PWN部分WP DASCTF2022.07赋能赛PWN部分WP
我菜单为什么跟着滑动了?!!—— 固定定位为什么会失效?
背景:最近在写一个H5页面项目,头部有个菜单栏,需要固定在顶部不动,但是滑动之后设置并没有生效,之前开发中也遇到过类似的固定失效的情况,就去详细了解了下有哪些可能导致固定定位失效的情况。希望有些场景能帮助到你。下面我总结和详细说明了会导致失效的情况,那么我们接着往下看...
我菜单为什么跟着滑动了?!!—— 固定定位为什么会失效? 我菜单为什么跟着滑动了?!!—— 固定定位为什么会失效?
Win11不在C盘安装WSL2(Linux环境),安装Nvidia驱动和默认使用Win11的网络代理服务
众所周知,WSL 2 为 Windows 用户提供了一个强大、高效且灵活的 Linux 环境,特别适合开发者使用。它结合了 Windows 和 Linux 的优点,为用户提供了更加全面和高效的工作环境。但缺点也很明显,那就是默认安装在本来空间就不富裕的C盘。 本次我们在非C盘的盘符快速安装
Win11不在C盘安装WSL2(Linux环境),安装Nvidia驱动和默认使用Win11的网络代理服务 Win11不在C盘安装WSL2(Linux环境),安装Nvidia驱动和默认使用Win11的网络代理服务 Win11不在C盘安装WSL2(Linux环境),安装Nvidia驱动和默认使用Win11的网络代理服务
ByteHouse高性能向量检索实践——“以图搜图”
ByteHouse 致力于实现全场景引擎覆盖,以确保实现整体数据效能的最大化产出。除了支持向量检索能力的Vector引擎,ByteHouse还具有全文检索引擎、GIS引擎在内的全场景引擎,为用户提供一体化数据分析服务。
ByteHouse高性能向量检索实践——“以图搜图” ByteHouse高性能向量检索实践——“以图搜图” ByteHouse高性能向量检索实践——“以图搜图”
【VMware VCF】VMware Cloud Foundation Part 06:部署 VI 工作负载域。
VMware Cloud Foundation 标准架构中,管理域和 VI 工作负载域需要分开部署,管理域是初始构建(Bring-up)中部署的一个工作负载域并且只有一个,管理域专门用于承载管理相关组件虚拟机。之前文章(VMware Cloud Foundation Part 05:部署 SDDC
【VMware VCF】VMware Cloud Foundation Part 06:部署 VI 工作负载域。 【VMware VCF】VMware Cloud Foundation Part 06:部署 VI 工作负载域。 【VMware VCF】VMware Cloud Foundation Part 06:部署 VI 工作负载域。
万字干货:从消息流平台Serverless之路,看Serverless标准演进
摘要:如今,Serverless化已经成为消息流平台发展的新趋势,而如何更好地基于Serverless化的消息流平台进行应用设计和开发,则成为了一个值得思考的问题。 本文分享自华为云社区《9000字干货:从消息流平台Serverless之路,看Serverless标准演进》,作者:华为云PaaS服务
万字干货:从消息流平台Serverless之路,看Serverless标准演进 万字干货:从消息流平台Serverless之路,看Serverless标准演进 万字干货:从消息流平台Serverless之路,看Serverless标准演进