Ejemplo n.º 1
0
        public string GenerateGeoJsonStringFromEntity(InspektionsRouteGIS inspektionsroute)
        {
            if (inspektionsroute == null)
            {
                return("{ \"type\": \"FeatureCollection\", \"features\": []}");
            }

            FeatureWithID    feature    = new FeatureWithID();
            IAttributesTable attributes = new AttributesTable();

            IList <FeatureWithID> strassenabschnitte = new List <FeatureWithID>();


            feature.Id       = inspektionsroute.Id.ToString();
            feature.Geometry = inspektionsroute.Shape;
            attributes.AddAttribute(geoJSONAttribute_InspektionsrouteID, inspektionsroute.Id);
            attributes.AddAttribute(geoJSONAttribute_InspektionsrouteBezeichnung, inspektionsroute.Bezeichnung);
            attributes.AddAttribute(geoJSONAttribute_IsLocked, inspektionsroute.IsLocked);

            //GEOJSON PROPERTIES: Strassenabschnitte
            foreach (InspektionsRtStrAbschnitte inspektionsrouteStrassenabschnitt in inspektionsroute.InspektionsRtStrAbschnitteList)
            {
                FeatureWithID          featureIrs          = new FeatureWithID();
                IAttributesTable       attributeIrs        = new AttributesTable();
                IList <AchsenReferenz> achsenreferenzenIrs = achsenReferenzService.GetAchsenReferenzGruppe(inspektionsrouteStrassenabschnitt.StrassenabschnittGIS.ReferenzGruppe.Id);
                IList <FeatureWithID>  achsenreferenzen    = new List <FeatureWithID>();

                featureIrs.Id       = inspektionsrouteStrassenabschnitt.StrassenabschnittGIS.Id.ToString();
                featureIrs.Geometry = inspektionsrouteStrassenabschnitt.StrassenabschnittGIS.Shape;


                foreach (AchsenReferenz achsenreferenz in achsenreferenzenIrs)
                {
                    FeatureWithID    featAr = new FeatureWithID();
                    IAttributesTable attAr  = new AttributesTable();

                    featAr.Id       = achsenreferenz.Id.ToString();
                    featAr.Geometry = achsenreferenz.Shape;
                    attAr.AddAttribute(geoJSONAttribute_AchsenSegmentId, achsenreferenz.AchsenSegment.Id);
                    featAr.Attributes = attAr;

                    achsenreferenzen.Add(featAr);
                }

                attributeIrs.AddAttribute(geoJSONAttribute_childs, achsenreferenzen);

                featureIrs.Attributes = attributeIrs;
                strassenabschnitte.Add(featureIrs);
            }

            attributes.AddAttribute(geoJSONAttribute_Strassenabschnitte, strassenabschnitte);
            feature.Attributes = attributes;

            TextWriter sw = new StringWriter();

            GeoJSONWriter.WriteWithID(feature, sw);
            string geoJSONstring = sw.ToString();

            return(geoJSONstring);
        }
Ejemplo n.º 2
0
        public static InspektionsRouteGIS GetInspektionsRouteGIS(ErfassungsPeriod erfassungsPeriod, string bezeichnung, DateTime?inInspektionBis, StrassenabschnittGIS strassenabschnittGISOne)
        {
            var inspektionsRouteGIS = new InspektionsRouteGIS
            {
                Bezeichnung      = bezeichnung,
                Bemerkungen      = "Bemerkungen",
                Beschreibung     = "Beschreibung",
                ErfassungsPeriod = erfassungsPeriod,
                InInspektionBei  = bezeichnung.GetInInspektionBei(),
                InInspektionBis  = inInspektionBis,
                Mandant          = erfassungsPeriod.Mandant
            };

            inspektionsRouteGIS.StatusverlaufList = new List <InspektionsRouteStatusverlauf>
            {
                new InspektionsRouteStatusverlauf
                {
                    Status = InspektionsRouteStatus.NeuErstellt,
                    InspektionsRouteGIS = inspektionsRouteGIS,
                    Datum = DateTime.Now
                }
            };

            inspektionsRouteGIS.InspektionsRtStrAbschnitteList = new List <InspektionsRtStrAbschnitte>
            {
                new InspektionsRtStrAbschnitte
                {
                    InspektionsRouteGIS  = inspektionsRouteGIS,
                    StrassenabschnittGIS = strassenabschnittGISOne
                }
            };

            return(inspektionsRouteGIS);
        }
