智慧园区前端大屏
turf引入
图片静态资源引入
增加污染物处理菜单
风险源、企业分布上图样式调整
企业详情初始化定位调整
12 files modified
22 files added
2389 ■■■■■ changed files
package.json 3 ●●●● patch | view | raw | blame | history
pnpm-lock.yaml 1471 ●●●●● patch | view | raw | blame | history
public/al/GIS-TL_泵站.png patch | view | raw | blame | history
public/al/GIS-TL_泵站1.png patch | view | raw | blame | history
public/al/btn-排水管网.png patch | view | raw | blame | history
public/al/企业公司.png patch | view | raw | blame | history
public/al/原液阀门运行.png patch | view | raw | blame | history
public/al/急.png patch | view | raw | blame | history
public/al/水库icon.png patch | view | raw | blame | history
public/al/水库水情.png patch | view | raw | blame | history
public/al/消防_1.png patch | view | raw | blame | history
public/img/mapicon/fxy.png patch | view | raw | blame | history
public/img/mapicon/qy.png patch | view | raw | blame | history
src/hooks/initMap.js 4 ●●● patch | view | raw | blame | history
src/router/index.js 9 ●●●● patch | view | raw | blame | history
src/styles/base/dc-base.scss 51 ●●●● patch | view | raw | blame | history
src/styles/base/index.scss 1 ●●●● patch | view | raw | blame | history
src/utils/turfPolygon.js 194 ●●●●● patch | view | raw | blame | history
src/views/companyInfo/index.vue 25 ●●●●● patch | view | raw | blame | history
src/views/layout/components/mainMenu.vue 8 ●●●● patch | view | raw | blame | history
src/views/layout/components/scomponents/layersControl.vue 52 ●●●●● patch | view | raw | blame | history
src/views/pd/components/box/dataContent.vue 158 ●●●●● patch | view | raw | blame | history
src/views/pd/components/box/fireContent.vue 25 ●●●●● patch | view | raw | blame | history
src/views/pd/components/box/fireSource.vue 25 ●●●●● patch | view | raw | blame | history
src/views/pd/components/box/fireTrend.vue 25 ●●●●● patch | view | raw | blame | history
src/views/pd/components/box/occurStatistics.vue 25 ●●●●● patch | view | raw | blame | history
src/views/pd/components/box/publicContent.vue 26 ●●●●● patch | view | raw | blame | history
src/views/pd/components/box/unitContent.vue 25 ●●●●● patch | view | raw | blame | history
src/views/pd/components/leftContainer.vue 47 ●●●●● patch | view | raw | blame | history
src/views/pd/components/rightContainer.vue 86 ●●●●● patch | view | raw | blame | history
src/views/pd/index.vue 30 ●●●●● patch | view | raw | blame | history
src/views/space/components/leftContainer.vue 21 ●●●●● patch | view | raw | blame | history
src/views/space/components/rightContainer.vue 72 ●●●● patch | view | raw | blame | history
src/views/space/index.vue 6 ●●●● patch | view | raw | blame | history
package.json
@@ -16,11 +16,12 @@
    "@dvgis/vite-plugin-dc": "^2.2.0",
    "@element-plus/icons-vue": "^2.3.1",
    "@fortawesome/fontawesome-free": "^6.6.0",
    "@turf/turf": "^7.1.0",
    "axios": "^1.7.7",
    "crypto-js": "^4.1.1",
    "echarts": "^5.5.1",
    "element-plus": "^2.8.6",
    "element-tree-line": "^0.2.1",
    "echarts": "^5.5.1",
    "js-base64": "^3.7.4",
    "js-md5": "^0.7.3",
    "nprogress": "^0.2.0",
pnpm-lock.yaml
@@ -17,6 +17,9 @@
  '@fortawesome/fontawesome-free':
    specifier: ^6.6.0
    version: 6.6.0
  '@turf/turf':
    specifier: ^7.1.0
    version: 7.1.0
  axios:
    specifier: ^1.7.7
    version: 1.7.7
