import request from '@/api/request'
|
import bus from './bus'
|
import { intensity, getbounds, createPic, picurl } from "@/api/http";
|
import { Message, Loading } from 'element-ui';
|
import data from "../utils/data.json"
|
|
|
|
//白膜
|
export function loadBaimo(num) {
|
//上海小面积白膜
|
let url1 = "http://183.162.245.49:8099/SHdata/SH_CLIP_BM/tileset.json"
|
let url12 = "http://183.162.245.49:8099/SHdata/LJZ_JM_BM1/tileset.json"
|
|
//广州精模 2 3 4
|
let url2 = "http://183.162.245.49:82/SG/b3dm/part1.412787/tileset.json"
|
let url3 = "http://183.162.245.49:82/SG/b3dm/_3.412788/tileset.json"
|
let url4 = "http://183.162.245.49:82/SG/b3dm/_2.413191/tileset.json"
|
|
let url6 = "http://183.162.245.49:8099/SHdata/GZ_BM_3DTILE1/tileset.json"//广州白膜
|
|
|
let url7 = "http://183.162.245.49:8099/SHdata/LJZJM3DTILES/tileset.json"//上海手工精模
|
|
|
let url8 = "http://183.162.245.49:8099/SHdata/SHQX_3dtiles/3dtiles/tileset.json"//飞飞上海倾斜
|
|
|
let url9 = "http://183.162.245.49:8099/SHdata/GZ_TH_3DTILE/tileset.json"//广州精模(天河)
|
let url10 = "http://183.162.245.49:8099/SHdata/GZ_fujia_2/tileset.json"//广州精模(天河)
|
let url11 = "http://183.162.245.49:8099/SHdata/GZ_fujia_3/tileset.json"//广州精模(天河)
|
|
let url13 = "http://183.162.245.49:8099/SHdata/SH_CJ/tileset.json"
|
|
switch (num) {
|
case 1:
|
window.model1 = sgworld.Creator.create3DTilesets("", url1, {}, {
|
}, "0", true, (data) => {
|
});
|
window.model12 = sgworld.Creator.create3DTilesets("", url12, {}, {
|
|
}, "0", true, (data) => {
|
});
|
break;
|
case 2:
|
window.model8 = sgworld.Creator.create3DTilesets("", url8, {}, {
|
}, "0", true, (data) => {
|
});
|
break;
|
case 3:
|
window.model7 = sgworld.Creator.create3DTilesets("", url7, {}, {
|
}, "0", true, (data) => {
|
});
|
break;
|
case 4:
|
window.model9 = sgworld.Creator.create3DTilesets("", url9, {}, {
|
}, "0", true, (data) => {
|
});
|
window.model10 = sgworld.Creator.create3DTilesets("", url10, {}, {
|
}, "0", true, (data) => {
|
});
|
window.model11 = sgworld.Creator.create3DTilesets("", url11, {}, {
|
}, "0", true, (data) => {
|
});
|
break;
|
case 5:
|
window.model2 = sgworld.Creator.create3DTilesets("", url2, {}, {
|
}, "0", true, (data) => {
|
});
|
window.model3 = sgworld.Creator.create3DTilesets("", url3, {}, {
|
}, "0", true, (data) => {
|
});
|
window.model4 = sgworld.Creator.create3DTilesets("", url4, {}, {
|
}, "0", true, (data) => {
|
});
|
break;
|
case 6:
|
window.model6 = sgworld.Creator.create3DTilesets("", url6, {}, {
|
|
}, "0", true, (data) => {
|
});
|
break;
|
case 7:
|
window.model13 = sgworld.Creator.create3DTilesets("", url13, {}, {
|
edit: {
|
height: 0
|
}
|
}, "0", true, (data) => {
|
});
|
break;
|
default:
|
break;
|
}
|
//初始添加注记
|
|
}
|
//水系
|
//点
|
window.deleteObj = []
|
export function loaddian(urls, name, height) {
|
var data = {
|
font_family: "微软雅黑",
|
font_size: 16,
|
pointHeight: height,
|
showBackground: true,
|
text: name,
|
fillColor: "#00ffff",
|
outlineColor: "#000000",
|
outlineWidth: 2,
|
disableDepthTestDistance: Infinity,
|
near: 0,
|
far: 2000,
|
};
|
let dx = sgworld.Creator.createLabelPointGeoJsonFeatureLayer("", urls, data, "0", true)
|
//
|
window.deleteObj.push(dx)
|
|
}
|
//路网
|
export function loadLW() {
|
var urls = "http://183.162.245.49:8099/gisserver/tmsserver/SH_peitu"
|
var layer = sgworld.Creator.createUrlTemplateImageryProvider('tms服务', {
|
url: Cesium.buildModuleUrl(urls + "/{z}/{x}/{reverseY}.png"),
|
Level: 15
|
}, '0', undefined, true, "");
|
var urls1 = "http://183.162.245.49:8099//gisserver/tmsserver/SH_sj"
|
var layer1 = sgworld.Creator.createUrlTemplateImageryProvider('tms服务', {
|
url: Cesium.buildModuleUrl(urls1 + "/{z}/{x}/{reverseY}.png"),
|
Level: 6
|
}, '0', undefined, true, "");
|
}
|
//聚合效果
|
export function juhe(params, name) {
|
var url;
|
var billboardImage;
|
var jhtype;
|
var dataSource;
|
if (name === "监测站") {
|
url = "http://221.224.53.36:9080/gis/monitor/stations";
|
billboardImage = "./static/img/jcz.png";
|
jhtype = 'GET';
|
dataSource = new Cesium.CustomDataSource("jcz");
|
} else if (name === "系统台站") {
|
url = "http://221.224.53.36:9080/map/searchRsbtStn";
|
billboardImage = "./static/img/blue.png";
|
jhtype = 'POST';
|
dataSource = new Cesium.CustomDataSource("xttz");
|
} else if (name === "测试台站") {
|
}
|
if (!params) {
|
if (name === "系统台站") {
|
var ds = viewer.dataSources.getByName("xttz");
|
if (ds.length > 0) {
|
for (var i = 0; i < ds.length; i++) {
|
viewer.dataSources.remove(ds[i]);
|
}
|
}
|
if (window.modelList1.length > 0) {
|
for (var j = 0; j < window.modelList1.length; j++) {
|
window.modelList1[j].deleteObject();
|
}
|
}
|
} else if (name === "监测站") {
|
var jcz = viewer.dataSources.getByName("jcz");
|
if (jcz.length > 0) {
|
for (var i = 0; i < jcz.length; i++) {
|
viewer.dataSources.remove(jcz[i]);
|
}
|
}
|
if (window.modelList.length > 0) {
|
for (var j = 0; j < window.modelList.length; j++) {
|
window.modelList[j].deleteObject();
|
}
|
}
|
}
|
|
} else {
|
|
var dataSourcePromise = viewer.dataSources.add(dataSource);
|
$.ajax({
|
url: url,
|
contentType: 'application/json;charset=UTF-8',
|
type: jhtype,
|
dataType: 'json',
|
data: JSON.stringify({}),
|
success: function (data) {
|
if (data.message == "Success") {
|
let height, lon, lat
|
data.rows.forEach((item) => {
|
height = 100, lon = item.statLg, lat = item.statLa
|
if (item.statName) {
|
item.dataType = "XXTZ";
|
var pixelO = (item.statName.length / 2 * 20)
|
if (item.statName.indexOf("对讲机") == 0) {
|
billboardImage = "./static/img/手机.png";
|
} else {
|
if (item.statName.indexOf("5G") == 0) {
|
billboardImage = "./static/img/5g.png";
|
} else {
|
billboardImage = "./static/img/blue.png";
|
}
|
}
|
var tzgltfurl = "./static/gltf/jizhan.glb";
|
switch (item.statName) {
|
case "5G基站4":
|
lon = 113.31284042
|
lat = 23.1478328
|
height = 94.24
|
break;
|
case "对讲机系统-07":
|
lon = 113.31746066
|
lat = 23.14174174
|
height = 60
|
break;
|
case "对讲机系统-04":
|
lon = 113.31971655
|
lat = 23.14200308
|
height = 78.30
|
break;
|
case "对讲机系统-02":
|
lon = 113.32338867
|
lat = 23.14155387
|
height = 159.73
|
break;
|
case "5G基站2":
|
lon = 113.32342299
|
lat = 23.1420382
|
height = 203.51
|
break;
|
case "5G基站1":
|
lon = 113.3154846
|
lat = 23.13927926
|
height = 196.47
|
break;
|
case "对讲机系统-03":
|
lon = 113.31920459
|
lat = 23.13935581
|
height = 100
|
break;
|
case "4G基站1":
|
lon = 113.31539679
|
lat = 23.1375488
|
height = 295
|
break;
|
case "对讲机系统-01":
|
lon = 113.32029651
|
lat = 23.13864168
|
height = 63
|
break;
|
case "对讲机系统-05":
|
lon = 113.31764205
|
lat = 23.13788573
|
height = 86.70
|
break;
|
case "对讲机系统-06":
|
lon = 113.32349384
|
lat = 23.13662137
|
height = 175
|
break;
|
case "5G基站5":
|
lon = 113.31429066
|
lat = 23.12940111
|
height = 248.14
|
break;
|
case "5G基站3":
|
lon = 113.32796088
|
lat = 23.13521196
|
height = 186.33
|
break;
|
case "越秀区广播电视发射台":
|
lon = 113.31643235
|
lat = 23.12389751
|
height = 255.47
|
break;
|
default:
|
break;
|
}
|
if (item.statName.indexOf("明珠")) {
|
height = 500
|
}
|
if (item.statName.indexOf("基站") > -1) {
|
var positionTZ = new Cesium.Cartesian3.fromDegrees(lon, lat, height - 80);
|
loadGLTF(tzgltfurl, positionTZ, 2, "tz")
|
}
|
dataSource.entities.add(new Cesium.Entity({
|
position: Cesium.Cartesian3.fromDegrees(lon, lat, height - 40),
|
label: {
|
showBackground: true,
|
backgroundColor: new Cesium.Color.fromCssColorString("#000").withAlpha(0.3),
|
text: item.statName,
|
font: "15px Helvetica",
|
fillColor: Cesium.Color.fromCssColorString("#FCFF00"), pixelOffset: new Cesium.Cartesian2(pixelO, 0),
|
style: Cesium.LabelStyle.FILL_AND_OUTLINE,
|
disableDepthTestDistance: Number.POSITIVE_INFINITY,
|
distanceDisplayCondition: new Cesium.DistanceDisplayCondition(10, 1000000)
|
},
|
billboard: {
|
image: billboardImage,
|
disableDepthTestDistance: Number.POSITIVE_INFINITY,
|
width: 30, // default: undefined
|
height: 30,
|
distanceDisplayCondition: new Cesium.DistanceDisplayCondition(10, 1000000)
|
|
},
|
properties: item,
|
}));
|
} else if (item.monstationName) {
|
item.dataType = "JCZ";
|
var gltfurl = "./static/gltf/JCZ.glb";
|
let x = item.monstationLg, y = item.monstationLa
|
let z = 54
|
var position = new Cesium.Cartesian3.fromDegrees(x, y, 0);
|
billboardImage = "./static/img/jcz.png"
|
if (item.monstationName == "云海") {
|
x = 121.444697
|
y = 31.213850
|
gltfurl = "./static/gltf/gdjcz.glb";
|
billboardImage = "./static/img/4.png";
|
position = new Cesium.Cartesian3.fromDegrees(121.444697, 31.213850, 88.5);
|
z = 150
|
}
|
if (item.monstationName.indexOf("小型监测站1") == 0) {
|
gltfurl = "./static/gltf/xxz.glb";
|
position = new Cesium.Cartesian3.fromDegrees(x, y, 200);
|
billboardImage = "./static/img/5.png";
|
z = 205
|
}
|
if (item.monstationName.indexOf("小型监测站2") == 0) {
|
gltfurl = "./static/gltf/xxz.glb";
|
x = 113.32349347
|
y = 23.13662572
|
position = new Cesium.Cartesian3.fromDegrees(x, y, 118);
|
billboardImage = "./static/img/5.png";
|
z = 121
|
}
|
if (item.monstationName.indexOf("快部式监测点1") == 0) {
|
gltfurl = "./static/gltf/kbz.glb";
|
position = new Cesium.Cartesian3.fromDegrees(x, y, 30);
|
|
billboardImage = "./static/img/2.png";
|
z = 35
|
}
|
if (item.monstationName.indexOf("快部式监测点2") == 0) {
|
gltfurl = "./static/gltf/kbz.glb";
|
x = 113.318593
|
y = 23.140079
|
z = 24
|
billboardImage = "./static/img/2.png";
|
position = new Cesium.Cartesian3.fromDegrees(x, y, 17);
|
}
|
if (item.monstationName.indexOf("无人机") == 0) {
|
gltfurl = "./static/gltf/wrj.glb";
|
position = new Cesium.Cartesian3.fromDegrees(x, y, 103);
|
z = 108
|
billboardImage = "./static/img/3.png";
|
}
|
if (item.monstationName.indexOf("监测车1") == 0) {
|
gltfurl = "./static/gltf/YDJCC2.glb";
|
position = new Cesium.Cartesian3.fromDegrees(x, y, 11.5);
|
z = 17
|
billboardImage = "./static/img/1.png";
|
}
|
if (item.monstationName.indexOf("监测车2") == 0) {
|
gltfurl = "./static/gltf/YDJCC2.glb";
|
position = new Cesium.Cartesian3.fromDegrees(x, y, 11);
|
z = 16
|
billboardImage = "./static/img/1.png";
|
}
|
if (item.monstationName.indexOf("固定监测站") == 0) {
|
gltfurl = "./static/gltf/gdjcz.glb";
|
x = 113.320531
|
y = 23.119995
|
z = 607
|
position = new Cesium.Cartesian3.fromDegrees(x, y, 550);
|
|
}
|
loadGLTF(gltfurl, position, 3, "JCZ")
|
var pixelO = (item.monstationName.length / 2 * 20) + 35
|
dataSource.entities.add(new Cesium.Entity({
|
position: Cesium.Cartesian3.fromDegrees(x, y, z),
|
label: {
|
showBackground: true,
|
backgroundColor: new Cesium.Color.fromCssColorString("#000").withAlpha(0.3),
|
text: item.monstationName,
|
font: "15px Helvetica",
|
fillColor: Cesium.Color.fromCssColorString("#6CFF00"),
|
pixelOffset: new Cesium.Cartesian2(pixelO, 0),
|
style: Cesium.LabelStyle.FILL_AND_OUTLINE,
|
disableDepthTestDistance: Number.POSITIVE_INFINITY,
|
distanceDisplayCondition: new Cesium.DistanceDisplayCondition(10, 1000000)
|
},
|
billboard: {
|
image: billboardImage,
|
disableDepthTestDistance: Number.POSITIVE_INFINITY,
|
width: 40, // default: undefined
|
height: 40,
|
distanceDisplayCondition: new Cesium.DistanceDisplayCondition(10, 1000000)
|
|
},
|
properties: item,
|
}));
|
}
|
|
|
|
var pathOption = {
|
width: 1, //线宽(可选)
|
color: '#00ffff', //线颜色(可选),
|
height: 5000,
|
LightSpot: true, //是否使用光点效果(可选)
|
LightSpotColor: '#ffffff', //光点颜色(可选)
|
inflow: true
|
|
}
|
|
|
|
|
let arr = [{ "lon": 121.3915556, "lat": 31.621555, height: 15 },
|
{ "lon": 121.3710465, "lat": 31.3834148, height: 15 },
|
{ "lon": 121.222861, "lat": 31.31885, height: 15 },
|
{ "lon": 121.33049, "lat": 31.2425713, height: 15 },
|
{ "lon": 121.4392777, "lat": 31.1356388, height: 15 },
|
{ "lon": 121.628888, "lat": 31.2075, height: 15 },
|
{ "lon": 121.886707, "lat": 30.8659381, height: 15 },
|
{ "lon": 121.5605555, "lat": 30.8575, height: 15 }]
|
let center = { lat: 31.213850, lon: 121.444697, height: 110 }
|
window.lightStr ? window.lightStr.clear() : ""
|
window.lightStr = sgworld.Creator.createTrailLinePath(center, arr, pathOption);
|
|
|
})
|
}
|
}
|
})
|
dataSourcePromise.then(function (dataSource) {
|
const pixelRange = 25;
|
const minimumClusterSize = 3;
|
const enabled = true;
|
dataSource.clustering.enabled = enabled;
|
dataSource.clustering.pixelRange = pixelRange;
|
dataSource.clustering.minimumClusterSize = minimumClusterSize;
|
let removeListener;
|
const gradient = {
|
0.0001: Cesium.Color.DEEPSKYBLUE,
|
0.001: Cesium.Color.WHITE,
|
0.01: Cesium.Color.ORANGE,
|
0.1: Cesium.Color.RED
|
};
|
function customStyle() {
|
if (Cesium.defined(removeListener)) {
|
removeListener();
|
removeListener = undefined;
|
} else {
|
removeListener = dataSource.clustering.clusterEvent.addEventListener(
|
function (clusteredEntities, cluster) {
|
cluster.billboard.show = true;
|
// cluster.billboard.disableDepthTestDistance = Number.POSITIVE_INFINITY;
|
// cluster.label.font = `bold 12px sans-serif`;
|
cluster.label.font = `12px sans-serif`;
|
cluster.label.fillColor = new Cesium.Color.fromCssColorString("#fff");
|
cluster.label.disableDepthTestDistance = Number.POSITIVE_INFINITY;
|
let allCount = dataSource.entities.values.length || 0
|
for (let key in gradient) {
|
if (clusteredEntities.length >= allCount * key) {
|
let numLength = String(clusteredEntities.length).length
|
cluster.billboard.image = _drawCircle(
|
gradient[key],
|
numLength
|
)
|
cluster.label.show = true
|
if (numLength === 1) {
|
cluster.label.pixelOffset = new Cesium.Cartesian2(-2, 3)
|
} else {
|
cluster.label.pixelOffset = new Cesium.Cartesian2(
|
-5 * (numLength - 1),
|
5
|
)
|
}
|
} else if (clusteredEntities.length <= 1) {
|
cluster.label.show = false
|
}
|
}
|
}
|
);
|
}
|
// force a re-cluster with the new styling
|
const pixelRange = dataSource.clustering.pixelRange;
|
dataSource.clustering.pixelRange = 0;
|
dataSource.clustering.pixelRange = pixelRange;
|
}
|
var _cache = {};
|
function _drawCircle(color, numLength) {
|
let size = 18 * (numLength + 1)
|
let key = color.toCssColorString() + '-' + size
|
if (!_cache[key]) {
|
let canvas = document.createElement('canvas')
|
canvas.width = size
|
canvas.height = size
|
let context2D = canvas.getContext('2d')
|
context2D.save()
|
context2D.scale(size / 24, size / 24) //Added to auto-generated code to scale up to desired size.
|
context2D.fillStyle = color.withAlpha(0.2).toCssColorString() //Modified from auto-generated code.
|
context2D.beginPath()
|
context2D.arc(12, 12, 9, 0, 2 * Math.PI)
|
context2D.closePath()
|
context2D.fill()
|
context2D.beginPath()
|
context2D.arc(12, 12, 6, 0, 2 * Math.PI)
|
context2D.fillStyle = color.toCssColorString()
|
context2D.fill()
|
context2D.closePath()
|
context2D.restore()
|
_cache[key] = canvas.toDataURL()
|
}
|
return _cache[key]
|
}
|
// start with custom style
|
customStyle();
|
});
|
|
}
|
|
|
|
|
}
|
|
|
|
//创建glb模型
|
window.modelList = [];
|
window.modelList1 = [];
|
export function loadGLTF(url, position, scale, type) {
|
var model = sgworld.Creator.addSimpleGraphic('model', {
|
url: url,
|
position: position,
|
removeEdit: true, // 屏蔽全局标绘编辑功能
|
scale: scale
|
});
|
type == "JCZ" ? window.modelList.push(model) : window.modelList1.push(model)
|
|
//viewer.trackedEntity = model;
|
}
|
window.showtable = false;
|
let timeoutID
|
let handlerMes
|
window.monstationGuidList = [];
|
window.stationList = [];
|
//双击事件
|
export function addMouseEvent() {
|
//点击获取信息
|
handlerMes ? handlerMes.destroy() : ""
|
handlerMes = new Cesium.ScreenSpaceEventHandler(
|
window.Viewer.scene.canvas
|
);
|
|
handlerMes.setInputAction(function (movement) {
|
|
// 判断的目的是防止实例被创建之后左键点击直接导致监测站被分析
|
if (window.allowClick) {
|
if (window.JCZlist.length > 0) {
|
for (var j = 0; j < window.JCZlist.length; j++) {
|
viewer.entities.removeById(window.JCZlist[j].id);
|
}
|
|
}
|
let pick = window.Viewer.scene.pick(movement.position)
|
console.log(pick);
|
if (pick && pick.id && pick.id.properties && pick.id.properties.monstationName && pick.id.properties.monstationGuid) {
|
let i = 0
|
if (window.monstationGuidList.length == 0) {
|
window.monstationGuidList.push({ "name": pick.id.properties.monstationName._value, "id": pick.id.properties.monstationGuid._value })
|
bus.$emit("ismonstationGuid", window.monstationGuidList);
|
} else {
|
window.monstationGuidList.forEach(item => {
|
if (pick.id.properties.monstationGuid._value == item.id) {
|
i++
|
}
|
});
|
if (i == 0) {
|
window.monstationGuidList.push({ "name": pick.id.properties.monstationName._value, "id": pick.id.properties.monstationGuid._value })
|
bus.$emit("ismonstationGuid", window.monstationGuidList);
|
}
|
}
|
|
}
|
// 选中系统台站
|
if (pick && pick.id && pick.id.properties && pick.id.properties._dataType && pick.id.properties._dataType._value == "XXTZ") {
|
let i = 0
|
debugger
|
if (window.stationList.length == 0) {
|
window.stationList.push({ "name": pick.id.properties._statName._value, "id": pick.id.properties._guid._value })
|
bus.$emit("showMoreTZ", window.stationList);
|
} else {
|
// 防止重复
|
window.stationList.forEach(item => {
|
if (pick.id.properties._guid._value == item.id) {
|
i++
|
}
|
});
|
if (i == 0) {
|
window.stationList.push({ "name": pick.id.properties._statName._value, "id": pick.id.properties._guid._value })
|
bus.$emit("showMoreTZ", window.stationList);
|
}
|
}
|
|
}
|
clearTimeout(timeoutID);
|
timeoutID = window.setTimeout(function () {
|
if (!window.showtable) {
|
} else {
|
bus.$emit("isFX", true)
|
if (Cesium.defined(pick) && pick.id && pick.id.properties) {
|
window.objform.monstationGuid = pick.id.properties._monstationGuid._value;
|
let data = [
|
window.objform
|
]
|
window.allowClick = false
|
showdataJCZ(data)
|
}
|
}
|
}, 200);
|
}
|
}, Cesium.ScreenSpaceEventType.LEFT_CLICK);
|
var divPoint3;
|
handlerMes.setInputAction(function (movement) {
|
clearTimeout(timeoutID);
|
if (divPoint3) {
|
divPoint3.deleteObject();
|
}
|
let pick = window.Viewer.scene.pick(movement.position);
|
if (Cesium.defined(pick) && pick.id && pick.id.properties) {
|
var prophtml = setEpidemicLayerInfoDomtj(pick.id.properties);
|
setInterval(function () {
|
$("body .closeclick").on("click", () => {
|
document.getElementsByClassName("tableContain")[0].style.display =
|
"none";
|
});
|
}, 1000);
|
if (pick.id.properties.statLg && pick.id.properties.statLa) {
|
var lng = pick.id.properties.statLg._value;
|
var lat = pick.id.properties.statLa._value;
|
} else if (pick.id.properties.monstationLg && pick.id.properties.monstationLa) {
|
var lng = pick.id.properties.monstationLg._value;
|
var lat = pick.id.properties.monstationLa._value;
|
}
|
if (pick.id.properties && pick.id.properties._monstationName && pick.id.properties._monstationName._value == "云海") {
|
lng = 121.444697
|
lat = 31.213850
|
}
|
if (movement.position)
|
divPoint3 = sgworld.Creator.createDivPoint('', { lon: lng, lat: lat, height: 105 }, {
|
type: "custom",
|
offset: ["c", 20],
|
description: prophtml,
|
near: 0,
|
far: 100000
|
});
|
}
|
|
}, Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK)
|
|
}
|
|
//抽离监测站图例创建事件
|
export function showdataJCZ(data) {
|
const loading = Loading.service({
|
lock: true,
|
text: "计算中",
|
spinner: "el-icon-loading",
|
background: "rgba(0, 0, 0, 0.7)",
|
});
|
MonitoringStation(data).then((res) => {
|
if (res.message === "Success") {
|
var positions = res.data.countorResVOList[0].points;
|
var value = res.data.countorResVOList[0].areaResult
|
var positionsList = [];
|
for (var i = 0; i < positions.length; i++) {
|
positionsList.push(positions[i].lon, positions[i].lat);
|
}
|
let obj = {
|
name: window.analysisType,
|
value: value
|
}
|
bus.$emit("newData", obj)
|
createPloygon(positionsList);
|
loading.close();
|
}
|
}).catch((error) => {
|
loading.close();
|
});
|
}
|
//开启平行光
|
export function light() {
|
// Viewer.scene.light = new Cesium.DirectionalLight({
|
// direction: new Cesium.Cartesian3(0, 0, -1),
|
// });
|
}
|
//右击事件
|
let nowplay
|
export function addRightMouseEvent() {
|
//点击获取信息
|
let handler = new Cesium.ScreenSpaceEventHandler(
|
window.Viewer.scene.canvas
|
);
|
handler.setInputAction(function (movement) {
|
window.divPoint4 && window.divPoint4.deleteObject();
|
window.divPoint5 && window.divPoint5.deleteObject();
|
window.divPoint6 && window.divPoint6.deleteObject();
|
window.divPoint7 && window.divPoint7.deleteObject();
|
window.divPoint8 && window.divPoint8.deleteObject();
|
window.divPoint9 && window.divPoint9.deleteObject();
|
window.divPoint10 && window.divPoint10.deleteObject();
|
//清除之前监测站事件
|
if (window.JCZlist.length > 0) {
|
for (var j = 0; j < window.JCZlist.length; j++) {
|
viewer.entities.removeById(window.JCZlist[j].id);
|
}
|
|
}
|
var pick = window.Viewer.scene.pick(movement.position);
|
let position = pick.id.position.getValue()
|
let degrees = sgworld.Core.toDegrees(position)
|
if (Cesium.defined(pick) && pick.id && pick.id.properties) {
|
window.showtable = true
|
if (pick.id.properties.dataType._value == "JCZ") {
|
var lng = pick.id.properties.monstationLg._value;
|
var lat = pick.id.properties.monstationLa._value;
|
let prophtml = createHtmlRight("黑广播监测能力")
|
window.divPoint4 = sgworld.Creator.createDivPoint('', { lon: degrees.lon, lat: degrees.lat, height: degrees.height }, {
|
type: "custom",
|
offset: ["c", 170],
|
description: prophtml,
|
near: 0,
|
far: 50000,
|
onclick: function () {
|
window.showtable = true;
|
window.objform = {
|
analysisType: "黑广播",
|
areaResult: 99.83516631,
|
coverageThreshold: "-110",
|
freqPoint: 954,
|
frequency: 100,
|
modelName: "",
|
monFrequency: "",
|
monstationGuid: "2",
|
propModel: 2,
|
rxAntGain: 0,
|
rxAntHeight: 0,
|
txAntGain: 0,
|
txAntHeight: 20,
|
txFrequency: "",
|
txPower: 50
|
}
|
window.objform.monstationGuid = pick.id.properties._monstationGuid._value;
|
let arrq = [window.objform]
|
showdataJCZ(arrq)
|
setTimeout(function name(params) {
|
try {
|
window.divPoint4.deleteObject();
|
window.divPoint5.deleteObject();
|
window.divPoint6.deleteObject();
|
window.divPoint7.deleteObject();
|
} catch (e) {
|
}
|
}, 100)
|
}
|
});
|
let prophtml1 = createHtmlRight("伪基站监测能力")
|
window.divPoint5 = sgworld.Creator.createDivPoint('', { lon: degrees.lon, lat: degrees.lat, height: degrees.height }, {
|
type: "custom",
|
offset: ["c", 120],
|
description: prophtml1,
|
near: 0,
|
far: 50000,
|
onclick: function name() {
|
window.showtable = true;
|
window.objform = {
|
analysisType: "伪基站",
|
areaResult: 10185.58366101,
|
coverageThreshold: "-110",
|
freqPoint: 100,
|
frequency: 954,
|
modelName: "",
|
monFrequency: "",
|
monstationGuid: "2",
|
propModel: 2,
|
rxAntGain: 0,
|
rxAntHeight: 0,
|
txAntGain: 0,
|
txAntHeight: 10,
|
txFrequency: "",
|
txPower: 40
|
}
|
window.objform.monstationGuid = pick.id.properties._monstationGuid._value;
|
let arrq = [window.objform]
|
showdataJCZ(arrq)
|
setTimeout(function name(params) {
|
try {
|
window.divPoint4.deleteObject();
|
window.divPoint5.deleteObject();
|
window.divPoint6.deleteObject();
|
window.divPoint7.deleteObject();
|
} catch (e) {
|
|
}
|
}, 100)
|
}
|
});
|
let prophtml2 = createHtmlRight("天线赋形图")
|
let scale = 0.5
|
window.divPoint6 = sgworld.Creator.createDivPoint('', { lon: degrees.lon, lat: degrees.lat, height: degrees.height }, {
|
type: "custom",
|
offset: ["c", 20],
|
description: prophtml2,
|
near: 0,
|
far: 50000,
|
onclick: function name() {
|
if (window.FieldIntensity) {
|
window.FieldIntensity.deleteObject()
|
window.FieldIntensity = null
|
}
|
let height = degrees.height - 5
|
// 判断赋形图是否需要修改
|
if (pick.id && pick.id._properties && pick.id._properties._monstationName && pick.id._properties._monstationName._value) {
|
let cheak = pick.id._properties._monstationName._value
|
if (cheak.indexOf("小型监测站") == 0 || cheak.indexOf("快部式监测点") == 0) {
|
scale = 0.1
|
height = degrees.height - 2
|
}
|
if (cheak.indexOf("监测车") == 0) {
|
scale = 0.3
|
height = degrees.height - 2
|
}
|
}
|
let url = "./static/json/ant.json"
|
window.FieldIntensity = sgworld.Creator.FieldIntensity(url, {
|
center: [degrees.lon, degrees.lat, height], // 备用中心坐标
|
scale: scale
|
})
|
setTimeout(function name(params) {
|
try {
|
window.divPoint4.deleteObject();
|
window.divPoint5.deleteObject();
|
window.divPoint6.deleteObject();
|
window.divPoint7.deleteObject();
|
} catch (e) {
|
|
}
|
}, 100)
|
|
}
|
|
});
|
let prophtml4 = createHtmlRight("对讲机监测能力")
|
window.divPoint7 = sgworld.Creator.createDivPoint('', { lon: degrees.lon, lat: degrees.lat, height: degrees.height }, {
|
type: "custom",
|
offset: ["c", 70],
|
description: prophtml4,
|
near: 0,
|
far: 50000,
|
onclick: function name() {
|
window.showtable = true;
|
window.objform = {
|
analysisType: "对讲机",
|
areaResult: 0.451125,
|
coverageThreshold: "-110",
|
freqPoint: 450,
|
frequency: 450,
|
modelName: "",
|
monFrequency: "",
|
monstationGuid: "2",
|
propModel: 2,
|
rxAntGain: 0,
|
rxAntHeight: 0,
|
txAntGain: 0,
|
txAntHeight: 2,
|
txFrequency: "",
|
txPower: 30
|
}
|
window.objform.monstationGuid = pick.id.properties._monstationGuid._value;
|
let arrq = [window.objform]
|
showdataJCZ(arrq)
|
setTimeout(function name() {
|
try {
|
window.divPoint4.deleteObject();
|
window.divPoint5.deleteObject();
|
window.divPoint6.deleteObject();
|
window.divPoint7.deleteObject();
|
} catch (e) {
|
|
}
|
}, 100)
|
}
|
});
|
|
}
|
if (pick.id.properties.dataType._value == "XXTZ") {
|
let prophtml1 = createHtmlRight("保护轮廓线")
|
window.divPoint10 = sgworld.Creator.createDivPoint('', { lon: degrees.lon, lat: degrees.lat, height: degrees.height }, {
|
type: "custom",
|
offset: ["c", 20],
|
description: prophtml1,
|
near: 0,
|
far: 50000,
|
onclick: function name() {
|
setTimeout(function name(params) {
|
try {
|
window.divPoint8.deleteObject();
|
window.divPoint9.deleteObject();
|
window.divPoint10.deleteObject();
|
} catch (e) {
|
|
}
|
}, 100)
|
}
|
});
|
let prophtml2 = createHtmlRight("天线赋形图")
|
let scale = 3
|
window.divPoint8 = sgworld.Creator.createDivPoint('', { lon: degrees.lon, lat: degrees.lat, height: degrees.height+10 }, {
|
type: "custom",
|
offset: ["c", 120],
|
description: prophtml2,
|
near: 0,
|
far: 50000,
|
onclick: function name() {
|
if (window.FieldIntensity) {
|
window.FieldIntensity.deleteObject()
|
window.FieldIntensity = null
|
}
|
let height = degrees.height - 5
|
let url = "./static/json/ant.json"
|
window.FieldIntensity = sgworld.Creator.FieldIntensity(url, {
|
center: [degrees.lon, degrees.lat, height], // 备用中心坐标
|
scale: scale
|
})
|
setTimeout(function name(params) {
|
try {
|
window.divPoint8.deleteObject();
|
window.divPoint9.deleteObject();
|
window.divPoint10.deleteObject();
|
} catch (e) {
|
|
}
|
}, 100)
|
|
}
|
|
});
|
let prophtml4 = createHtmlRight("场强覆盖图")
|
window.divPoint9 = sgworld.Creator.createDivPoint('', { lon: degrees.lon, lat: degrees.lat, height: degrees.height }, {
|
type: "custom",
|
offset: ["c", 70],
|
description: prophtml4,
|
near: 0,
|
far: 50000,
|
onclick: function name() {
|
window.showtable = true;
|
window.nowAnalyze = true;
|
window.allowClick = true
|
if (window.imageidXT) {
|
window.Viewer.entities.removeById(window.imageidXT);
|
window.imageidXT = null;
|
}
|
if (!window.nowAnalyze) {
|
return;
|
}
|
let data = {
|
corverageType: 1,
|
coverageRedius_km: 100,
|
coverageThreshold: -100,
|
model: "2",
|
noiseTemp: 293,
|
rxAntGain_dBi: 10,
|
rxAntHeight: 10,
|
station: pick.id.properties.guid._value,
|
type: "1",
|
};
|
const loading = Loading.service({
|
lock: true,
|
text: "计算中",
|
spinner: "el-icon-loading",
|
background: "rgba(0, 0, 0, 0.7)",
|
});
|
intensity(data)
|
.then((res) => {
|
if (res.message === "Success") {
|
getbounds({ file: Base64.encode(res.data) }).then((res1) => {
|
if (res1.message === "Success") {
|
let points = res1.data.points;
|
let data = {
|
colorSchemes: 1,
|
file: Base64.encode(res.data),
|
maxColor: "FF0000",
|
maxValue: 100,
|
minColor: "0000FF",
|
minValue: 0,
|
};
|
nowplay = Base64.encode(res.data);
|
createPic(data).then((res2) => {
|
if (res2.message === "Success") {
|
let rectangle = sgworld.Creator.addSimpleGraphic(
|
"rectangle",
|
{
|
removeEdit: true,
|
coordinates: Cesium.Rectangle.fromDegrees(
|
points[0].x,
|
points[0].y,
|
points[1].x,
|
points[1].y
|
),
|
color: "rgba(255,255,255,0.5)",
|
image:
|
"http://221.224.53.36:9081/calc/picurl?file=" +
|
Base64.encode(res2.data),
|
}
|
);
|
window.imageidXT = rectangle.id;
|
|
loading.close();
|
}
|
});
|
}
|
});
|
}
|
})
|
.catch((error) => {
|
loading.close();
|
});
|
|
|
|
|
|
|
|
|
|
|
|
setTimeout(function name() {
|
try {
|
window.divPoint8.deleteObject();
|
window.divPoint9.deleteObject();
|
window.divPoint10.deleteObject();
|
} catch (e) {
|
|
}
|
}, 100)
|
}
|
});
|
|
}
|
} else {
|
try {
|
window.divPoint8.deleteObject();
|
window.divPoint9.deleteObject();
|
window.divPoint10.deleteObject();
|
window.showtable = false
|
} catch (e) { }
|
}
|
}, Cesium.ScreenSpaceEventType.RIGHT_CLICK);
|
}
|
// 监测站覆盖评估
|
export function MonitoringStation(data) {
|
return request({
|
url: 'calc/stationCover',
|
method: 'POST',
|
data: data
|
})
|
}
|
window.JCZlist = [];
|
export function createPloygon(pos) {
|
viewer.scene.globe.depthTestAgainstTerrain = false;
|
var poly = viewer.entities.add({
|
name: "JCZ",
|
polygon: {
|
hierarchy: Cesium.Cartesian3.fromDegreesArray(pos),
|
extrudedHeight: 1,
|
material: Cesium.Color.DARKSALMON.withAlpha(0.3),
|
outline: false,
|
outlineColor: Cesium.Color.RED,
|
arcType: Cesium.ArcType.RHUMB,
|
},
|
polyline: {
|
positions: Cesium.Cartesian3.fromDegreesArray(pos),
|
width: 2,
|
material: Cesium.Color.RED
|
}
|
});
|
window.JCZlist.push(poly);
|
|
}
|
//右击按钮
|
export function createHtmlRight(data) {
|
var html = ``;
|
html += `<div class="showRightClickBtn">`
|
html += `<button type="button">${data}</button>`
|
html += `</div>`
|
return html;
|
}
|
//监测站弹框
|
export function setEpidemicLayerInfoDomtj(marker) {
|
let tablename, tablevalue
|
if (marker.dataType._value == "XXTZ") {
|
tablename = ["台站名称", "台站位置", "天线高度(m)", "经度[°]", "维度[°]", "接收起始频率[MHz]", "接受结束频率[MHz]", "发射起始频率[MHz]", "发射结束频率[MHz]", "功率[dBm]"]
|
tablevalue = ["statName", "statAddr", "antHight", "statLg", "statLa", "freqUc", "freqEfb", "freqEfe", "freqEfe", "equPow"]
|
}
|
if (marker.dataType._value == "JCZ") {
|
tablename = ["监测设施", "监测设备", "覆盖半径(km)", "设备型号", "设备名称", "经度[°]", "维度[°]", "监测站位置",]
|
tablevalue = ["monstationName", "monstationEquName", "monstationLa", "monstationType", "monstationEquName", "monstationLg", "monstationLa", "monstationName"]
|
}
|
var html = ``;
|
html += `<div class="tableContain">`
|
html += `<div class="closeclick" >X</div>`
|
html += `<div class="tableinner">`
|
html += `<table id="mytable" cellspacing="0">
|
<caption> </caption> `;
|
if (marker.propertyNames) {
|
for (var i = 0; i < tablename.length; i++) {
|
html += `<tr>
|
<td class="row">`+ tablename[i] + `</td>
|
<td class="row">`+ marker[tablevalue[i]]._value + `</td>
|
</tr>`
|
|
}
|
} else {
|
for (var item in marker) {
|
html += `<tr>
|
<td class="row">`+ item + `</td>
|
<td class="row">`+ marker[item] + `</td>
|
</tr>`
|
}
|
}
|
html += `</table>`;
|
html += `</div>`
|
html += `</div>`
|
|
|
return html;
|
|
}
|
// mpt地形
|
let mptYx
|
export function addMpt(bollean) {
|
if (bollean) {
|
mptYx ? mptYx.deleteObject() : "";
|
mptYx = null
|
var option = {
|
url: "http://183.162.245.49:82/SG/Elevation",
|
layerName: "gz0920.414509",
|
requestVertexNormals: true,
|
};
|
mptYx = sgworld.Creator.sfsterrainprovider("", option, "", true, "");
|
} else {
|
mptYx ? mptYx.deleteObject() : "";
|
mptYx = null
|
return
|
}
|
}
|
|
//监听按钮事件
|
let status
|
export function SPPM() {
|
tedp.trame.subStyle = {
|
left: "1446px",
|
top: "2100px"
|
}
|
window.addEventListener("keydown",
|
(event) => {
|
if (event.keyCode === 122) {
|
event.preventDefault();
|
var el = document.documentElement;
|
var rfs = el.requestFullScreen || el.webkitRequestFullScreen || el.mozRequestFullScreen || el.msRequestFullScreen;//定义不同浏览器的全屏API
|
//执行全屏
|
if (typeof rfs != "undefined" && rfs) {
|
rfs.call(el);
|
} else if (typeof window.ActiveXObject != "undefined") {
|
var wscript = new ActiveXObject("WScript.Shell");
|
if (wscript != null) {
|
wscript.SendKeys("{F11}");
|
}
|
}
|
|
//监听不同浏览器的全屏事件,并件执行相应的代码
|
document.addEventListener("webkitfullscreenchange", function () {//
|
if (document.webkitIsFullScreen) {
|
//全屏后要执行的代码
|
tedp.trame.subStyle = {
|
left: "1446px",
|
top: "2420px"
|
}
|
document.getElementsByClassName("container")[0].style.height = "2200px"
|
document.getElementsByClassName("containerBtn")[0].style.top = "2300px"
|
status = false
|
} else {
|
tedp.trame.subStyle = {
|
left: "1446px",
|
top: "2120px"
|
}
|
//退出全屏后执行的代码
|
document.getElementsByClassName("container")[0].style.height = "1900px"
|
document.getElementsByClassName("containerBtn")[0].style.top = "1980px"
|
}
|
}, false);
|
}
|
}, true)
|
}
|
|
export function addnewPoint(position, name) {
|
var gltfurl = "./static/gltf/JCZ.glb";
|
var position = new Cesium.Cartesian3.fromDegrees(position.x, position.y, 0);
|
loadGLTF(gltfurl, position, 1)
|
let dataSource
|
var pixelO = (name.length / 2 * 20) + 35
|
dataSource.entities.add(new Cesium.Entity({
|
position: Cesium.Cartesian3.fromDegrees(position.x, position.y, 10),
|
label: {
|
showBackground: true,
|
backgroundColor: new Cesium.Color.fromCssColorString("#000").withAlpha(0.3),
|
text: name,
|
font: "15px Helvetica",
|
fillColor: Cesium.Color.fromCssColorString("#6CFF00"),
|
pixelOffset: new Cesium.Cartesian2(pixelO, 0),
|
style: Cesium.LabelStyle.FILL_AND_OUTLINE,
|
disableDepthTestDistance: Number.POSITIVE_INFINITY,
|
distanceDisplayCondition: new Cesium.DistanceDisplayCondition(10, 1000000)
|
},
|
billboard: {
|
image: billboardImage,
|
disableDepthTestDistance: Number.POSITIVE_INFINITY,
|
width: 40, // default: undefined
|
height: 40,
|
distanceDisplayCondition: new Cesium.DistanceDisplayCondition(10, 1000000)
|
|
},
|
properties: "",
|
}));
|
window.createTool = false
|
}
|
//云海建筑
|
let yunhaimode1
|
export function loadYH() {
|
let url = "http://183.162.245.49:8099/SHdata/yunhai_3dtile/tileset.json"
|
yunhaimode1 = sgworld.Creator.create3DTilesets("", url, {}, {
|
}, "0", true, (data) => {
|
});
|
}
|
|
//绘制多边形
|
export function drawPolygon() {
|
window.datatype && viewer.entities.remove(window.datatype)
|
let polygom = sgworld.Creator.createSimpleGraphic('rectangle', { showSize: true, color: "rgba(108,167,247,0.3)" }, function (entity) {
|
debugger
|
window.datatype = entity
|
var pointsList = [];
|
var ellipsoid = entity.rectangle.coordinates.getValue()
|
for (let i in ellipsoid) {
|
let position = Cesium.Math.toDegrees(ellipsoid[i])
|
pointsList.push(position);
|
}
|
pointsList = [[pointsList[1], pointsList[0]], [pointsList[1], pointsList[2]], [pointsList[3], pointsList[2]], [pointsList[3], pointsList[0]]]
|
bus.$emit("isdp", pointsList);
|
});
|
|
}
|