zoukankan      html  css  js  c++  java
  • 初遇Citymaker (六)

    这次我们来说下要素构建

    • 要素构建

    ```javasctipt
    import { cw5 } from "../index.js";

    export const geometryCreator = {};

    //原生类型值反映射枚举; type, 代表高程

    let innerType = {
    0: "unknown",
    1: "point",
    2: "modelPoint",
    4: "POI",
    6: "circularArc",
    10: "line",
    11: "circle",
    30: "polyline",
    31: "ring",
    32: "compoundLine",
    50: "polygon",
    51: "triMesh",
    70: "collection",
    71: "multiPoint",
    72: "multiPolyline",
    73: "multiPolygon",
    74: "multiTrimesh",
    77: "closedTriMesh",
    100: "pointCloud"
    };

    /**

    • 创建点要素

    • xyz 坐标

    • m 测量值

    • id ID

    • */
      geometryCreator.createPoint = function(x, y, z, m = 0, id = 0) {
      var point = cw5.__g.geometryFactory.createPoint(cw5.innerConfig.gviVertexAttribute.gviVertexAttributeZ);

       

      if (x != null && y != null && z != null) {
      point.setCoords(x, y, z, m, id);
      }

       

      if (point != null) {
      let geometry =geometryCreator.createGeometry(point)
      return geometry;
      }
      }

    /**

    • 创建线要素

    • paths Number[][]

    • */
      geometryCreator.createPolyline = function(paths) {
      let latitude = null;
      let longitude = null;
      let height = null;
      let position = cw5.__g.new_Vector3;
      let pathpoint = cw5.__g.geometryFactory.createPoint(cw5.innerConfig.gviVertexAttribute.gviVertexAttributeZ);
      let line = cw5.__g.geometryFactory.createGeometry(cw5.innerConfig.gviGeometryType.gviGeometryPolyline, cw5.innerConfig.gviVertexAttribute.gviVertexAttributeZ);
      //向线路中添加点
      if (paths != null) {
      for (let i = 0; i < paths.length; i++) {
      latitude = paths[i][0];
      longitude = paths[i][1];
      height = paths[i][2];

       

      position.set(latitude, longitude, height);
      pathpoint.position = position;
      line.appendPoint(pathpoint);
      }
      }
      if (line != null) {
      let geometry =geometryCreator.createGeometry(line)
      return geometry;
      }
      };

    /**

    • 创建POI要素

    • xyz 坐标

    • m 测量值

    • id ID

    • */
      geometryCreator.createPOI = function(x, y, z, m = 0, id = 0) {

       

      var point = cw5.__g.geometryFactory.createGeometry(cw5.innerConfig.gviGeometryType.gviGeometryPOI, cw5.innerConfig.gviVertexAttribute.gviVertexAttributeZ);//初始化矢量点对象
      point.setCoords(x, y, z, m, id);

       

      if (point != null) {
      let geometry =geometryCreator.createGeometry(point)
      return geometry;
      }
      };

    /**

    • 创建多边形要素

    • paths Number[][]

    • */
      geometryCreator.createPolygon = function(paths) {
      let polygon = cw5.__g.geometryFactory.createGeometry(cw5.innerConfig.gviGeometryType.gviGeometryPolygon, cw5.innerConfig.gviVertexAttribute.gviVertexAttributeZM);
      if (polygon == null) {
      return;
      }

       

      if (paths != null) {
      var exteriorRing = polygon.exteriorRing;

       

      let latitude = null;
      let longitude = null;
      let height = null;
      let position = cw5.__g.new_Vector3;
      let pathpoint = cw5.__g.geometryFactory.createPoint(cw5.innerConfig.gviVertexAttribute.gviVertexAttributeZ);

       

      //向边界中添加点
      for (let i = 0; i < paths.length; i++) {
      latitude = paths[i][0];
      longitude = paths[i][1];
      height = paths[i][2];
      position.set(latitude, longitude, height);
      pathpoint.position = position;
      exteriorRing.appendPoint(pathpoint);
      }
      // exteriorRing.reverseOrientation()
      }

       

      let geometry =geometryCreator.createGeometry(polygon)
      return geometry;
      };

    /**

    • 创建点模型
    • modelName 模型路径
    • xyz 坐标
    • m 测量值
    • id ID
    • */
      geometryCreator.createModelPoint = function(modelName,x, y, z, m = 0, id = 0) {
      var modelPoint= cw5.__g.geometryFactory.createGeometry(cw5.innerConfig.gviGeometryType.gviGeometryModelPoint, cw5.innerConfig.gviVertexAttribute.gviVertexAttributeZ);//初始化矢量点对象
      modelPoint.modelName = modelName;
      modelPoint.setCoords(x, y, z, m, id);
      if (modelPoint != null) {
      let geometry =geometryCreator.createGeometry(modelPoint)
      return geometry;
      }
      };

    /**

    • 创建geometry 从原生对象

    • object citymaker原生geometry

    • */
      geometryCreator.createGeometry = function(object) {
      let type =innerType[object.geometryType] ;

       

      let geometry={

  • 相关阅读:
    “过程决定质量”论之证明
    益老而弥坚:软件开发哲学反思录
    TMS TDBPlanner的使用介绍
    混沌现象检测基础
    混沌现象简介
    如何学习软件工程
    阅读随想(2):《你的灯亮着吗?——发现问题的真正所在》
    阅读随想(1):《你的灯亮着吗?——发现问题的真正所在》
    my learning
    IBM Websphere Integration Developer 6.1
  • 原文地址:https://www.cnblogs.com/haibalai/p/15829599.html
Copyright © 2011-2022 走看看