@@ -717,9 +720,1345 @@
    resolution: {integrity: sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==}
    dev: false
  /@turf/along@7.1.0:
    resolution: {integrity: sha512-WLgBZJ/B6CcASF6WL7M+COtHlVP0hBrMbrtKyF7KBlicwRuijJZXDtEQA5oLgr+k1b2HqGN+UqH2A0/E719enQ==}
    dependencies:
      '@turf/bearing': 7.1.0
      '@turf/destination': 7.1.0
      '@turf/distance': 7.1.0
      '@turf/helpers': 7.1.0
      '@turf/invariant': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/angle@7.1.0:
    resolution: {integrity: sha512-YMHEV/YrARsWgWoQuXEWrQMsvB8z67nTMw2eiLZ883V7jwkhWQGvCW6W+/mGgsWQdHppjCZNcKryryhD2GRWVA==}
    dependencies:
      '@turf/bearing': 7.1.0
      '@turf/helpers': 7.1.0
      '@turf/invariant': 7.1.0
      '@turf/rhumb-bearing': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/area@7.1.0:
    resolution: {integrity: sha512-w91FEe02/mQfMPRX2pXua48scFuKJ2dSVMF2XmJ6+BJfFiCPxp95I3+Org8+ZsYv93CDNKbf0oLNEPnuQdgs2g==}
    dependencies:
      '@turf/helpers': 7.1.0
      '@turf/meta': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/bbox-clip@7.1.0:
    resolution: {integrity: sha512-PhZubKCzF/afwStUzODqOJluiCbCw244lCtVhXA9F+Pgkhvk8KvbFdgpPquOZ45OwuktrchSB28BrBkSBiadHw==}
    dependencies:
      '@turf/helpers': 7.1.0
      '@turf/invariant': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/bbox-polygon@7.1.0:
    resolution: {integrity: sha512-fvZB09ErCZOVlWVDop836hmpKaGUmfXnR9naMhS73A/8nn4M3hELbQtMv2R8gXj7UakXCuxS/i9erdpDFZ2O+g==}
    dependencies:
      '@turf/helpers': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/bbox@7.1.0:
    resolution: {integrity: sha512-PdWPz9tW86PD78vSZj2fiRaB8JhUHy6piSa/QXb83lucxPK+HTAdzlDQMTKj5okRCU8Ox/25IR2ep9T8NdopRA==}
    dependencies:
      '@turf/helpers': 7.1.0
      '@turf/meta': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/bearing@7.1.0:
    resolution: {integrity: sha512-X5lackrZ6FW+YhgjWxwVFRgWD1j4xm4t5VvE6EE6v/1PVaHQ5OCjf6u1oaLx5LSG+gaHUhjTlAHrn9MYPFaeTA==}
    dependencies:
      '@turf/helpers': 7.1.0
      '@turf/invariant': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/bezier-spline@7.1.0:
    resolution: {integrity: sha512-bhBY70bcVYJEosuW7B/TFtnE5rmPTTpxmJvljhGC0eyM84oNVv7apDBuseb5KdlTOOBIvdD9nIE4qV8lmplp6w==}
    dependencies:
      '@turf/helpers': 7.1.0
      '@turf/invariant': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/boolean-clockwise@7.1.0:
    resolution: {integrity: sha512-H5DYno+gHwZx+VaiC8DUBZXZQlxYecdSvqCfCACWi1uMsKvlht/O+xy65hz2P57lk2smlcV+1ETFVxJlEZduYg==}
    dependencies:
      '@turf/helpers': 7.1.0
      '@turf/invariant': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/boolean-concave@7.1.0:
    resolution: {integrity: sha512-IFCN25DI+hvngxIsv4+MPuRJQRl/Lz/xnZgpH82leCn4Jqn5wW7KqKFMz7G4GoKK+93cK5/6ioAxY7hVWBXxJw==}
    dependencies:
      '@turf/helpers': 7.1.0
      '@turf/invariant': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/boolean-contains@7.1.0:
    resolution: {integrity: sha512-ldy4j1/RVChYTYjEb4wWaE/JyF1jA87WpsB4eVLic6OcAYJGs7POF1kfKbcdkJJiRBmhI3CXNA+u+m9y4Z/j3g==}
    dependencies:
      '@turf/bbox': 7.1.0
      '@turf/boolean-point-in-polygon': 7.1.0
      '@turf/boolean-point-on-line': 7.1.0
      '@turf/helpers': 7.1.0
      '@turf/invariant': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/boolean-crosses@7.1.0:
    resolution: {integrity: sha512-LK8UM3AENycuGinLCDaL0QSznGMnD0XsjFDGnY4KehshiL5Zd8ZsPyKmHOPygUJT9DWeH69iLx459lOc+5Vj2w==}
    dependencies:
      '@turf/boolean-point-in-polygon': 7.1.0
      '@turf/helpers': 7.1.0
      '@turf/invariant': 7.1.0
      '@turf/line-intersect': 7.1.0
      '@turf/polygon-to-line': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/boolean-disjoint@7.1.0:
    resolution: {integrity: sha512-JapOG03kOCoGeYMWgTQjEifhr1nUoK4Os2cX0iC5X9kvZF4qCHeruX8/rffBQDx7PDKQKusSTXq8B1ISFi0hOw==}
    dependencies:
      '@turf/boolean-point-in-polygon': 7.1.0
      '@turf/helpers': 7.1.0
      '@turf/line-intersect': 7.1.0
      '@turf/meta': 7.1.0
      '@turf/polygon-to-line': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/boolean-equal@7.1.0:
    resolution: {integrity: sha512-deghtFMApc7fNsdXtZdgYR4gsU+TVfowcv666nrvZbPPsXL6NTYGBhDFmYXsJ8gPTCGT9uT0WXppdgT8diWOxA==}
    dependencies:
      '@turf/clean-coords': 7.1.0
      '@turf/helpers': 7.1.0
      '@turf/invariant': 7.1.0
      '@types/geojson': 7946.0.14
      geojson-equality-ts: 1.0.2
      tslib: 2.8.1
    dev: false
  /@turf/boolean-intersects@7.1.0:
    resolution: {integrity: sha512-gpksWbb0RT+Z3nfqRfoACY3KEFyv2BPaxJ3L76PH67DhHZviq3Nfg85KYbpuhS64FSm+9tXe4IaKn6EjbHo20g==}
    dependencies:
      '@turf/boolean-disjoint': 7.1.0
      '@turf/helpers': 7.1.0
      '@turf/meta': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/boolean-overlap@7.1.0:
    resolution: {integrity: sha512-mJRN0X8JiPm8eDZk5sLvIrsP03A2GId6ijx4VgSE1AvHwV6qB561KlUbWxga2AScocIfv/y/qd2OCs+/TQSZcg==}
    dependencies:
      '@turf/helpers': 7.1.0
      '@turf/invariant': 7.1.0
      '@turf/line-intersect': 7.1.0
      '@turf/line-overlap': 7.1.0
      '@turf/meta': 7.1.0
      '@types/geojson': 7946.0.14
      geojson-equality-ts: 1.0.2
      tslib: 2.8.1
    dev: false
  /@turf/boolean-parallel@7.1.0:
    resolution: {integrity: sha512-tA84Oux0X91CxUc6c/lZph5W9wUZGNT4fxFOg5Gp1IMTSwtxSYL1LMvKsr/VmMnwdOUkNcqAgU06+t4wBLtDfg==}
    dependencies:
      '@turf/clean-coords': 7.1.0
      '@turf/helpers': 7.1.0
      '@turf/line-segment': 7.1.0
      '@turf/rhumb-bearing': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/boolean-point-in-polygon@7.1.0:
    resolution: {integrity: sha512-mprVsyIQ+ijWTZwbnO4Jhxu94ZW2M2CheqLiRTsGJy0Ooay9v6Av5/Nl3/Gst7ZVXxPqMeMaFYkSzcTc87AKew==}
    dependencies:
      '@turf/helpers': 7.1.0
      '@turf/invariant': 7.1.0
      '@types/geojson': 7946.0.14
      point-in-polygon-hao: 1.1.0
      tslib: 2.8.1
    dev: false
  /@turf/boolean-point-on-line@7.1.0:
    resolution: {integrity: sha512-Kd83EjeTyY4kVMAhcW3Lb8aChwh24BUIhmpE9Or8M+ETNsFGzn9M7qtIySJHLRzKAL3letvWSKXKQPuK1AhAzg==}
    dependencies:
      '@turf/helpers': 7.1.0
      '@turf/invariant': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/boolean-touches@7.1.0:
    resolution: {integrity: sha512-qN4LCs3RfVtNAAdn5GpsUFBqoZyAaK9UzSnGSh67GP9sy5M8MEHwM/HAJ5zGWJqQADrczI3U6BRWGLcGfGSz3Q==}
    dependencies:
      '@turf/boolean-point-in-polygon': 7.1.0
      '@turf/boolean-point-on-line': 7.1.0
      '@turf/helpers': 7.1.0
      '@turf/invariant': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/boolean-valid@7.1.0:
    resolution: {integrity: sha512-zq1QCfQEyn+piHlvxxDifjmsJn2xl53i4mnKFYdMQI/i09XiX+Fi/MVM3i2hf3D5AsEPsud8Tk7C7rWNCm4nVw==}
    dependencies:
      '@turf/bbox': 7.1.0
      '@turf/boolean-crosses': 7.1.0
      '@turf/boolean-disjoint': 7.1.0
      '@turf/boolean-overlap': 7.1.0
      '@turf/boolean-point-in-polygon': 7.1.0
      '@turf/boolean-point-on-line': 7.1.0
      '@turf/helpers': 7.1.0
      '@turf/invariant': 7.1.0
      '@turf/line-intersect': 7.1.0
      '@types/geojson': 7946.0.14
      geojson-polygon-self-intersections: 1.2.1
      tslib: 2.8.1
    dev: false
  /@turf/boolean-within@7.1.0:
    resolution: {integrity: sha512-pgXgKCzYHssADQ1nClB1Q9aWI/dE1elm2jy3B5X59XdoFXKrKDZA+gCHYOYgp2NGO/txzVfl3UKvnxIj54Fa4w==}
    dependencies:
      '@turf/bbox': 7.1.0
      '@turf/boolean-point-in-polygon': 7.1.0
      '@turf/boolean-point-on-line': 7.1.0
      '@turf/helpers': 7.1.0
      '@turf/invariant': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/buffer@7.1.0:
    resolution: {integrity: sha512-QM3JiCMYA19k5ouO8wJtvICX3Y8XntxVpDfHSKhFFidZcCkMTR2PWWOpwS6EoL3t75rSKw/FOLIPLZGtIu963w==}
    dependencies:
      '@turf/bbox': 7.1.0
      '@turf/center': 7.1.0
      '@turf/helpers': 7.1.0
      '@turf/jsts': 2.7.1
      '@turf/meta': 7.1.0
      '@turf/projection': 7.1.0
      '@types/geojson': 7946.0.14
      d3-geo: 1.7.1
    dev: false
  /@turf/center-mean@7.1.0:
    resolution: {integrity: sha512-NQZB1LUVsyAD+p0+D4huzX2XVnfVx1yEEI9EX602THmi+g+nkge4SK9OMV11ov/Tv8JJ6aVNVPo/cy1vm/LCIQ==}
    dependencies:
      '@turf/bbox': 7.1.0
      '@turf/helpers': 7.1.0
      '@turf/meta': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/center-median@7.1.0:
    resolution: {integrity: sha512-jx4/Ql5+v41Cd0J/gseNCUbLTzWUT2LUaiXn8eFWDrvmEgqHIx7KJcGcJd5HzV+9zJwng4AXxyh5NMvUR0NjwA==}
    dependencies:
      '@turf/center-mean': 7.1.0
      '@turf/centroid': 7.1.0
      '@turf/distance': 7.1.0
      '@turf/helpers': 7.1.0
      '@turf/meta': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/center-of-mass@7.1.0:
    resolution: {integrity: sha512-j38oBlj7LBoCjZbrIo8EoHVGhk7UQmMLQ1fe8ZPAF9pd05XEL1qxyHKZKdQ/deGISiaEhXCyfLNrKAHAuy25RA==}
    dependencies:
      '@turf/centroid': 7.1.0
      '@turf/convex': 7.1.0
      '@turf/helpers': 7.1.0
      '@turf/invariant': 7.1.0
      '@turf/meta': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/center@7.1.0:
    resolution: {integrity: sha512-p9AvBMwNZmRg65kU27cGKHAUQnEcdz8Y7f/i5DvaMfm4e8zmawr+hzPKXaUpUfiTyLs8Xt2W9vlOmNGyH+6X3w==}
    dependencies:
      '@turf/bbox': 7.1.0
      '@turf/helpers': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/centroid@7.1.0:
    resolution: {integrity: sha512-1Y1b2l+ZB1CZ+ITjUCsGqC4/tSjwm/R4OUfDztVqyyCq/VvezkLmTNqvXTGXgfP0GXkpv68iCfxF5M7QdM5pJQ==}
    dependencies:
      '@turf/helpers': 7.1.0
      '@turf/meta': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/circle@7.1.0:
    resolution: {integrity: sha512-6qhF1drjwH0Dg3ZB9om1JkWTJfAqBcbtIrAj5UPlrAeHP87hGoCO2ZEsFEAL9Q18vntpivT89Uho/nqQUjJhYw==}
    dependencies:
      '@turf/destination': 7.1.0
      '@turf/helpers': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/clean-coords@7.1.0:
    resolution: {integrity: sha512-q1U8UbRVL5cRdwOlNjD8mad8pWjFGe0s4ihg1pSiVNq7i47WASJ3k20yZiUFvuAkyNjV0rZ/A7Jd7WzjcierFg==}
    dependencies:
      '@turf/helpers': 7.1.0
      '@turf/invariant': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/clone@7.1.0:
    resolution: {integrity: sha512-5R9qeWvL7FDdBIbEemd0eCzOStr09oburDvJ1hRiPCFX6rPgzcZBQ0gDmZzoF4AFcNLb5IwknbLZjVLaUGWtFA==}
    dependencies:
      '@turf/helpers': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/clusters-dbscan@7.1.0:
    resolution: {integrity: sha512-BmrBTOEaKN5FIED6b3yb3V3ejfK0A2Q3pT9/ji3mcRLJiBaRGeiN5V6gtGXe7PeMYdoqhHykU5Ye2uUtREWRdQ==}
    dependencies:
      '@turf/clone': 7.1.0
      '@turf/distance': 7.1.0
      '@turf/helpers': 7.1.0
      '@turf/meta': 7.1.0
      '@types/geojson': 7946.0.14
      rbush: 3.0.1
      tslib: 2.8.1
    dev: false
  /@turf/clusters-kmeans@7.1.0:
    resolution: {integrity: sha512-M8cCqR6iE1jDSUF/UU9QdPUFrobZS2fo59TfF1IRHZ2G1EjbcK4GzZcUfmQS6DZraGudYutpMYIuNdm1dPMqdQ==}
    dependencies:
      '@turf/clone': 7.1.0
      '@turf/helpers': 7.1.0
      '@turf/invariant': 7.1.0
      '@turf/meta': 7.1.0
      '@types/geojson': 7946.0.14
      skmeans: 0.9.7
      tslib: 2.8.1
    dev: false
  /@turf/clusters@7.1.0:
    resolution: {integrity: sha512-7CY3Ai+5V6q2O9/IgqLpJQrmrTy7aUJjTW1iRan8Tz3WixvxyJHeS3iyRy8Oc0046chQIaHLtyTgKVt2QdsPSA==}
    dependencies:
      '@turf/helpers': 7.1.0
      '@turf/meta': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/collect@7.1.0:
    resolution: {integrity: sha512-6indMWLiKeBh4AsioNeFeFnO0k9U5CBsWAFEje6tOEFI4c+P7LF9mNA9z91H8KkrhegR9XNO5Vm2rmdY63aYXw==}
    dependencies:
      '@turf/bbox': 7.1.0
      '@turf/boolean-point-in-polygon': 7.1.0
      '@turf/helpers': 7.1.0
      '@types/geojson': 7946.0.14
      rbush: 3.0.1
      tslib: 2.8.1
    dev: false
  /@turf/combine@7.1.0:
    resolution: {integrity: sha512-Xl7bGKKjgzIq2T/IemS6qnIykyuxU6cMxKtz+qLeWJGoNww/BllwxXePSV+dWRPXZTFFj96KIhBXAW0aUjAQKQ==}
    dependencies:
      '@turf/helpers': 7.1.0
      '@turf/meta': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/concave@7.1.0:
    resolution: {integrity: sha512-aSid53gYRee4Tjc4pfeI3KI+RoBUnL/hRMilxIPduagTgZZS+cvvk01OQWBKm5UTVfHRGuy0XIqnK8y9RFinDQ==}
    dependencies:
      '@turf/clone': 7.1.0
      '@turf/distance': 7.1.0
      '@turf/helpers': 7.1.0
      '@turf/invariant': 7.1.0
      '@turf/meta': 7.1.0
      '@turf/tin': 7.1.0
      '@types/geojson': 7946.0.14
      topojson-client: 3.1.0
      topojson-server: 3.0.1
      tslib: 2.8.1
    dev: false
  /@turf/convex@7.1.0:
    resolution: {integrity: sha512-w9fUMZYE36bLrEWEj7L7aVMCB7NBtr2o8G+avRvUIwF4DPqbtcjlcZE9EEBfq44uYdn+/Pke6Iq42T/zyD/cpg==}
    dependencies:
      '@turf/helpers': 7.1.0
      '@turf/meta': 7.1.0
      '@types/geojson': 7946.0.14
      concaveman: 1.2.1
      tslib: 2.8.1
    dev: false
  /@turf/destination@7.1.0:
    resolution: {integrity: sha512-97XuvB0iaAiMg86hrnZ529WwP44TQAA9mmI5PMlchACiA4LFrEtWjjDzvO6234coieoqhrw6dZYcJvd5O2PwrQ==}
    dependencies:
      '@turf/helpers': 7.1.0
      '@turf/invariant': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/difference@7.1.0:
    resolution: {integrity: sha512-+JVzdskICQ8ULKQ9CpWUM5kBvoXxN4CO78Ez/Ki3/7NXl7+HM/nb12B0OyM8hkJchpb8TsOi0YwyJiKMqEpTBA==}
    dependencies:
      '@turf/helpers': 7.1.0
      '@turf/meta': 7.1.0
      '@types/geojson': 7946.0.14
      polygon-clipping: 0.15.7
      tslib: 2.8.1
    dev: false
  /@turf/dissolve@7.1.0:
    resolution: {integrity: sha512-fyOnCSYVUZ8SF9kt9ROnQYlkJTE0hpWSoWwbMZQCAR7oVZVPiuPq7eIbzTP+k5jzEAnofsqoGs5qVDTjHcWMiw==}
    dependencies:
      '@turf/flatten': 7.1.0
      '@turf/helpers': 7.1.0
      '@turf/invariant': 7.1.0
      '@turf/meta': 7.1.0
      '@types/geojson': 7946.0.14
      polygon-clipping: 0.15.7
      tslib: 2.8.1
    dev: false
  /@turf/distance-weight@7.1.0:
    resolution: {integrity: sha512-8m6s4y8Yyt6r3itf44yAJjXC+62UkrkhOpskIfaE0lHcBcvZz9wjboHoBf3bS4l/42E4StcanbFZdjOpODAdZw==}
    dependencies:
      '@turf/centroid': 7.1.0
      '@turf/helpers': 7.1.0
      '@turf/invariant': 7.1.0
      '@turf/meta': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/distance@7.1.0:
    resolution: {integrity: sha512-hhNHhxCHB3ddzAGCNY4BtE29OZh+DAJPvUapQz+wOjISnlwvMcwLKvslgHWSYF536QDVe/93FEU2q67+CsZTPA==}
    dependencies:
      '@turf/helpers': 7.1.0
      '@turf/invariant': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/ellipse@7.1.0:
    resolution: {integrity: sha512-AfOahUmStDExWGPg8ZWxxkgom+fdJs7Mn9DzZH+fV/uZ+je1bLQpbPCUu9/ev6u/HhbYGl4VAL/CeQzjOyy6LQ==}
    dependencies:
      '@turf/helpers': 7.1.0
      '@turf/invariant': 7.1.0
      '@turf/rhumb-destination': 7.1.0
      '@turf/transform-rotate': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/envelope@7.1.0:
    resolution: {integrity: sha512-WeLQse9wuxsxhzSqrJA6Ha7rLWnLKgdKY9cfxmJKHSpgqcJyNk60m7+T3UpI/nkGwpfbpeyB3EGC1EWPbxiDUg==}
    dependencies:
      '@turf/bbox': 7.1.0
      '@turf/bbox-polygon': 7.1.0
      '@turf/helpers': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/explode@7.1.0:
    resolution: {integrity: sha512-To+GUbU6HtcHZ8S0w/dw1EbdQIOCXALTr6Ug5/IFg8hIBMJelDpVr3Smwy8uqhDRFinY2eprBwQnDPcd10eCqA==}
    dependencies:
      '@turf/helpers': 7.1.0
      '@turf/meta': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/flatten@7.1.0:
    resolution: {integrity: sha512-Kb23pqEarcLsdBqnQcK0qTrSMiWNTVb9tOFrNlZc66DIhDLAdpOKG4eqk00CMoUzWTixlnawDgJRqcStRrR4WA==}
    dependencies:
      '@turf/helpers': 7.1.0
      '@turf/meta': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/flip@7.1.0:
    resolution: {integrity: sha512-vac73W8WblzzNFanzWYLBzWDIcqc5xczOrtEO07RDEiKEI3Heo0471Jed3v9W506uuOX6/HAiCjXbRjTLjiLfw==}
    dependencies:
      '@turf/clone': 7.1.0
      '@turf/helpers': 7.1.0
      '@turf/meta': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/geojson-rbush@7.1.0:
    resolution: {integrity: sha512-j1C7Ohlxa1z644bNOpgibcFGaDLgLXGLOzwF1tfQaP5y7E4PJQUXL0DWIgNb3Ke7gZC05LPHM25a5TRReUfFBQ==}
    dependencies:
      '@turf/bbox': 7.1.0
      '@turf/helpers': 7.1.0
      '@turf/meta': 7.1.0
      '@types/geojson': 7946.0.14
      rbush: 3.0.1
    dev: false
  /@turf/great-circle@7.1.0:
    resolution: {integrity: sha512-92q5fqUp5oW+FYekUIrUVR5PZBWbOV6NHKHPIiNahiPvtkpZItbbjoO+tGn5+2i8mxZP9FGOthayJe4V0a1xkg==}
    dependencies:
      '@turf/helpers': 7.1.0
      '@turf/invariant': 7.1.0
      '@types/geojson': 7946.0.14
    dev: false
  /@turf/helpers@7.1.0:
    resolution: {integrity: sha512-dTeILEUVeNbaEeoZUOhxH5auv7WWlOShbx7QSd4s0T4Z0/iz90z9yaVCtZOLbU89umKotwKaJQltBNO9CzVgaQ==}
    dependencies:
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/hex-grid@7.1.0:
    resolution: {integrity: sha512-I+Apx0smOPkMzaS5HHL44YOxSkSUvrz+wtSIETsDFWWLT2xKNkaaEcYU5MkgSoEfQsj082M7EkOIIpocXlA3kg==}
    dependencies:
      '@turf/distance': 7.1.0
      '@turf/helpers': 7.1.0
      '@turf/intersect': 7.1.0
      '@turf/invariant': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/interpolate@7.1.0:
    resolution: {integrity: sha512-VWec1OW9gHZLPS3yYkUXAHKMGQuYO4aqh8WCltT7Ym4efrKqkSOE5T+mBqO68QgcL8nY4kiNa8lxwXd0SfXDSA==}
    dependencies:
      '@turf/bbox': 7.1.0
      '@turf/centroid': 7.1.0
      '@turf/clone': 7.1.0
      '@turf/distance': 7.1.0
      '@turf/helpers': 7.1.0
      '@turf/hex-grid': 7.1.0
      '@turf/invariant': 7.1.0
      '@turf/meta': 7.1.0
      '@turf/point-grid': 7.1.0
      '@turf/square-grid': 7.1.0
      '@turf/triangle-grid': 7.1.0
      '@types/geojson': 7946.0.14
    dev: false
  /@turf/intersect@7.1.0:
    resolution: {integrity: sha512-T0VhI6yhptX9EoMsuuBETyqV+edyq31SUC8bfuM6kdJ5WwJ0EvUfQoC+3bhMtCOn60lHawrUuGBgW+vCO8KGMg==}
    dependencies:
      '@turf/helpers': 7.1.0
      '@turf/meta': 7.1.0
      '@types/geojson': 7946.0.14
      polygon-clipping: 0.15.7
      tslib: 2.8.1
    dev: false
  /@turf/invariant@7.1.0:
    resolution: {integrity: sha512-OCLNqkItBYIP1nE9lJGuIUatWGtQ4rhBKAyTfFu0z8npVzGEYzvguEeof8/6LkKmTTEHW53tCjoEhSSzdRh08Q==}
    dependencies:
      '@turf/helpers': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/isobands@7.1.0:
    resolution: {integrity: sha512-iMLTOP/K5C05AttF4N1WeV+KrY4O5VWW/abO0N86XCWh1OeqmIUgqIBKEmhDzttAqC0UK2YrUfj0lI1Ez1fYZQ==}
    dependencies:
      '@turf/area': 7.1.0
      '@turf/bbox': 7.1.0
      '@turf/boolean-point-in-polygon': 7.1.0
      '@turf/explode': 7.1.0
      '@turf/helpers': 7.1.0
      '@turf/invariant': 7.1.0
      '@turf/meta': 7.1.0
      '@types/geojson': 7946.0.14
      marchingsquares: 1.3.3
      tslib: 2.8.1
    dev: false
  /@turf/isolines@7.1.0:
    resolution: {integrity: sha512-V6QTHXBT5ZsL3s9ZVBJgHYtz3gCFKqNnQLysNE02LE0fVVqaSao3sFrcpghmdDxf0hBCDK8lZVvyRGO6o32LHQ==}
    dependencies:
      '@turf/bbox': 7.1.0
      '@turf/helpers': 7.1.0
      '@turf/invariant': 7.1.0
      '@turf/meta': 7.1.0
      '@types/geojson': 7946.0.14
      marchingsquares: 1.3.3
      tslib: 2.8.1
    dev: false
  /@turf/jsts@2.7.1:
    resolution: {integrity: sha512-+nwOKme/aUprsxnLSfr2LylV6eL6T1Tuln+4Hl92uwZ8FrmjDRCH5Bi1LJNVfWCiYgk8+5K+t2zDphWNTsIFDA==}
    dependencies:
      jsts: 2.7.1
    dev: false
  /@turf/kinks@7.1.0:
    resolution: {integrity: sha512-KKLYUsyJPU17fODwA81mhHzFYGQYocdbk9NxDPCcdRHvxzM8t95lptkGx/2k/9rXBs1DK7NmyzI4m7zDO0DK7g==}
    dependencies:
      '@turf/helpers': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/length@7.1.0:
    resolution: {integrity: sha512-wUJj9WLKEudG1ngNao2ZwD+Dt6UkvWIbubuJ6lR6FndFDL3iezFhNGy0IXS+0xH9kXi2apiTnM9Vk5+i8BTEvQ==}
    dependencies:
      '@turf/distance': 7.1.0
      '@turf/helpers': 7.1.0
      '@turf/meta': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/line-arc@7.1.0:
    resolution: {integrity: sha512-9/bM34PozTyJ5FXXPAzl/j0RpcTImgMFJZ0WhH0pZZEZRum6P0rJnENt2E2qI441zeozQ9H6X5DCiJogDmRUEw==}
    dependencies:
      '@turf/circle': 7.1.0
      '@turf/destination': 7.1.0
      '@turf/helpers': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/line-chunk@7.1.0:
    resolution: {integrity: sha512-1lIUfqAQvCWAuUNC2ip8UYmM5kDltXOidLPW45Ee1OAIKYGBeFNtjwnxc0mQ40tnfTXclTYLDdOOP9LShspT9w==}
    dependencies:
      '@turf/helpers': 7.1.0
      '@turf/length': 7.1.0
      '@turf/line-slice-along': 7.1.0
      '@turf/meta': 7.1.0
      '@types/geojson': 7946.0.14
    dev: false
  /@turf/line-intersect@7.1.0:
    resolution: {integrity: sha512-JI3dvOsAoCqd4vUJ134FIzgcC42QpC/tBs+b4OJoxWmwDek3REv4qGaZY6wCg9X4hFSlCKFcnhMIQQZ/n720Qg==}
    dependencies:
      '@turf/helpers': 7.1.0
      '@types/geojson': 7946.0.14
      sweepline-intersections: 1.5.0
      tslib: 2.8.1
    dev: false
  /@turf/line-offset@7.1.0:
    resolution: {integrity: sha512-pz6irzhiQlJurU7DoXada6k3ei7PzY+VpsE/Wotm0D2KEAnoxqum2WK0rqqrhKPHKn+xpUGsHN9W/6K+qtmaHg==}
    dependencies:
      '@turf/helpers': 7.1.0
      '@turf/invariant': 7.1.0
      '@turf/meta': 7.1.0
      '@types/geojson': 7946.0.14
    dev: false
  /@turf/line-overlap@7.1.0:
    resolution: {integrity: sha512-BdHuEoFAtqvVw3LkjCdivG035nfuwZuxji2ijst+mkmDnlv7uwSBudJqcDGjU6up2r8P1mXChS4im4xjUz+lwg==}
    dependencies:
      '@turf/boolean-point-on-line': 7.1.0
      '@turf/geojson-rbush': 7.1.0
      '@turf/helpers': 7.1.0
      '@turf/invariant': 7.1.0
      '@turf/line-segment': 7.1.0
      '@turf/meta': 7.1.0
      '@turf/nearest-point-on-line': 7.1.0
      '@types/geojson': 7946.0.14
      fast-deep-equal: 3.1.3
      tslib: 2.8.1
    dev: false
  /@turf/line-segment@7.1.0:
    resolution: {integrity: sha512-9rgIIH6ZzC3IiWxDQtKsq+j6eu8fRinMkJeusfI9HqOTm4vO02Ll4F/FigjOMOO/6X3TJ+Pqe3gS99TUaBINkw==}
    dependencies:
      '@turf/helpers': 7.1.0
      '@turf/invariant': 7.1.0
      '@turf/meta': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/line-slice-along@7.1.0:
    resolution: {integrity: sha512-UwfnFORZnu4xdnuRXiQM3ODa8f9Q0FBjQF/XHNsPEI/xxmnwgQj3MZiULbAeHUbtU/7psTC7gEjfE3Lf0tcKQw==}
    dependencies:
      '@turf/bearing': 7.1.0
      '@turf/destination': 7.1.0
      '@turf/distance': 7.1.0
      '@turf/helpers': 7.1.0
      '@types/geojson': 7946.0.14
    dev: false
  /@turf/line-slice@7.1.0:
    resolution: {integrity: sha512-44xcjgMQxTa7tTAZlSD3t1cFjHi5SCfAqjg1ONv45EYKsQSonPaxD7LGzCbU5pR2RJjx3R7QRJx2G88hnGcXjQ==}
    dependencies:
      '@turf/helpers': 7.1.0
      '@turf/invariant': 7.1.0
      '@turf/nearest-point-on-line': 7.1.0
      '@types/geojson': 7946.0.14
    dev: false
  /@turf/line-split@7.1.0:
    resolution: {integrity: sha512-QqUAmtlrnEu75cpLOmpEuiYU63BeVwpSKOBllBbu5gkP+7H/WBM/9fh7J0VgHNFHzqZCKiu8v4158k+CZr0QAg==}
    dependencies:
      '@turf/bbox': 7.1.0
      '@turf/geojson-rbush': 7.1.0
      '@turf/helpers': 7.1.0
      '@turf/invariant': 7.1.0
      '@turf/line-intersect': 7.1.0
      '@turf/line-segment': 7.1.0
      '@turf/meta': 7.1.0
      '@turf/nearest-point-on-line': 7.1.0
      '@turf/square': 7.1.0
      '@turf/truncate': 7.1.0
      '@types/geojson': 7946.0.14
    dev: false
  /@turf/line-to-polygon@7.1.0:
    resolution: {integrity: sha512-n/IWBRbo+l4XDTz4sfQsQm5bU9xex8KrthK397jQasd7a9PiOKGon9Z1t/lddTJhND6ajVyJ3hl+eZMtpQaghQ==}
    dependencies:
      '@turf/bbox': 7.1.0
      '@turf/clone': 7.1.0
      '@turf/helpers': 7.1.0
      '@turf/invariant': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/mask@7.1.0:
    resolution: {integrity: sha512-d+u3IIiRhe17TDfP/+UMn9qRlJYPJpK7sj6WorsssluGi0yIG/Z24uWpcLskWKSI8NNgkIbDrp+GIYkJi2t7SA==}
    dependencies:
      '@turf/clone': 7.1.0
      '@turf/helpers': 7.1.0
      '@types/geojson': 7946.0.14
      polygon-clipping: 0.15.7
      tslib: 2.8.1
    dev: false
  /@turf/meta@7.1.0:
    resolution: {integrity: sha512-ZgGpWWiKz797Fe8lfRj7HKCkGR+nSJ/5aKXMyofCvLSc2PuYJs/qyyifDPWjASQQCzseJ7AlF2Pc/XQ/3XkkuA==}
    dependencies:
      '@turf/helpers': 7.1.0
      '@types/geojson': 7946.0.14
    dev: false
  /@turf/midpoint@7.1.0:
    resolution: {integrity: sha512-uiUU9TwRZOCeiTUn8+7oE6MJUvclfq+n6KQ5VCMTZXiRUJjPu7nDLpBle1t2WSv7/w7O0kSQ4FfKXh0gHnkJOw==}
    dependencies:
      '@turf/bearing': 7.1.0
      '@turf/destination': 7.1.0
      '@turf/distance': 7.1.0
      '@turf/helpers': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/moran-index@7.1.0:
    resolution: {integrity: sha512-xsvAr3IRF/C6PlRMoN/ANrRx6c3QFUJgBCIVfI7re+Lkdprrzgw1HZA48ZjP4F91xbhgA1scnRgQdHFi2vO2SA==}
    dependencies:
      '@turf/distance-weight': 7.1.0
      '@turf/helpers': 7.1.0
      '@turf/meta': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/nearest-neighbor-analysis@7.1.0:
    resolution: {integrity: sha512-FAhT8/op3DuvqH0XFhv055JhYq/FC4aaIxEZ4hj8c7W6sYhUHAQgdRZ0tJ1RLe5/h+eXhCTbQ+DFfnfv3klu8g==}
    dependencies:
      '@turf/area': 7.1.0
      '@turf/bbox': 7.1.0
      '@turf/bbox-polygon': 7.1.0
      '@turf/centroid': 7.1.0
      '@turf/distance': 7.1.0
      '@turf/helpers': 7.1.0
      '@turf/meta': 7.1.0
      '@turf/nearest-point': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/nearest-point-on-line@7.1.0:
    resolution: {integrity: sha512-aTjAOm7ab0tl5JoxGYRx/J/IbRL1DY1ZCIYQDMEQjK5gOllhclgeBC0wDXDkEZFGaVftjw0W2RtE2I0jX7RG4A==}
    dependencies:
      '@turf/bearing': 7.1.0
      '@turf/destination': 7.1.0
      '@turf/distance': 7.1.0
      '@turf/helpers': 7.1.0
      '@turf/invariant': 7.1.0
      '@turf/line-intersect': 7.1.0
      '@turf/meta': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/nearest-point-to-line@7.1.0:
    resolution: {integrity: sha512-rY2F/iY4S6U8H0hIoOI25xMWYEiKywxeTvTvn5GP8KCu+2oemfZROWa7n2+hQDRwO2/uaegrGEpxO7zlFarvzg==}
    dependencies:
      '@turf/helpers': 7.1.0
      '@turf/invariant': 7.1.0
      '@turf/meta': 7.1.0
      '@turf/point-to-line-distance': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/nearest-point@7.1.0:
    resolution: {integrity: sha512-VyInmhqfVWp+jE7sCK95o46qc4tDjAgzbRfRjr+rTgfFS1Sndyy1PdwyNn6TjBFDxiM6e+mjMEeGPjb1smJlEg==}
    dependencies:
      '@turf/clone': 7.1.0
      '@turf/distance': 7.1.0
      '@turf/helpers': 7.1.0
      '@turf/meta': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/planepoint@7.1.0:
    resolution: {integrity: sha512-hFORBkCd7Q0kNUzLqksT4XglLgTQF9tCjG+dbnZ1VehpZu+w+vlHdoW/mY7XCX3Kj1ObiyzVmXffmVYgwXwF6Q==}
    dependencies:
      '@turf/helpers': 7.1.0
      '@turf/invariant': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/point-grid@7.1.0:
    resolution: {integrity: sha512-ihuuUcWuCu4Z1+34UYCM5NGsU2DJaB4uE8cS3jDQoUqlc+8ii2ng8kcGEtTwVn0HdPsoKA7bgvSZcisJO0v6Ww==}
    dependencies:
      '@turf/boolean-within': 7.1.0
      '@turf/distance': 7.1.0
      '@turf/helpers': 7.1.0
      '@turf/invariant': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/point-on-feature@7.1.0:
    resolution: {integrity: sha512-lOO5J9I0diuGbN+r6jViEKRH3qfymsBvv25b7U0MuP8g/YC19ncUXZ86dmKfJx1++Rb485DS9h0nFvPmJpaOdg==}
    dependencies:
      '@turf/boolean-point-in-polygon': 7.1.0
      '@turf/center': 7.1.0
      '@turf/explode': 7.1.0
      '@turf/helpers': 7.1.0
      '@turf/nearest-point': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/point-to-line-distance@7.1.0:
    resolution: {integrity: sha512-Ps9eTOCaiNgxDaSNQux0wAcSLcrI0y0zYFaD9HnVm+yCMRliQXneFti2XXotS+gR7TpgnLRAAzyx4VzJMSN2tw==}
    dependencies:
      '@turf/bearing': 7.1.0
      '@turf/distance': 7.1.0
      '@turf/helpers': 7.1.0
      '@turf/invariant': 7.1.0
      '@turf/meta': 7.1.0
      '@turf/projection': 7.1.0
      '@turf/rhumb-bearing': 7.1.0
      '@turf/rhumb-distance': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/points-within-polygon@7.1.0:
    resolution: {integrity: sha512-SzqeD9Gcp11rEya+rCVMy6IPuYMrphNEkCiQ39W6ec9hsaqKlruqmtudKhhckMGVLVUUBCQAu5f55yjcDfVW2w==}
    dependencies:
      '@turf/boolean-point-in-polygon': 7.1.0
      '@turf/helpers': 7.1.0
      '@turf/meta': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/polygon-smooth@7.1.0:
    resolution: {integrity: sha512-mTlmg4XUP5rKgCP/73N91owkAXIc3t1ZKLuwsJGQM1/Op48T3rJmDwVR/WZIMnVlxl5tFbssWCCB3blj4ivx9g==}
    dependencies:
      '@turf/helpers': 7.1.0
      '@turf/meta': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/polygon-tangents@7.1.0:
    resolution: {integrity: sha512-ffBgHXtkrpgkNs8E6s9sVLSKG4lPGH3WBk294FNKBt9NS+rbhNCv8yTuOMeP0bOm/WizaCq/SUtVryJpUSoI/g==}
    dependencies:
      '@turf/bbox': 7.1.0
      '@turf/boolean-within': 7.1.0
      '@turf/explode': 7.1.0
      '@turf/helpers': 7.1.0
      '@turf/invariant': 7.1.0
      '@turf/nearest-point': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/polygon-to-line@7.1.0:
    resolution: {integrity: sha512-FBlfyBWNQZCTVGqlJH7LR2VXmvj8AydxrA8zegqek/5oPGtQDeUgIppKmvmuNClqbglhv59QtCUVaDK4bOuCTA==}
    dependencies:
      '@turf/helpers': 7.1.0
      '@turf/invariant': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/polygonize@7.1.0:
    resolution: {integrity: sha512-FBjxnOzO29MbE7MWnMPHHYtOo93cQopT5pXhkuPyoKgcTUCntR1+iVFpl5YFbMkYup0j5Oexjo/pbY38lVSZGw==}
    dependencies:
      '@turf/boolean-point-in-polygon': 7.1.0
      '@turf/envelope': 7.1.0
      '@turf/helpers': 7.1.0
      '@turf/invariant': 7.1.0
      '@turf/meta': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/projection@7.1.0:
    resolution: {integrity: sha512-3wHluMoOvXnTe7dfi0kcluTyLNG5MwGsSsK5OA98vkkLH6a1xvItn8e9GcesuT07oB2km/bgefxYEIvjQG5JCA==}
    dependencies:
      '@turf/clone': 7.1.0
      '@turf/helpers': 7.1.0
      '@turf/meta': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/quadrat-analysis@7.1.0:
    resolution: {integrity: sha512-4O5h9PyWgpqYXja9O+kzr+qk5MUz0IkJqPtt5oWWX5s4jRcLNqiEUf+zi/GDBQkVV8jH3S5klT5CLrF1fxK3hQ==}
    dependencies:
      '@turf/area': 7.1.0
      '@turf/bbox': 7.1.0
      '@turf/bbox-polygon': 7.1.0
      '@turf/centroid': 7.1.0
      '@turf/helpers': 7.1.0
      '@turf/invariant': 7.1.0
      '@turf/point-grid': 7.1.0
      '@turf/random': 7.1.0
      '@turf/square-grid': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/random@7.1.0:
    resolution: {integrity: sha512-22mXv8ejDMUWkz8DSMMqdZb0s7a0ISJzXt6T9cHovfT//vsotzkVH+5PDxJQjvmigKMnpaUgobHmQss23tAwEQ==}
    dependencies:
      '@turf/helpers': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/rectangle-grid@7.1.0:
    resolution: {integrity: sha512-4d2AuDj4LfMMJxNHbds5yX1oFR3mIVAB5D7mx6pFB0e+YkQW0mE2dUWhDTFGJZM+n45yqbNQ5hg19bmiXv94ug==}
    dependencies:
      '@turf/boolean-intersects': 7.1.0
      '@turf/distance': 7.1.0
      '@turf/helpers': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/rewind@7.1.0:
    resolution: {integrity: sha512-zX0KDZpeiH89m1vYLTEJdDL6mFyoAsCxcG0P94mXO7/JXWf0AaxzA9MkNnA/d2QYX0G4ioCMjZ5cD6nXb8SXzw==}
    dependencies:
      '@turf/boolean-clockwise': 7.1.0
      '@turf/clone': 7.1.0
      '@turf/helpers': 7.1.0
      '@turf/invariant': 7.1.0
      '@turf/meta': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/rhumb-bearing@7.1.0:
    resolution: {integrity: sha512-ESZt70eOljHVnQMFKIdiu8LIHuQlpZgzh2nqSfV40BrYjsjI/sBKeK+sp2cBWk88nsSDlriPuMTNh4f50Jqpkw==}
    dependencies:
      '@turf/helpers': 7.1.0
      '@turf/invariant': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/rhumb-destination@7.1.0:
    resolution: {integrity: sha512-WA2TeO3qrv5ZrzNihtTLLYu8X4kd12WEC6JKElm99XhgLao1/4ao2SJUi43l88HqwbrnNiq4TueGQ6tYpXGU7A==}
    dependencies:
      '@turf/helpers': 7.1.0
      '@turf/invariant': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/rhumb-distance@7.1.0:
    resolution: {integrity: sha512-fR1V+yC4E1tnbdThomosiLcv0PQOwbfLSPM8rSWuxbMcJtffsncWxyJ0+N1F5juuHbcdaYhlduX8ri5I0ZCejw==}
    dependencies:
      '@turf/helpers': 7.1.0
      '@turf/invariant': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/sample@7.1.0:
    resolution: {integrity: sha512-9Iq/Ankr4+sgBoh4FpuVVvoW+AA10eej3FS89Zu79SFdCqUIdT7T42Nn3MlSVj4jMyA1oXyT2HIAlNWkwgLw6Q==}
    dependencies:
      '@turf/helpers': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/sector@7.1.0:
    resolution: {integrity: sha512-2FI2rg//eXpa/l+WJtFfvHaf1NJ7ie2MoJ+RH5dKANtrfoof1Ed+y9dXSyuhem2tp/Srq2GhrjaSofFN5/g5vA==}
    dependencies:
      '@turf/circle': 7.1.0
      '@turf/helpers': 7.1.0
      '@turf/invariant': 7.1.0
      '@turf/line-arc': 7.1.0
      '@turf/meta': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/shortest-path@7.1.0:
    resolution: {integrity: sha512-1UmFhS5zHNacLv5rszoFOXq02BGov1oJvjlDatXsSWAd+Z7tqxpDc8D+41edrXy0ZB0Yxsy6WPNagM6hG9PRaA==}
    dependencies:
      '@turf/bbox': 7.1.0
      '@turf/bbox-polygon': 7.1.0
      '@turf/boolean-point-in-polygon': 7.1.0
      '@turf/clean-coords': 7.1.0
      '@turf/distance': 7.1.0
      '@turf/helpers': 7.1.0
      '@turf/invariant': 7.1.0
      '@turf/meta': 7.1.0
      '@turf/transform-scale': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/simplify@7.1.0:
    resolution: {integrity: sha512-JypymaoiSiFzGHwEoUkK0OPW1KQSnH3hEsEW3UIRS+apzltJ4HdFovYjsfqQgGZJZ+NJ9+dv7h8pgGLYuqcBUQ==}
    dependencies:
      '@turf/clean-coords': 7.1.0
      '@turf/clone': 7.1.0
      '@turf/helpers': 7.1.0
      '@turf/meta': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/square-grid@7.1.0:
    resolution: {integrity: sha512-JyhsALULVRlkh8htdTi9aXaXFSUv6wRNbeFbqyGJKKlA5eF+AYmyWdI/BlFGQN27xtbtMPeAuLmj+8jaB2omGw==}
    dependencies:
      '@turf/helpers': 7.1.0
      '@turf/rectangle-grid': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/square@7.1.0:
    resolution: {integrity: sha512-ANuA+WXZheGTLW6Veq0i+/B2S4KMhEHAixDv9gQEb9e6FTyqTJVwrqP4CHI3OzA3DZ/ytFf+NTKVofetO/BBQg==}
    dependencies:
      '@turf/distance': 7.1.0
      '@turf/helpers': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/standard-deviational-ellipse@7.1.0:
    resolution: {integrity: sha512-JqvQFH/witHh+3XgPC1Qk4+3G8w8WQta2NTJjnGinOgFulH+7RD4DcxCT+XXtCHoeq8IvL9VPJRX3ciaW5nSCg==}
    dependencies:
      '@turf/center-mean': 7.1.0
      '@turf/ellipse': 7.1.0
      '@turf/helpers': 7.1.0
      '@turf/invariant': 7.1.0
      '@turf/meta': 7.1.0
      '@turf/points-within-polygon': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/tag@7.1.0:
    resolution: {integrity: sha512-cD8TC++DnNmdI1B/apTf3nj2zRNY6SoLRliB8K76OB+70Kev8tOf4ZVgAqOd0u+Hpdg/T6l7dO7fyJ6UouE7jA==}
    dependencies:
      '@turf/boolean-point-in-polygon': 7.1.0
      '@turf/clone': 7.1.0
      '@turf/helpers': 7.1.0
      '@turf/meta': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/tesselate@7.1.0:
    resolution: {integrity: sha512-E/Z94Mx6kUjvQVbEcSuM9MbEo2dkOczRe4ZzjhFlLgJh1dCkfRgwYLH49mb2CcfG/me1arxoCgmtG+qgm7LrCg==}
    dependencies:
      '@turf/helpers': 7.1.0
      '@types/geojson': 7946.0.14
      earcut: 2.2.4
      tslib: 2.8.1
    dev: false
  /@turf/tin@7.1.0:
    resolution: {integrity: sha512-h8Bdm0IYN6OpKHM8lBRWGxkJnZcxL0KYecf8U6pa6DCEYsEXuEExMTvYSD2OmqIsL5ml8P6RjwgyI+dZeE0O9A==}
    dependencies:
      '@turf/helpers': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/transform-rotate@7.1.0:
    resolution: {integrity: sha512-Vp7VBZ6DqaPV8mkwSycksBFRLqSj3y16zg+uEPSCsXUjbFtw9DOLcyH2F5vMpnC2bOpS9NOB4hebhJRwBwAPWQ==}
    dependencies:
      '@turf/centroid': 7.1.0
      '@turf/clone': 7.1.0
      '@turf/helpers': 7.1.0
      '@turf/invariant': 7.1.0
      '@turf/meta': 7.1.0
      '@turf/rhumb-bearing': 7.1.0
      '@turf/rhumb-destination': 7.1.0
      '@turf/rhumb-distance': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/transform-scale@7.1.0:
    resolution: {integrity: sha512-m5fLnh3JqrWSv0sAC8Aieet/fr5IZND8BFaE9LakMidtNaJqOIPOyVmUoklcrGn6eK6MX+66rRPn+5a1pahlLQ==}
    dependencies:
      '@turf/bbox': 7.1.0
      '@turf/center': 7.1.0
      '@turf/centroid': 7.1.0
      '@turf/clone': 7.1.0
      '@turf/helpers': 7.1.0
      '@turf/invariant': 7.1.0
      '@turf/meta': 7.1.0
      '@turf/rhumb-bearing': 7.1.0
      '@turf/rhumb-destination': 7.1.0
      '@turf/rhumb-distance': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/transform-translate@7.1.0:
    resolution: {integrity: sha512-XA6Oh7VqUDrieY9m9/OF4XpBTd8qlfVGi3ObywojCqtHaHKLK3aXwTBZ276i0QKmZqOQA+2jFa9NhgF/TgBDrw==}
    dependencies:
      '@turf/clone': 7.1.0
      '@turf/helpers': 7.1.0
      '@turf/invariant': 7.1.0
      '@turf/meta': 7.1.0
      '@turf/rhumb-destination': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/triangle-grid@7.1.0:
    resolution: {integrity: sha512-hrPyRAuX5PKu7txmc/11VPKrlJDR+JGzd+eijupKTspNLR4n2sqZUx8UXqSxZ/1nq06ScTyjIfGQJVzlRS8BTg==}
    dependencies:
      '@turf/distance': 7.1.0
      '@turf/helpers': 7.1.0
      '@turf/intersect': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/truncate@7.1.0:
    resolution: {integrity: sha512-rrF3AML9PGZw2i5wmt53ESI+Ln9cZyCXgJ7QrEvkT8NbE4OFgmw6p8/1xT8+VEWFSpD4gHz+hmM+5FaFxXvtNg==}
    dependencies:
      '@turf/helpers': 7.1.0
      '@turf/meta': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/turf@7.1.0:
    resolution: {integrity: sha512-7NA6tAjbu9oIvIfpRO5AdPrZbFTlUFU02HVA7sLJM9jFeNIZovW09QuDo23uoS2z5l94SXV1GgKKxN5wo7prCw==}
    dependencies:
      '@turf/along': 7.1.0
      '@turf/angle': 7.1.0
      '@turf/area': 7.1.0
      '@turf/bbox': 7.1.0
      '@turf/bbox-clip': 7.1.0
      '@turf/bbox-polygon': 7.1.0
      '@turf/bearing': 7.1.0
      '@turf/bezier-spline': 7.1.0
      '@turf/boolean-clockwise': 7.1.0
      '@turf/boolean-concave': 7.1.0
      '@turf/boolean-contains': 7.1.0
      '@turf/boolean-crosses': 7.1.0
      '@turf/boolean-disjoint': 7.1.0
      '@turf/boolean-equal': 7.1.0
      '@turf/boolean-intersects': 7.1.0
      '@turf/boolean-overlap': 7.1.0
      '@turf/boolean-parallel': 7.1.0
      '@turf/boolean-point-in-polygon': 7.1.0
      '@turf/boolean-point-on-line': 7.1.0
      '@turf/boolean-touches': 7.1.0
      '@turf/boolean-valid': 7.1.0
      '@turf/boolean-within': 7.1.0
      '@turf/buffer': 7.1.0
      '@turf/center': 7.1.0
      '@turf/center-mean': 7.1.0
      '@turf/center-median': 7.1.0
      '@turf/center-of-mass': 7.1.0
      '@turf/centroid': 7.1.0
      '@turf/circle': 7.1.0
      '@turf/clean-coords': 7.1.0
      '@turf/clone': 7.1.0
      '@turf/clusters': 7.1.0
      '@turf/clusters-dbscan': 7.1.0
      '@turf/clusters-kmeans': 7.1.0
      '@turf/collect': 7.1.0
      '@turf/combine': 7.1.0
      '@turf/concave': 7.1.0
      '@turf/convex': 7.1.0
      '@turf/destination': 7.1.0
      '@turf/difference': 7.1.0
      '@turf/dissolve': 7.1.0
      '@turf/distance': 7.1.0
      '@turf/distance-weight': 7.1.0
      '@turf/ellipse': 7.1.0
      '@turf/envelope': 7.1.0
      '@turf/explode': 7.1.0
      '@turf/flatten': 7.1.0
      '@turf/flip': 7.1.0
      '@turf/geojson-rbush': 7.1.0
      '@turf/great-circle': 7.1.0
      '@turf/helpers': 7.1.0
      '@turf/hex-grid': 7.1.0
      '@turf/interpolate': 7.1.0
      '@turf/intersect': 7.1.0
      '@turf/invariant': 7.1.0
      '@turf/isobands': 7.1.0
      '@turf/isolines': 7.1.0
      '@turf/kinks': 7.1.0
      '@turf/length': 7.1.0
      '@turf/line-arc': 7.1.0
      '@turf/line-chunk': 7.1.0
      '@turf/line-intersect': 7.1.0
      '@turf/line-offset': 7.1.0
      '@turf/line-overlap': 7.1.0
      '@turf/line-segment': 7.1.0
      '@turf/line-slice': 7.1.0
      '@turf/line-slice-along': 7.1.0
      '@turf/line-split': 7.1.0
      '@turf/line-to-polygon': 7.1.0
      '@turf/mask': 7.1.0
      '@turf/meta': 7.1.0
      '@turf/midpoint': 7.1.0
      '@turf/moran-index': 7.1.0
      '@turf/nearest-neighbor-analysis': 7.1.0
      '@turf/nearest-point': 7.1.0
      '@turf/nearest-point-on-line': 7.1.0
      '@turf/nearest-point-to-line': 7.1.0
      '@turf/planepoint': 7.1.0
      '@turf/point-grid': 7.1.0
      '@turf/point-on-feature': 7.1.0
      '@turf/point-to-line-distance': 7.1.0
      '@turf/points-within-polygon': 7.1.0
      '@turf/polygon-smooth': 7.1.0
      '@turf/polygon-tangents': 7.1.0
      '@turf/polygon-to-line': 7.1.0
      '@turf/polygonize': 7.1.0
      '@turf/projection': 7.1.0
      '@turf/quadrat-analysis': 7.1.0
      '@turf/random': 7.1.0
      '@turf/rectangle-grid': 7.1.0
      '@turf/rewind': 7.1.0
      '@turf/rhumb-bearing': 7.1.0
      '@turf/rhumb-destination': 7.1.0
      '@turf/rhumb-distance': 7.1.0
      '@turf/sample': 7.1.0
      '@turf/sector': 7.1.0
      '@turf/shortest-path': 7.1.0
      '@turf/simplify': 7.1.0
      '@turf/square': 7.1.0
      '@turf/square-grid': 7.1.0
      '@turf/standard-deviational-ellipse': 7.1.0
      '@turf/tag': 7.1.0
      '@turf/tesselate': 7.1.0
      '@turf/tin': 7.1.0
      '@turf/transform-rotate': 7.1.0
      '@turf/transform-scale': 7.1.0
      '@turf/transform-translate': 7.1.0
      '@turf/triangle-grid': 7.1.0
      '@turf/truncate': 7.1.0
      '@turf/union': 7.1.0
      '@turf/unkink-polygon': 7.1.0
      '@turf/voronoi': 7.1.0
      '@types/geojson': 7946.0.14
      tslib: 2.8.1
    dev: false
  /@turf/union@7.1.0:
    resolution: {integrity: sha512-7VI8jONdBg9qmbfNlLQycPr93l5aU9HGMgWI9M6pb4ERuU2+p8KgffCgs2NyMtP2HxPrKSybzj31g7bnbEKofQ==}
    dependencies:
      '@turf/helpers': 7.1.0
      '@turf/meta': 7.1.0
      '@types/geojson': 7946.0.14
      polygon-clipping: 0.15.7
      tslib: 2.8.1
    dev: false
  /@turf/unkink-polygon@7.1.0:
    resolution: {integrity: sha512-pqkirni2aLpRA1ELFIuJz+mkjYyJQX8Ar6BflSu1b0ajY/CTrcDxbIv1x8UfvbybLzdJc4Gxzg5mo4cEtSwtaQ==}
    dependencies:
      '@turf/area': 7.1.0
      '@turf/boolean-point-in-polygon': 7.1.0
      '@turf/helpers': 7.1.0
      '@turf/meta': 7.1.0
      '@types/geojson': 7946.0.14
      rbush: 3.0.1
      tslib: 2.8.1
    dev: false
  /@turf/voronoi@7.1.0:
    resolution: {integrity: sha512-xUvzPDG6GaqEekgxd+pjeMKJXOYJ3eFIqUHbTe/ISKzzv3f2cFGiR2VH7ZGXri8d4ozzCQbUQ27ilHPPLf5+xw==}
    dependencies:
      '@turf/clone': 7.1.0
      '@turf/helpers': 7.1.0
      '@turf/invariant': 7.1.0
      '@types/d3-voronoi': 1.1.12
      '@types/geojson': 7946.0.14
      d3-voronoi: 1.1.2
      tslib: 2.8.1
    dev: false
  /@types/d3-voronoi@1.1.12:
    resolution: {integrity: sha512-DauBl25PKZZ0WVJr42a6CNvI6efsdzofl9sajqZr2Gf5Gu733WkDdUGiPkUHXiUvYGzNNlFQde2wdZdfQPG+yw==}
    dev: false
  /@types/estree@1.0.6:
    resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==}
    dev: true
  /@types/geojson@7946.0.14:
    resolution: {integrity: sha512-WCfD5Ht3ZesJUsONdhvm84dmzWOiOzOAqOncN0++w0lBw1o8OuDNJF2McvvCef/yBqb/HYRahp1BYtODFQ8bRg==}
    dev: false
  /@types/lodash-es@4.17.12:
    resolution: {integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==}
@@ -915,7 +2254,15 @@
  /commander@2.20.3:
    resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==}
    dev: true
  /concaveman@1.2.1:
    resolution: {integrity: sha512-PwZYKaM/ckQSa8peP5JpVr7IMJ4Nn/MHIaWUjP4be+KoZ7Botgs8seAZGpmaOM+UZXawcdYRao/px9ycrCihHw==}
    dependencies:
      point-in-polygon: 1.1.0
      rbush: 3.0.1
      robust-predicates: 2.0.4
      tinyqueue: 2.0.3
    dev: false
  /confbox@0.1.8:
    resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==}