Ejemplo n.º 3
0
 public void UnLockInspektionsRoute(InspektionsRouteGIS inspektionsRouteGIS)
 {
     foreach (var inspektionsRtStrAbschnitte in inspektionsRouteGIS.InspektionsRtStrAbschnitteList)
     {
         inspektionsRtStrAbschnitte.StrassenabschnittGIS.IsLocked = false;
     }
 }
        private void Historize(InspektionsRouteGIS inspektionsRouteGIS, InspektionsRouteStatus inspektionsRouteStatus)
        {
            var inspektionsRouteStatusverlauf = new InspektionsRouteStatusverlauf
            {
                Datum  = timeService.Now,
                Status = inspektionsRouteStatus
            };

            Create(inspektionsRouteStatusverlauf);

            inspektionsRouteGIS.AddInspektionsRouteStatusverlauf(inspektionsRouteStatusverlauf);
        }
 public void HistorizeRouteExportCancelled(InspektionsRouteGIS inspektionsRouteGIS)
 {
     Historize(inspektionsRouteGIS, InspektionsRouteStatus.ExportCancelled);
 }
 public void HistorizeRouteImportiert(InspektionsRouteGIS inspektionsRouteGIS)
 {
     Historize(inspektionsRouteGIS, InspektionsRouteStatus.RouteImportiert);
 }
 public void HistorizeAktualisiert(InspektionsRouteGIS inspektionsRouteGIS)
 {
     Historize(inspektionsRouteGIS, InspektionsRouteStatus.Aktualisiert);
 }
 public void HistorizeNeuErstellt(InspektionsRouteGIS inspektionsRouteGIS)
 {
     Historize(inspektionsRouteGIS, InspektionsRouteStatus.NeuErstellt);
 }
