Beispiel #1
0
        // 处理波束数据
        public void DealBeamData(Model.BeamData beamData)
        {
            if (beamData.PointType == 1)   //  波束
            {
                // 先获取卫星,如果没有,则不创建波束
                string  satelliteId = string.Format("卫星{0}", beamData.SatelliteId);
                Model3D model       = modelMgr.FindModel(satelliteId);
                if (model == null)
                {
                    return;
                }

                EventPublisher.PublishMapDealBeamDataEvent(this, beamData);

                Beam beam = CreateBeam(beamData, model);
                beam.SatellitePoint = model.Coordinate;

                if (beamMgr.HasBeam(satelliteId, beam))   // 波束存在,移动波束
                {
                    UpdateBeamElement(beam, model);
                    beamMgr.UpdataBeamCenterPoint(satelliteId, beam);
                }
                else                         // 波束不存在,创建波束
                {
                    if (AddBeamElement(beam, model))
                    {
                        beamMgr.AddBeam(satelliteId, beam);
                    }
                }
            }
            else   // 卫星
            {
                string  modelName = string.Format("卫星{0}", beamData.SatelliteId);
                Model3D model     = CreateSatelliteModel(modelName, beamData.Point);

                if (modelMgr.HasModel(model))                                 // 卫星存在,则更新卫星信息,并移动波束的位置
                {
                    modelMgr.UpdataModel(model);                              // 刷新卫星信息
                    UpdateModelPosition(model);                               // 更新卫星位置

                    beamMgr.UpdataBeamCenterPoint(modelName, beamData.Point); // 刷新波束信息

                    // 移动波束的位置
                    List <Beam> beamList = beamMgr.FindBeams(modelName, o => o.SatelliteID == beamData.SatelliteId);
                    if (beamList == null)
                    {
                        return;
                    }
                    foreach (Beam b in beamList)
                    {
                        UpdateBeamElement(b, model);
                    }
                }
                else     // 卫星不存在,则创建卫星
                {
                    if (AddModel2Earth(model))
                    {
                        modelMgr.AddModel(model);
                    }
                }
            }
        }