@@ -927,6 +2274,20 @@
  /csstype@3.1.3:
    resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
  /d3-array@1.2.4:
    resolution: {integrity: sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw==}
    dev: false
  /d3-geo@1.7.1:
    resolution: {integrity: sha512-O4AempWAr+P5qbk2bC2FuN/sDW4z+dN2wDf9QV3bxQt4M5HfOEeXLgJ/UKQW0+o1Dj8BE+L5kiDbdWUMjsmQpw==}
    dependencies:
      d3-array: 1.2.4
    dev: false
  /d3-voronoi@1.1.2:
    resolution: {integrity: sha512-RhGS1u2vavcO7ay7ZNAPo4xeDh/VYeGof3x5ZLJBQgYhLegxr3s5IykvWmJ94FTU6mcbtp4sloqZ54mP6R4Utw==}
    dev: false
  /dayjs@1.11.13:
    resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==}
@@ -963,6 +2324,10 @@
    engines: {node: '>=0.10'}
    hasBin: true
    dev: true
  /earcut@2.2.4:
    resolution: {integrity: sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==}
    dev: false
  /echarts@5.5.1:
    resolution: {integrity: sha512-Fce8upazaAXUVUVsjgV6mBnGuqgO+JNDlcgF79Dksy4+wgGpQB2lmYoO4TSweFg/mZITdpGHomw/cNBJZj1icA==}