Ejemplo n.º 9
0
        public CheckOutGISStreams CheckOutData(IList <Guid> ids, bool exportBackground)
        {
            CheckOutGISStreams checkoutGISStreams = new CheckOutGISStreams();


            DTOContainer dtosToExport = new DTOContainer();
            Mandant      mandant      = null;
            IGeometry    bbox         = null;

            foreach (Guid id in ids)
            {
                InspektionsRouteGIS inspektionsroute = inspektionsRouteGISService.GetInspektionsRouteById(id);
                mandant = inspektionsroute.Mandant;
                if (bbox != null)
                {
                    bbox = bbox.Union(inspektionsroute.Shape.Envelope).Envelope;
                }
                else
                {
                    bbox = inspektionsroute.Shape.Envelope;
                }
                IList <InspektionsRtStrAbschnitte> inspektionsroutenAbschnitte = inspektionsRtStrAbschnitteService.GetCurrentEntities().Where(ira => ira.InspektionsRouteGIS.Id == inspektionsroute.Id).ToList();

                inspektionsroutenAbschnitte.OrderBy(ira => ira.Reihenfolge);

                //Strassenabschnitte
                foreach (InspektionsRtStrAbschnitte inspektionsroutenAbschnitt in inspektionsroutenAbschnitte)
                {
                    StrassenabschnittGISDTO strassenabschnittGISDTO = strassenabschnittGISDTOService.GetDTOByID(inspektionsroutenAbschnitt.StrassenabschnittGIS.Id);
                    dtosToExport.DataTransferObjects.Add(strassenabschnittGISDTO);

                    //Zustandsabschnitte
                    foreach (ZustandsabschnittGIS zustandsabschnitt in inspektionsroutenAbschnitt.StrassenabschnittGIS.Zustandsabschnitten)
                    {
                        ZustandsabschnittGISDTO zustandsabschnittGISDTO = zustandsabschnittGISDTOService.GetDTOByID(zustandsabschnitt.Id);
                        dtosToExport.DataTransferObjects.Add(zustandsabschnittGISDTO);


                        foreach (Schadendetail schaden in zustandsabschnitt.Schadendetails)
                        {
                            SchadendetailDTO schadendto = schadendetailDTOService.GetDTOByID(schaden.Id);
                            schadendto.ZustandsabschnittId = zustandsabschnitt.Id;
                            dtosToExport.DataTransferObjects.Add(schadendto);
                        }
                        foreach (Schadengruppe schadengruppe in zustandsabschnitt.Schadengruppen)
                        {
                            SchadengruppeDTO schadengruppedto = schadengruppeDTOService.GetDTOByID(schadengruppe.Id);
                            schadengruppedto.ZustandsabschnittId = zustandsabschnitt.Id;
                            dtosToExport.DataTransferObjects.Add(schadengruppedto);
                        }
                    }
                }
            }
            IGeometry backgroundBbox = null;

            //Achsensegmente
            foreach (AchsenSegment achsensegment in achsenSegmentService.GetCurrentBySpatialFilter(bbox).Where(a => a.Mandant == mandant))
            {
                dtosToExport.DataTransferObjects.Add(achsenSegmentDTOService.GetDTOByID(achsensegment.Id));
                if (backgroundBbox != null)
                {
                    backgroundBbox = backgroundBbox.Envelope.Union(achsensegment.Shape.Envelope);
                }
                else
                {
                    backgroundBbox = achsensegment.Shape.Envelope;
                }
            }

            List <Belastungskategorie> belastungskategorien = belastungskategorieService.AlleBelastungskategorie;

            foreach (Belastungskategorie bk in belastungskategorien)
            {
                dtosToExport.DataTransferObjects.Add(belastungskategorieDTOService.GetDTOByID(bk.Id));
            }
            List <MassnahmenvorschlagKatalog> mvklist = massnahmenvorschlagKatalogService.GetCurrentEntities().Where(mvk => mvk.Mandant.Id == mandant.Id && mvk.ErfassungsPeriod.IsClosed == false).ToList();

            foreach (MassnahmenvorschlagKatalog mvk in mvklist)
            {
                dtosToExport.DataTransferObjects.Add(massnahmenvorschlagKatalogDTOService.GetDTOByID(mvk.Id));
            }

            IFormatter   formatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
            MemoryStream serializedModelsStream = new MemoryStream();

            formatter.Serialize(serializedModelsStream, dtosToExport);
            serializedModelsStream.Seek(0, 0);


            checkoutGISStreams.Bezeichnung = "export";

            LayerCollection exportLayer = serverConfigurationProvider.ExportLayer;
            int             count       = exportLayer.Count;
            string          filepath    = serverConfigurationProvider.WMSCacheFolderPath;

            for (int i = 0; i < count; i++)
            {
                ITileSourceFactory fact = null;
                var layer = exportLayer[i];
                switch (layer.ServiceType)
                {
                case ServiceType.WMS:
                    fact = new WmsTileSourceFactory(layer);
                    break;

                case ServiceType.WMTS:
                    fact = new WmtsTileSourceFactory(layer);
                    break;

                default:
                    break;
                }
                TileLoader loader = new TileLoader(fact.GetTileSource());

                Stopwatch stopwatch = new Stopwatch();
                stopwatch.Start();
                checkoutGISStreams.Tiles.Add(loader.GetTiles(layer, bbox, filepath, serverConfigurationProvider.UseWMSCaching, fact.Format, serverConfigurationProvider.ExportBackgroundMapBuffer, serverConfigurationProvider.ExportTileLimit, download: exportBackground));
                stopwatch.Stop();
                Loggers.PeformanceLogger.DebugFormat("Layer {0} downloaded in {1}", layer.Name, stopwatch.Elapsed);
            }
            checkoutGISStreams.ModelsToExport = serializedModelsStream;

            checkoutGISStreams.LegendStreams.Add(FileNameConstants.AchsenSegmentLayerLegendFilename, legendService.GetLegendStream("AchsenSegmentLayer"));
            checkoutGISStreams.LegendStreams.Add(FileNameConstants.StrassenabschnittLayerLegendFilename, legendService.GetLegendStream("StrassenabschnittLayer"));
            checkoutGISStreams.LegendStreams.Add(FileNameConstants.ZustandsabschnittLayerLegendFilename, legendService.GetLegendStream("ZustandsabschnittLayer"));
            checkoutGISStreams.LegendStreams.Add(FileNameConstants.ZustandsabschnittLayerTrottoirLegendFilename, legendService.GetLegendStream("ZustandsabschnittLayer_Trottoir"));
            return(checkoutGISStreams);
        }