@@ -1076,6 +2441,10 @@
    engines: {node: '>= 0.6'}
    dev: false
  /fast-deep-equal@3.1.3:
    resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
    dev: false
  /fast-glob@3.3.2:
    resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==}
    engines: {node: '>=8.6.0'}
@@ -1141,6 +2510,18 @@
    requiresBuild: true
    dev: true
    optional: true
  /geojson-equality-ts@1.0.2:
    resolution: {integrity: sha512-h3Ryq+0mCSN/7yLs0eDgrZhvc9af23o/QuC4aTiuuzP/MRCtd6mf5rLsLRY44jX0RPUfM8c4GqERQmlUxPGPoQ==}
    dependencies:
      '@types/geojson': 7946.0.14
    dev: false
  /geojson-polygon-self-intersections@1.2.1:
    resolution: {integrity: sha512-/QM1b5u2d172qQVO//9CGRa49jEmclKEsYOQmWP9ooEjj63tBM51m2805xsbxkzlEELQ2REgTf700gUhhlegxA==}
    dependencies:
      rbush: 2.0.2
    dev: false
  /glob-parent@5.1.2:
    resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
@@ -1209,6 +2590,11 @@
      graceful-fs: 4.2.11
    dev: false
  /jsts@2.7.1:
    resolution: {integrity: sha512-x2wSZHEBK20CY+Wy+BPE7MrFQHW6sIsdaGUMEqmGAio+3gFzQaBYPwLRonUfQf9Ak8pBieqj9tUofX1+WtAEIg==}
    engines: {node: '>= 12'}
    dev: false
  /local-pkg@0.5.0:
    resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==}
    engines: {node: '>=14'}
@@ -1241,6 +2627,10 @@
    resolution: {integrity: sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==}
    dependencies:
      '@jridgewell/sourcemap-codec': 1.5.0
  /marchingsquares@1.3.3:
    resolution: {integrity: sha512-gz6nNQoVK7Lkh2pZulrT4qd4347S/toG9RXH2pyzhLgkL5mLkBoqgv4EvAGXcV0ikDW72n/OQb3Xe8bGagQZCg==}
    dev: false
  /memoize-one@6.0.0:
    resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==}
@@ -1391,6 +2781,21 @@
      pathe: 1.1.2
    dev: true
  /point-in-polygon-hao@1.1.0:
    resolution: {integrity: sha512-3hTIM2j/v9Lio+wOyur3kckD4NxruZhpowUbEgmyikW+a2Kppjtu1eN+AhnMQtoHW46zld88JiYWv6fxpsDrTQ==}
    dev: false
  /point-in-polygon@1.1.0:
    resolution: {integrity: sha512-3ojrFwjnnw8Q9242TzgXuTD+eKiutbzyslcq1ydfu82Db2y+Ogbmyrkpv0Hgj31qwT3lbS9+QAAO/pIQM35XRw==}
    dev: false
  /polygon-clipping@0.15.7:
    resolution: {integrity: sha512-nhfdr83ECBg6xtqOAJab1tbksbBAOMUltN60bU+llHVOL0e5Onm1WpAXXWXVB39L8AJFssoIhEVuy/S90MmotA==}
    dependencies:
      robust-predicates: 3.0.2
      splaytree: 3.1.2
    dev: false
  /postcss@8.4.47:
    resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==}
    engines: {node: ^10 || ^12 || >=14}
@@ -1407,9 +2812,29 @@
    resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
    dev: true
  /quickselect@1.1.1:
    resolution: {integrity: sha512-qN0Gqdw4c4KGPsBOQafj6yj/PA6c/L63f6CaZ/DCF/xF4Esu3jVmKLUDYxghFx8Kb/O7y9tI7x2RjTSXwdK1iQ==}
    dev: false
  /quickselect@2.0.0:
    resolution: {integrity: sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==}
    dev: false
  /range-parser@1.2.1:
    resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==}
    engines: {node: '>= 0.6'}
    dev: false
  /rbush@2.0.2:
    resolution: {integrity: sha512-XBOuALcTm+O/H8G90b6pzu6nX6v2zCKiFG4BJho8a+bY6AER6t8uQUZdi5bomQc0AprCWhEGa7ncAbbRap0bRA==}
    dependencies:
      quickselect: 1.1.1
    dev: false
  /rbush@3.0.1:
    resolution: {integrity: sha512-XRaVO0YecOpEuIvbhbpTrZgoiI6xBlz6hnlr6EHhd+0x9ase6EmeN+hdwwUaJvLcsFFQ8iWVF1GAK1yB0BWi0w==}
    dependencies:
      quickselect: 2.0.0
    dev: false
  /readdirp@4.0.2:
@@ -1421,6 +2846,14 @@
    resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
    engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
    dev: true
  /robust-predicates@2.0.4:
    resolution: {integrity: sha512-l4NwboJM74Ilm4VKfbAtFeGq7aEjWL+5kVFcmgFA2MrdnQWx9iE/tUGvxY5HyMI7o/WpSIUFLbC5fbeaHgSCYg==}
    dev: false
  /robust-predicates@3.0.2:
    resolution: {integrity: sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==}
    dev: false
  /rollup@4.24.0:
    resolution: {integrity: sha512-DOmrlGSXNk1DM0ljiQA+i+o0rSLhtii1je5wgk60j49d1jHT5YYttBv1iWOnYSTG+fZZESUOSNiAl89SIet+Cg==}
@@ -1531,6 +2964,10 @@
    resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==}
    dev: false
  /skmeans@0.9.7:
    resolution: {integrity: sha512-hNj1/oZ7ygsfmPZ7ZfN5MUBRoGg1gtpnImuJBgLO0ljQ67DtJuiQaiYdS4lUA6s0KCwnPhGivtC/WRwIZLkHyg==}
    dev: false
  /source-map-js@1.2.1:
    resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
    engines: {node: '>=0.10.0'}
@@ -1547,6 +2984,10 @@
    engines: {node: '>=0.10.0'}
    dev: true
  /splaytree@3.1.2:
    resolution: {integrity: sha512-4OM2BJgC5UzrhVnnJA4BkHKGtjXNzzUfpQjCO8I05xYPsfS/VuQDwjCGGMi8rYQilHEV4j8NBqTFbls/PZEE7A==}
    dev: false
  /statuses@2.0.1:
    resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==}
    engines: {node: '>= 0.8'}
@@ -1558,6 +2999,12 @@
      js-tokens: 9.0.0
    dev: true
  /sweepline-intersections@1.5.0:
    resolution: {integrity: sha512-AoVmx72QHpKtItPu72TzFL+kcYjd67BPLDoR0LarIk+xyaRg+pDTMFXndIEvZf9xEKnJv6JdhgRMnocoG0D3AQ==}
    dependencies:
      tinyqueue: 2.0.3
    dev: false
  /terser@5.31.1:
    resolution: {integrity: sha512-37upzU1+viGvuFtBo9NPufCb9dwM0+l9hMxYyWfBA+fbwrPqNJAhbZ6W47bBFnZHKHTUBnMvi87434qq+qnxOg==}
    engines: {node: '>=10'}
@@ -1568,6 +3015,10 @@
      commander: 2.20.3
      source-map-support: 0.5.21
    dev: true
  /tinyqueue@2.0.3:
    resolution: {integrity: sha512-ppJZNDuKGgxzkHihX8v9v9G5f+18gzaTfrukGrq6ueg0lmH4nqVnA2IPG0AEH3jKEk2GRJCUhDoqpoiw3PHLBA==}
    dev: false
  /to-regex-range@5.0.1:
    resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
@@ -1581,10 +3032,28 @@
    engines: {node: '>=0.6'}
    dev: false
  /topojson-client@3.1.0:
    resolution: {integrity: sha512-605uxS6bcYxGXw9qi62XyrV6Q3xwbndjachmNxu8HWTtVPxZfEJN9fd/SZS1Q54Sn2y0TMyMxFj/cJINqGHrKw==}
    hasBin: true
    dependencies:
      commander: 2.20.3
    dev: false
  /topojson-server@3.0.1:
    resolution: {integrity: sha512-/VS9j/ffKr2XAOjlZ9CgyyeLmgJ9dMwq6Y0YEON8O7p/tGGk+dCWnrE03zEdu7i4L7YsFZLEPZPzCvcB7lEEXw==}
    hasBin: true
    dependencies:
      commander: 2.20.3
    dev: false
  /tslib@2.3.0:
    resolution: {integrity: sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==}
    dev: false
  /tslib@2.8.1:
    resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
    dev: false
  /ufo@1.5.4:
    resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==}
    dev: true
public/al/GIS-TL_泵站.png
public/al/GIS-TL_泵站1.png
public/al/btn-排水管网.png
public/al/企业公司.png
public/al/原液阀门运行.png
public/al/急.png
public/al/水库icon.png
public/al/水库水情.png
public/al/消防_1.png
public/img/mapicon/fxy.png
public/img/mapicon/qy.png
src/hooks/initMap.js
@@ -12,6 +12,7 @@
const { VITE_APP_BASE } = import.meta.env
import { useMap } from 'store/map'
import { nextTick, onMounted, onUnmounted } from 'vue'
import * as turf from '@turf/turf'
export function readyViewer () {
  const Cesium = DC.getLib('Cesium')
@@ -22,7 +23,8 @@
    nextTick(() => {
      DC.ready({
        baseUrl: `${VITE_APP_BASE}libs/dc-sdk/resources/`
        baseUrl: `${VITE_APP_BASE}libs/dc-sdk/resources/`,
        turf,
      }).then(() => {
        viewer = new DC.Viewer('viewer-container')
src/router/index.js
@@ -41,7 +41,7 @@
      {
        path: 'rs',
        meta: {
          title: '固定风险源'
          title: '风险源'
        },
        component: () => import('@/views/rs/index.vue')
      },
@@ -74,6 +74,13 @@
        component: () => import('@/views/rt/index.vue')
      },
      {
        path: 'pd',
        meta: {
          title: '污染物处理'
        },
        component: () => import('@/views/pd/index.vue')
      },
      {
        path: 'sub',
        name: 'sub',
        component: defineAsyncComponent(() => import('@/views/sub/index.vue')),
src/styles/base/dc-base.scss
@@ -4,38 +4,61 @@
.public-map-popup {
  position: absolute;
  bottom: 60px;
  bottom: 80px;
  pointer-events: all;
  display: block;
  transform-origin: left bottom;
  transform: translate(-50%, 0px);
  border-radius: 5px;
  z-index: auto;
  &::after {
    content: "";
    position: absolute;
    bottom: -80px;
    left: calc(50% - 3px);
    display: block;
    width: 3px;
    height: 80px;
    border-right: 3px solid #fff;
  }
  .marsBlueGradientPnl {
    padding: 4px 8px;
    text-align: center;
    padding: 5px 30px;
    margin: 0;
    color: #fff;
    background: linear-gradient(rgb(7 10 203 / 75%), rgb(16 238 220));
    -webkit-border-radius: 5px;
    -moz-border-radius: 5px;
    border-radius: 5px;
    max-height: 130px;
    line-height: 32px;
    width: 112px;
    -webkit-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none;
    white-space: nowrap;
    word-wrap: break-word;
    font-size: 14px;
    background: linear-gradient(rgb(7 10 203 / 75%), rgb(16 238 220));
  }
    &::after {
      content: "";
      position: absolute;
      bottom: -60px;
      left: calc(50% - 3px);
      display: block;
      width: 3px;
      height: 60px;
      border-right: 3px solid #2bcdbb;
  .map-name {
    width: 112px;
    line-height: 24px;
    text-align: center;
    color: #FFEB3B;
    word-wrap: break-word;
    font-size: 14px;
    font-weight: bold;
  }
  .map-icon {
    display: flex;
    justify-content: center;
    img {
      width: 40px;
      height: 40px;
    }
  }
}
src/styles/base/index.scss
@@ -24,6 +24,7 @@
#app {
  width: 100%;
  height: 100%;
  overflow: hidden;
}
::-webkit-scrollbar {
src/utils/turfPolygon.js
New file
@@ -0,0 +1,194 @@
/*
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2023-03-31 10:52:25
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2024-11-09 15:26:11
 * @FilePath: \bigScreen\src\utils\turfPolygon.js
 * @Description:
 *
 * Copyright (c) 2023 by ${git_name_email}, All Rights Reserved.
 */
import * as turf from "@turf/turf"
function getAllRegionCenter (data) {
  let arr = []
  data.forEach((item) => {
    if (item.position && item.position.length > 0) {
      arr.push(getRegionCenter(item.position))
    }
  })
  arr.push(arr[0])
  if (arr.length == 1) {
    return arr[0]
  } else if (arr.length == 2) {
    return turf.centroid(turf.midpoint(turf.point(arr[0]), turf.point(arr[1])))
      .geometry.coordinates
  } else {
    arr.push(arr[0])
    return turf.centroid(turf.polygon([arr])).geometry.coordinates
  }
}
function getRegionCenter (params) {
  let arr = []
  params.forEach((areaArray) => {
    let data = JSON.parse(areaArray)
    if (data.type == "Polygon") {
      data.coordinates.forEach((item) => {
        arr.push(turf.centroid(turf.polygon([item])).geometry.coordinates)
      })
    } else {
      data.coordinates.forEach((item) => {
        arr.push(turf.centroid(turf.polygon([item[0]])).geometry.coordinates)
      })
    }
  })
  if (arr.length == 1) {
    return arr[0]
  } else if (arr.length == 2) {
    return turf.centroid(turf.midpoint(turf.point(arr[0]), turf.point(arr[1])))
      .geometry.coordinates
  } else {
    arr.push(arr[0])
    return turf.centroid(turf.polygon([arr])).geometry.coordinates
  }
}
export const getCurRegionCenter = (params) => {
  let arr = []
  params.forEach((areaArray) => {
    let data = JSON.parse(areaArray)
    if (data.type == "Polygon") {
      data.coordinates.forEach((item) => {
        arr.push(turf.centroid(turf.polygon([item])).geometry.coordinates)
      })
    } else {
      data.coordinates.forEach((item) => {
        arr.push(turf.centroid(turf.polygon([item[0]])).geometry.coordinates)
      })
    }
  })
  if (arr.length == 1) {
    return arr[0]
  } else if (arr.length == 2) {
    return turf.centroid(turf.midpoint(turf.point(arr[0]), turf.point(arr[1])))
      .geometry.coordinates
  } else {
    arr.push(arr[0])
    return turf.centroid(turf.polygon([arr])).geometry.coordinates
  }
}
export const computerCapacity = (data, type = "", multiple = 4) => {
  if (type != "") {
    const center = getAllRegionCenter(data)
    if (type == "all") {
      window.$viewer.flyToPosition(
        new global.DC.Position(
          Number(center[0] + 0.03),
          Number(center[1] - 0.3),
          Number(36000),
          Number(-3),
          Number(-45),
          Number(0)
        ),
        function () { },
        3
      )
    } else {
      window.$viewer.flyToPosition(
        new global.DC.Position(
          Number(center[0] + 0.0046),
          Number(center[1] - 0.04),
          Number(4000),
          Number(-3),
          Number(-45),
          Number(0)
        ),
        function () { },
        3
      )
    }
  } else {
    let pointArr = []
    data.forEach((item) => {
      if (item.longitude && item.latitude) {
        pointArr.push(turf.point([item.longitude, item.latitude]))
        return
      }
      if (item.lng && item.lat) {
        pointArr.push(turf.point([item.lng, item.lat]))
        return
      }
    })
    const features = turf.featureCollection(pointArr)
    const scope = turf.envelope(features).bbox
    // const poly = turf.polygon([[[0, 29], [3.5, 29], [2.5, 32], [0, 29]]])
    var poly = turf.polygon([
      [
        [scope[0], scope[1]],
        [scope[2], scope[1]],
        [scope[2], scope[3]],
        [scope[0], scope[3]],
        [scope[0], scope[1]],
      ],
    ])
    var scaledPoly = turf.transformScale(poly, multiple)
    let boxPoint = []
    scaledPoly.geometry.coordinates[0].forEach((item) => {
      boxPoint.push(turf.point(item))
    })
    const boxFeatures = turf.featureCollection(boxPoint)
    const boxScope = turf.envelope(boxFeatures).bbox
    window.$viewer.flyToBounds(
      boxScope,
      { heading: 0, pitch: -90, roll: 0 },
      (e) => { },
      3
    )
  }
}
export const getMapBounds = (data, type = "") => {
  let pointArr = []
  data.forEach((item) => {
    pointArr.push(turf.point([item.x, item.y]))
    return
  })
  const features = turf.featureCollection(pointArr)
  const scope = turf.envelope(features).bbox
  // const poly = turf.polygon([[[0, 29], [3.5, 29], [2.5, 32], [0, 29]]])
  return scope
}
export const getLineSpeed = (data, multiple) => {
  var line = turf.lineString(data)
  var length = turf.length(line, { units: "miles" })
  return (length * 1000) / multiple
}
src/views/companyInfo/index.vue
@@ -2,19 +2,22 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2024-11-08 11:00:30
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2024-11-08 12:10:21
 * @LastEditTime: 2024-11-09 15:31:53
 * @FilePath: \bigScreen\src\views\companyInfo\index.vue
 * @Description: 
 * 
 * Copyright (c) 2024 by shuishen, All Rights Reserved. 
-->
<script setup>
import { computerCapacity } from "utils/turfPolygon.js"
import qyfw from "@/assets/json/qyfw"
import rightContainer from './components/rightContainer.vue'
import centerContainer from './components/centerContainer.vue' // 修改这里
import mainMenuVue from './components/mainMenu.vue'
import { onUnmounted } from "vue"
const Cesium = DC.getLib('Cesium')
const turf = DC.getLib('turf')
console.log(Cesium, turf, 1111)
let buttonIndex = ref(1)
let data = reactive({
  companyInfo: {}
@@ -26,30 +29,20 @@
data.companyInfo = JSON.parse(localStorage.getItem('companyInfo'))
let curCompany = qyfw.features.find(item => item.properties.name == data.companyInfo.name)
console.log(curCompany.geometry.coordinates[0].map(d => [...d, 150].join(',')).join(';'), 111)
let wall = new DC.Wall(
  curCompany.geometry.coordinates[0].map(d => [...d, 150].join(',')).join(';')
  curCompany.geometry.coordinates[0].map(d => [...d, 125].join(',')).join(';')
)
wall.setStyle({
  material: new DC.WallTrailMaterialProperty({
    color: DC.Color.YELLOW,
    speed: 2
    color: Cesium.Color.fromBytes(255, 255, 0, 180),
    speed: 10
  })
})
curCompanyWall.addOverlay(wall)
onMounted(() => {
  window.$viewer.zoomToPosition(new DC.Position(
    Number(data.companyInfo.lng),
    Number(data.companyInfo.lat),
    800,
    0,
    -80,
    0
  ), () => {
  })
  window.$viewer.flyTo(curCompanyWall)
})
onUnmounted(() => {
src/views/layout/components/mainMenu.vue
@@ -24,7 +24,7 @@
      path: '/layout/survey'
    },
    {
      menuName: '固定风险源',
      menuName: '风险源',
      path: '/layout/rs'
    },
    {
@@ -42,6 +42,10 @@
    {
      menuName: '救援队伍',
      path: '/layout/rt'
    },
    {
      menuName: '污染物处理',
      path: '/layout/pd'
    },
  ]
)
@@ -90,7 +94,7 @@
  &>div {
    background-image: url(/images/mode-tab.png);
    background-size: cover;
    width: 150px;
    width: 136px;
    height: 50px;
    font-size: 16px;
    text-align: center;
src/views/layout/components/scomponents/layersControl.vue
@@ -2,7 +2,7 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2024-10-31 10:47:29
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2024-11-07 17:17:21
 * @LastEditTime: 2024-11-09 15:08:15
 * @FilePath: \bigScreen\src\views\layout\components\scomponents\layersControl.vue
 * @Description:
 *
@@ -59,7 +59,7 @@
const { VITE_APP_BASE } = import.meta.env
const treeRef = ref(null)
const Cesium = DC.getLib('Cesium')
const treeProps = {
  indent: 16,
  showLabelLine: true,
@@ -68,7 +68,7 @@
const data = [
  {
    id: '1',
    label: '化工园区',
    label: '园区倾斜摄影',
    type: 'layer',
    subType: '3Dtile',
    url: VITE_APP_BASE + 'mx/tileset.json',
@@ -84,6 +84,8 @@
    params: {
      size: 1000
    },
    backgroundIcon: VITE_APP_BASE + 'img/mapicon/qy.png',
    showPanel: false,
    layerName: 'qyfb'
  },
@@ -193,6 +195,8 @@
      size: 1000
    },
    showParams: 'category',
    backgroundIcon: VITE_APP_BASE + 'img/mapicon/fxy.png',
    showPanel: false,
    layerName: 'fxy'
  },
@@ -308,16 +312,7 @@
      if (item.subType == '3Dtile') {
        if (!addTileLayers[item.layerName]) {
          addTileLayers[item.layerName] = new DC.Tileset(
            item.url,
            {
              maximumMemoryUsage: 128,
              progressiveResolutionHeightFraction: 0.5,
              dynamicScreenSpaceErrorDensity: 0.1,
              cullWithChildrenBounds: false,
              maximumScreenSpaceError: 256,
              skipLevelOfDetail: true,
              preferLeaves: true
            })
            item.url)
          tileLayers.addOverlay(addTileLayers[item.layerName])
        } else {
@@ -334,13 +329,28 @@
            let data = res.data.data.records
            data.filter(i => i.lng && i.lng != '' && i.lat && i.lat != '').forEach(i => {
              let iconEl = ''
              if ('showPanel' in item && item.showPanel == false) {
                if (item.backgroundIcon) {
                  iconEl = `
                  <div class="map-name">${i[item.showParams] || i.name}</div>
                  <div class="map-icon">
                    <img src="${item.backgroundIcon}">
                  </div>
                  `
                }
              } else {
                iconEl = `<div class="marsBlueGradientPnl">
                  <div>${i[item.showParams] || i.name}</div>
                </div>`
              }
              let divIcon = new DC.DivIcon(
                new DC.Position(i.lng, i.lat, 0),
                `<div class="public-map-popup">
                <div class="marsBlueGradientPnl">
                  <div>${i[item.showParams] || i.name}</div>
                </div>
              </div>`
                    ${iconEl}
                  </div>`
              )
              addTileLayers[item.layerName].addOverlay(divIcon)
@@ -356,13 +366,13 @@
          item.source.features.forEach(i => {
            let wall = new DC.Wall(
              i.geometry.coordinates[0].map(d => [...d, 200].join(',')).join(';')
              i.geometry.coordinates[0].map(d => [...d, 125].join(',')).join(';')
            )
            wall.setStyle({
              material: new DC.WallTrailMaterialProperty({
                color: DC.Color.GREEN,
                speed: 2
                color: Cesium.Color.fromBytes(0, 123, 255, 180),
                speed: 10
              })
            })
            addTileLayers[item.layerName].addOverlay(wall)
@@ -375,7 +385,7 @@
          addTileLayers[item.layerName] = new DC.VectorLayer(item.layerName)
          window.$viewer.addLayer(addTileLayers[item.layerName])
          function computeCircle(radius) {
          function computeCircle (radius) {
            var positions = []
            for (var i = 0; i < 1080; i++) {
              var radians = DC.Math.toRadians(i)
src/views/pd/components/box/dataContent.vue
New file
@@ -0,0 +1,158 @@
<!--
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2023-03-13 14:54:26
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2023-03-13 15:00:55
 * @FilePath: \forest-fire\src\views\statistics\components\box\dataContent.vue
 * @Description:
 *
 * Copyright (c) 2023 by ${git_name_email}, All Rights Reserved.
-->
<script setup>
import publicContent from "./publicContent.vue";
import { getList } from "@/api/rescueTeam/rescueTeam";
import { reactive } from "vue";
const loading = ref(false);
const tableData = ref([]);
const pages = {
  page: 1,
  pageSize: 13,
  total: 0,
};
onMounted(() => {
  getLists();
});
// 表格样式
const tableCellStyle = ({ row, column }) => {
  return { background: "#152851", color: "#fff" };
};
// 表格表头样式
const headerCellStyle = ({ }) => {
  return {
    background: "#152851",
    color: "#fff",
  };
};
// 搜索条件
const formInline = reactive({
  perInCha: "",
  type: ''
});
// 提交查询
const onSubmit = () => {
  pages.page = 1
  pages.pageSize = 13
  pages.total = 0
  console.log("submit!");
  getLists(formInline);
};
// 分页树改变
const handleSizeChange = (val) => {
  pages.pageSize = val;
  getLists(formInline);
}
// 分页改变
const handleCurrentChange = (val) => {
  pages.page = val;
  getLists(formInline);
}
// 重置条件
const clearBtn = () => {
  formInline.perInCha = ''
  formInline.type = ''
  pages.page = 1
  pages.pageSize = 13
  pages.total = 0
  getLists(formInline);
}
// 查询分页数据
function getLists(param = {}) {
  param.current = pages.page;
  param.size = pages.pageSize;
  loading.value = true;
  getList(param)
    .then((res) => {
      const data = res.data.data;
      data.records.forEach((element) => {
        if (element.type == 1) {
          element.ownership = "园区";
        } else {
          element.ownership = "企业";
        }
      });
      tableData.value = data.records;
      pages.total = data.total;
      loading.value = false;
    })
    .catch((err) => {
      loading.value = false;
      console.log(err);
    });
}
</script>
<template>
  <public-content>
    <template #content>
      <div>
        <el-form :inline="true" :model="formInline" class="demo-form-inline">
          <el-form-item label="姓名">
            <el-input v-model="formInline.perInCha" placeholder="请输入姓名" clearable style="width: 120px" />
          </el-form-item>
          <el-form-item label="归属">
            <el-select v-model="formInline.type" placeholder="请选择" clearable style="width: 120px">
              <el-option label="园区" value="1" />
              <el-option label="企业" value="2" />
            </el-select>
          </el-form-item>
          <el-form-item>
            <el-button type="primary" @click="onSubmit">查询</el-button>
            <el-button type="" @click="clearBtn">重置</el-button>
          </el-form-item>
        </el-form>
        <el-table :data="tableData" style="width: 100%" :header-cell-style="headerCellStyle" :cell-style="tableCellStyle"
          v-loading="loading">
          <el-table-column fixed prop="perInCha" label="责任人姓名" />
          <el-table-column prop="perInChaPho" label="联系电话" />
          <!-- <el-table-column prop="firmName" label="单位名称" /> -->
          <el-table-column prop="ownership" label="归属" width="100" />
        </el-table>
        <div class="el-page">
          <el-pagination background layout="prev, pager, next" :page-size="pages.pageSize" :total="pages.total"
            @size-change="handleSizeChange" @current-change="handleCurrentChange" />
        </div>
      </div>
    </template>
  </public-content>
</template>
<style lang="scss" scoped>
::v-deep .el-table__body-wrapper {
  background-color: #152851;
}
.el-form-item__label {
  color: #fff !important;
}
/* 当表格没有数据时,修改表格的背景颜色 */
.el-table--empty .el-table__body {
  background-color: rgba(135, 158, 199, 0.3) !important;
  /* 你想要的背景颜色 */
}
.el-page {
  margin-top: 10px;
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  // margin-bottom:10px;
}
</style>
src/views/pd/components/box/fireContent.vue
New file
@@ -0,0 +1,25 @@
<!--
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2023-03-13 14:54:26
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2023-03-13 15:00:55
 * @FilePath: \forest-fire\src\views\statistics\components\box\dataContent.vue
 * @Description:
 *
 * Copyright (c) 2023 by ${git_name_email}, All Rights Reserved.
-->
<script setup>
import publicContent from './publicContent.vue'
</script>
<template>
    <public-content>
        <template #content>
            <div>
            </div>
        </template>
    </public-content>
</template>
<style lang="scss" scoped></style>
src/views/pd/components/box/fireSource.vue
New file
@@ -0,0 +1,25 @@
<!--
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2023-03-13 14:54:26
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2023-03-13 15:00:55
 * @FilePath: \forest-fire\src\views\statistics\components\box\dataContent.vue
 * @Description:
 *
 * Copyright (c) 2023 by ${git_name_email}, All Rights Reserved.
-->
<script setup>
import publicContent from './publicContent.vue'
</script>
<template>
    <public-content>
        <template #content>
            <div>
            </div>
        </template>
    </public-content>
</template>
<style lang="scss" scoped></style>
src/views/pd/components/box/fireTrend.vue
New file
@@ -0,0 +1,25 @@
<!--
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2023-03-13 14:54:26
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2023-03-13 15:00:55
 * @FilePath: \forest-fire\src\views\statistics\components\box\dataContent.vue
 * @Description:
 *
 * Copyright (c) 2023 by ${git_name_email}, All Rights Reserved.
-->
<script setup>
import publicContent from './publicContent.vue'
</script>
<template>
    <public-content>
        <template #content>
            <div>
            </div>
        </template>
    </public-content>
</template>
<style lang="scss" scoped></style>
src/views/pd/components/box/occurStatistics.vue
New file
@@ -0,0 +1,25 @@
<!--
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2023-03-13 14:54:26
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2023-03-13 15:00:55
 * @FilePath: \forest-fire\src\views\statistics\components\box\dataContent.vue
 * @Description:
 *
 * Copyright (c) 2023 by ${git_name_email}, All Rights Reserved.
-->
<script setup>
import publicContent from './publicContent.vue'
</script>
<template>
    <public-content>
        <template #content>
            <div>
            </div>
        </template>
    </public-content>
</template>
<style lang="scss" scoped></style>
src/views/pd/components/box/publicContent.vue
New file
@@ -0,0 +1,26 @@
<!--
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2023-03-13 14:54:26
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2024-10-25 18:33:46
 * @FilePath: \bigScreen\src\views\statistics\components\box\publicContent.vue
 * @Description:
 *
 * Copyright (c) 2023 by ${git_name_email}, All Rights Reserved.
-->
<script setup>
</script>
<template>
  <div class="content">
    <slot name="content"></slot>
  </div>
</template>
<style lang="scss" scoped>
.content {
  padding: 20px 0;
  height: calc(100% - 32px);
}
</style>
src/views/pd/components/box/unitContent.vue
New file
@@ -0,0 +1,25 @@
<!--
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2023-03-13 14:54:26
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2023-03-13 15:00:55
 * @FilePath: \forest-fire\src\views\statistics\components\box\dataContent.vue
 * @Description:
 *
 * Copyright (c) 2023 by ${git_name_email}, All Rights Reserved.
-->
<script setup>
import publicContent from './publicContent.vue'
</script>
<template>
    <public-content>
        <template #content>
            <div>
            </div>
        </template>
    </public-content>
</template>
<style lang="scss" scoped></style>
src/views/pd/components/leftContainer.vue
New file
@@ -0,0 +1,47 @@
<!--
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2023-03-10 15:27:59
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2024-11-08 11:39:11
 * @FilePath: \bigScreen\src\views\rt\components\leftContainer.vue
 * @Description:
 *
 * Copyright (c) 2023 by ${git_name_email}, All Rights Reserved.
-->
<script setup>
import dataContent from './box/dataContent.vue'
import unitContent from './box/unitContent.vue'
import fireContent from './box/fireContent.vue'
</script>
<template>
  <div class="left-container">
    <div class="data box">
      <data-content></data-content>
    </div>
    <!-- <div class="unit box">
      <title-box>
        <template #titleName>
          入住单位统计
        </template>
</title-box>
<unit-content></unit-content>
</div>
<div class="fire box">
  <title-box>
    <template #titleName>
          实时火警事件
        </template>
  </title-box>
  <fire-content></fire-content>
</div> -->
  </div>
</template>
<style lang="scss" scoped>
.left-container {
  width: 100%;
}
</style>
src/views/pd/components/rightContainer.vue
New file
@@ -0,0 +1,86 @@
<!--
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2023-03-10 15:27:59
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2024-10-26 14:49:05
 * @FilePath: \bigScreen\src\views\survey\components\rightContainer.vue
 * @Description:
 *
 * Copyright (c) 2023 by ${git_name_email}, All Rights Reserved.
-->
<script setup>
import fireSource from './box/fireSource.vue'
import fireTrend from './box/fireTrend.vue'
import occurStatistics from './box/occurStatistics.vue'
import publicContent from './box/publicContent.vue'
</script>
<template>
  <div class="right-container">
    <div class="fire-source box">
      <title-box>
        <template #titleName>
          火警事件来源
        </template>
      </title-box>
      <fire-source></fire-source>
    </div>
    <div class="occur-statistics box">
      <title-box>
        <template #titleName>
          易发区统计
        </template>
      </title-box>
      <fire-trend></fire-trend>
    </div>
    <div class="fire-trend box">
      <title-box>
        <template #titleName>
          火警上报趋势
        </template>
      </title-box>
      <occur-statistics></occur-statistics>
    </div>
  </div>
</template>
<style lang="scss" scoped>
.right-container {
  display: flex;
  flex-direction: column;
  padding: 20px;
  position: absolute;
  top: 0;
  right: 0;
  width: 440px;
  height: 100%;
  pointer-events: auto;
  .box {
    margin-top: 20px;
    .header {
      height: 32px;
      background: url(/img/bg/sub-title.png) no-repeat;
    }
  }
  .fire-source {
    flex: 3;
  }
  .occur-statistics {
    flex: 3;
  }
  .fire-trend {
    flex: 4;
  }
  .box:first-child {
    margin-top: 0;
  }
}
</style>
src/views/pd/index.vue
New file
@@ -0,0 +1,30 @@
<!--
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2023-03-10 15:27:59
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2023-03-13 16:02:07
 * @FilePath: \forest-fire\src\views\statistics\index.vue
 * @Description: 综合设计
 *
 * Copyright (c) 2023 by ${git_name_email}, All Rights Reserved.
-->
<script setup>
import leftContainer from './components/leftContainer.vue'
import rightContainer from './components/rightContainer.vue'
</script>
<template>
    <div class="container page-container">
        <left-container></left-container>
        <!-- <right-container></right-container> -->
    </div>
</template>
<style lang="scss" scoped>
.container {
    position: absolute;
    width: 100%;
    height: 100%;
}
</style>
src/views/space/components/leftContainer.vue
@@ -2,7 +2,7 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2023-03-10 15:27:59
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2024-11-08 15:49:02
 * @LastEditTime: 2024-11-09 15:46:30
 * @FilePath: \bigScreen\src\views\space\components\leftContainer.vue
 * @Description: 
 * 
@@ -15,17 +15,7 @@
</script>
<template>
  <div class="left-container">
    <div class="data box h0 flex-1">
      <title-box>
        <template #titleName>
          应急空间信息
        </template>
      </title-box>
      <div class="content-box">
        <data-content></data-content>
      </div>
    </div>
  <div class="left-container cur-container">
    <!-- <div class="unit box">
      <title-box>
@@ -47,4 +37,9 @@
  </div>
</template>
<style lang="scss" scoped></style>
<style lang="scss" scoped>
.cur-container {
  background: transparent;
  pointer-events: none;
}
</style>
src/views/space/components/rightContainer.vue
@@ -2,85 +2,49 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2023-03-10 15:27:59
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2024-10-26 14:49:05
 * @FilePath: \bigScreen\src\views\survey\components\rightContainer.vue
 * @LastEditTime: 2024-11-08 15:49:02
 * @FilePath: \bigScreen\src\views\space\components\leftContainer.vue
 * @Description: 
 * 
 * Copyright (c) 2023 by ${git_name_email}, All Rights Reserved. 
-->
<script setup>
import fireSource from './box/fireSource.vue'
import fireTrend from './box/fireTrend.vue'
import occurStatistics from './box/occurStatistics.vue'
import publicContent from './box/publicContent.vue'
import dataContent from './box/dataContent.vue'
import unitContent from './box/unitContent.vue'
import fireContent from './box/fireContent.vue'
</script>
<template>
  <div class="right-container">
    <div class="fire-source box">
    <div class="data box h0 flex-1">
      <title-box>
        <template #titleName>
          火警事件来源
          应急空间信息
        </template>
      </title-box>
      <fire-source></fire-source>
      <div class="content-box">
        <data-content></data-content>
      </div>
    </div>
    <div class="occur-statistics box">
    <!-- <div class="unit box">
      <title-box>
        <template #titleName>
          易发区统计
          入住单位统计
        </template>
      </title-box>
      <fire-trend></fire-trend>
      <unit-content></unit-content>
    </div>
    <div class="fire-trend box">
    <div class="fire box">
      <title-box>
        <template #titleName>
          火警上报趋势
          实时火警事件
        </template>
      </title-box>
      <occur-statistics></occur-statistics>
    </div>
      <fire-content></fire-content>
    </div> -->
  </div>
</template>
<style lang="scss" scoped>
.right-container {
  display: flex;
  flex-direction: column;
  padding: 20px;
  position: absolute;
  top: 0;
  right: 0;
  width: 440px;
  height: 100%;
  pointer-events: auto;
  .box {
    margin-top: 20px;
    .header {
      height: 32px;
      background: url(/img/bg/sub-title.png) no-repeat;
    }
  }
  .fire-source {
    flex: 3;
  }
  .occur-statistics {
    flex: 3;
  }
  .fire-trend {
    flex: 4;
  }
  .box:first-child {
    margin-top: 0;
  }
}
</style>
<style lang="scss" scoped></style>
src/views/space/index.vue
@@ -2,8 +2,8 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2023-03-10 15:27:59
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2023-03-13 16:02:07
 * @FilePath: \forest-fire\src\views\statistics\index.vue
 * @LastEditTime: 2024-11-09 15:43:51
 * @FilePath: \bigScreen\src\views\space\index.vue
 * @Description: 综合设计
 * 
 * Copyright (c) 2023 by ${git_name_email}, All Rights Reserved. 
@@ -16,7 +16,7 @@
<template>
    <div class="container page-container">
        <left-container></left-container>
        <!-- <right-container></right-container> -->
        <right-container></right-container>
    </div>
</template>