public bool StartEditingLayer(ResTBHazardMapLayer hazardMapLayer, bool saveAndStopWhenFinish = false)
 {
     if (!MapControlTools.Layers.Where(m => m.Name.Equals(hazardMapLayer.Name)).Any())
     {
         MapControlTools.AddProjectLayer(hazardMapLayer);
     }
     return(StartEditingLayer(MapControlTools.Layers.Where(m => m.Name.Equals(hazardMapLayer.Name)).Select(m => m.Name).First(), saveAndStopWhenFinish));
 }
 /// Editing Tools
 public bool StartEditingLayer(ResTBHazardMapLayer hazardMapLayer, bool saveAndStopWhenFinish = false)
 {
     return(EditingTool.StartEditingLayer(hazardMapLayer, saveAndStopWhenFinish));
 }
        public void AddProjectLayersThread(int Project)
        {
            var gdalUtils = new GdalUtils();

            RasterReprojectCallback callback = new RasterReprojectCallback(null, MapControlTools);

            gdalUtils.GlobalCallback = callback;
            ds = new OgrDatasource();
            if (!ds.Open(dBConnection.GetGdalConnectionString()))
            {
                Events.MapControl_Error error = new Events.MapControl_Error()
                {
                    ErrorCode = Events.ErrorCodes.CouldNotConnectDatabase, InMethod = "AddPostGISLayer", AxMapError = ds.GdalLastErrorMsg
                };
                On_Error(error);
                return;
            }
            else
            {
                Events.MapControl_BusyStateChange bc = new Events.MapControl_BusyStateChange();
                bc.BusyState   = Events.BusyState.Busy;
                bc.KeyOfSender = "AddProjectLayersThread";
                bc.Percent     = 10;
                bc.Message     = Resources.MapControl_AddedPerimeter;
                MapControlTools.On_BusyStateChange(bc);


                // RiskMap
                if (!AddProjectLayer(Project, ResTBPostGISType.RiskMap))
                {
                    return;
                }
                if (!AddProjectLayer(Project, ResTBPostGISType.RiskMapAfter))
                {
                    return;
                }

                // Perimeter
                if (!AddProjectLayer(Project, ResTBPostGISType.Perimeter))
                {
                    return;
                }
                if (MapControlTools.ShapesCount(MapControlTools.GetLayerNamesFromPostGISType(ResTBPostGISType.Perimeter).First()) > 0)
                {
                    MapControlTools.ZoomToLayer(MapControlTools.GetLayerNamesFromPostGISType(ResTBPostGISType.Perimeter).First());
                }


                // Hazard Maps
                DB.ResTBContext  db         = new DB.ResTBContext();
                List <HazardMap> hazardMaps = db.HazardMaps.Where(m => m.Project.Id == Project).Include(m => m.NatHazard).OrderBy(m => m.Index).ToList();

                double percentadd     = 50.0 / hazardMaps.Count;
                int    currentpercent = 10;

                foreach (HazardMap hazardMap in hazardMaps.OrderByDescending(m => m.BeforeAction))
                {
                    ResTBHazardMapLayer hazardLayer;
                    if (hazardMap.BeforeAction)
                    {
                        hazardLayer = new ResTBHazardMapLayer(Project, true, hazardMap.NatHazard, hazardMap.Index);
                    }
                    else
                    {
                        hazardLayer = new ResTBHazardMapLayer(Project, false, hazardMap.NatHazard, hazardMap.Index);
                    }


                    currentpercent += (int)percentadd;
                    if (!MapControlTools.Layers.Where(m => m.Name == hazardLayer.Name).Any())
                    {
                        AddProjectLayer(hazardLayer, false);
                        bc             = new Events.MapControl_BusyStateChange();
                        bc.BusyState   = Events.BusyState.Busy;
                        bc.KeyOfSender = "AddProjectLayersThread";
                        bc.Percent     = currentpercent;
                        bc.Message     = Resources.MapControl_AddingHazardMaps;
                        MapControlTools.On_BusyStateChange(bc);
                    }
                }


                // Damage Potential
                if (!AddProjectLayer(Project, ResTBPostGISType.DamagePotential))
                {
                    return;
                }

                // Resiliences

                if (!AddProjectLayer(Project, ResTBPostGISType.ResilienceBefore))
                {
                    return;
                }

                if (!AddProjectLayer(Project, ResTBPostGISType.ResilienceAfter))
                {
                    return;
                }

                currentpercent += 30;
                bc              = new Events.MapControl_BusyStateChange();
                bc.BusyState    = Events.BusyState.Busy;
                bc.KeyOfSender  = "AddProjectLayersThread";
                bc.Percent      = currentpercent;
                bc.Message      = Resources.MapControl_AddedDamagePotentials;
                MapControlTools.On_BusyStateChange(bc);

                // Mitigation Measure
                if (!AddProjectLayer(Project, ResTBPostGISType.MitigationMeasure))
                {
                    return;
                }

                currentpercent += 10;
                bc              = new Events.MapControl_BusyStateChange();
                bc.BusyState    = Events.BusyState.Idle;
                bc.KeyOfSender  = "Project";
                bc.Percent      = 100;
                bc.Message      = Resources.MapControl_ProjectLoaded;// "Project loaded";
                MapControlTools.On_BusyStateChange(bc);


                return;
            }
        }
Ejemplo n.º 4
0
        public static LayersModel CreateLayersModel(List <ILayer> layers, LayersModel selectedLayer, ObservableCollection <LayersModel> oldModel = null)
        {
            LayersModel allLayers  = new LayersModel(Resources.Layers);
            LayersModel projects   = new LayersModel(Resources.Project_Layers);
            LayersModel rasters    = new LayersModel(Resources.Rasters);
            LayersModel hazardMaps = new LayersModel(Resources.Hazard_Map);
            LayersModel resilience = new LayersModel(Resources.Resilience);
            LayersModel riskmap    = new LayersModel(Resources.RiskMap);

            ObservableCollection <ILayer> orderedLayers = new ObservableCollection <ILayer>();

            foreach (var customlayer in layers.Where(m => m.LayerType == LayerType.CustomLayerRaster))
            {
                orderedLayers.Add(customlayer);
            }
            foreach (var customlayer in layers.Where(m => m.LayerType == LayerType.ProjectLayer).Where(m => ((ResTBPostGISLayer)m).ResTBPostGISType == ResTBPostGISType.Perimeter))
            {
                orderedLayers.Add(customlayer);
            }
            foreach (var customlayer in layers.Where(m => m.LayerType == LayerType.ProjectLayer).Where(m => ((ResTBPostGISLayer)m).ResTBPostGISType == ResTBPostGISType.HazardMapBefore))
            {
                orderedLayers.Add(customlayer);
            }
            foreach (var customlayer in layers.Where(m => m.LayerType == LayerType.ProjectLayer).Where(m => ((ResTBPostGISLayer)m).ResTBPostGISType == ResTBPostGISType.HazardMapAfter))
            {
                orderedLayers.Add(customlayer);
            }
            foreach (var customlayer in layers.Where(m => m.LayerType == LayerType.ProjectLayer).Where(m => ((ResTBPostGISLayer)m).ResTBPostGISType == ResTBPostGISType.DamagePotential))
            {
                orderedLayers.Add(customlayer);
            }
            foreach (var customlayer in layers.Where(m => m.LayerType == LayerType.ProjectLayer).Where(m => ((ResTBPostGISLayer)m).ResTBPostGISType == ResTBPostGISType.ResilienceBefore))
            {
                orderedLayers.Add(customlayer);
            }
            foreach (var customlayer in layers.Where(m => m.LayerType == LayerType.ProjectLayer).Where(m => ((ResTBPostGISLayer)m).ResTBPostGISType == ResTBPostGISType.ResilienceAfter))
            {
                orderedLayers.Add(customlayer);
            }
            foreach (var customlayer in layers.Where(m => m.LayerType == LayerType.ProjectLayer).Where(m => ((ResTBPostGISLayer)m).ResTBPostGISType == ResTBPostGISType.MitigationMeasure))
            {
                orderedLayers.Add(customlayer);
            }
            foreach (var customlayer in layers.Where(m => m.LayerType == LayerType.ProjectLayer).Where(m => ((ResTBPostGISLayer)m).ResTBPostGISType == ResTBPostGISType.RiskMap))
            {
                orderedLayers.Add(customlayer);
            }
            foreach (var customlayer in layers.Where(m => m.LayerType == LayerType.ProjectLayer).Where(m => ((ResTBPostGISLayer)m).ResTBPostGISType == ResTBPostGISType.RiskMapAfter))
            {
                orderedLayers.Add(customlayer);
            }



            foreach (var item in orderedLayers)
            {
                if (item.LayerType == LayerType.CustomLayerRaster)
                {
                    rasters.Children.Add(new LayersModel(item));
                }
                if (item.LayerType == LayerType.ProjectLayer)
                {
                    if ((item.GetType() == typeof(ResTBResilienceLayer)) && (item.ShapeCount > 0))
                    {
                        ResTBResilienceLayer resLayer = (ResTBResilienceLayer)item;
                        if (projects.Children?.Where(m => m.Name == Resources.Resilience).Count() == 0)
                        {
                            projects.Children.Add(resilience);
                        }
                        resilience.Children.Add(new LayersModel(item));
                        resilience.VerifyCheckState();
                    }
                    else if ((item.GetType() == typeof(ResTBRiskMapLayer)) && (item.ShapeCount > 0))
                    {
                        ResTBRiskMapLayer rmLayer = (ResTBRiskMapLayer)item;
                        if (projects.Children?.Where(m => m.Name == Resources.RiskMap).Count() == 0)
                        {
                            projects.Children.Add(riskmap);
                        }
                        riskmap.Children.Add(new LayersModel(item));
                        riskmap.VerifyCheckState();
                    }
                    else if (item.GetType() == typeof(ResTBHazardMapLayer))
                    {
                        ResTBHazardMapLayer hazardMapLayer = (ResTBHazardMapLayer)item;
                        if (projects.Children?.Where(m => m.Name == Resources.Hazard_Map).Count() == 0)
                        {
                            projects.Children.Add(hazardMaps);
                        }


                        // Add or create Before Mitigation or After Mitigation LayerGroup
                        LayersModel beforeOrAfter = new LayersModel();
                        if (hazardMapLayer.ResTBPostGISType == ResTBPostGISType.HazardMapBefore)
                        {
                            beforeOrAfter = hazardMaps.Children.Where(m => m.Name == Resources.Before_Mitigation).FirstOrDefault();
                        }
                        else if (hazardMapLayer.ResTBPostGISType == ResTBPostGISType.HazardMapAfter)
                        {
                            beforeOrAfter = hazardMaps.Children.Where(m => m.Name == Resources.After_Mitigation).FirstOrDefault();
                        }
                        if (beforeOrAfter == null)
                        {
                            if (hazardMapLayer.ResTBPostGISType == ResTBPostGISType.HazardMapBefore)
                            {
                                beforeOrAfter = new LayersModel(Resources.Before_Mitigation);
                            }
                            else if (hazardMapLayer.ResTBPostGISType == ResTBPostGISType.HazardMapAfter)
                            {
                                beforeOrAfter = new LayersModel(Resources.After_Mitigation);
                            }
                            hazardMaps.Children.Add(beforeOrAfter);
                        }

                        // Add or create NatHazard Group
                        LayersModel natHazardGroup = beforeOrAfter.Children.Where(m => m.Name == hazardMapLayer.NatHazard.Name).FirstOrDefault();
                        if (natHazardGroup == null)
                        {
                            natHazardGroup = new LayersModel(hazardMapLayer.NatHazard.Name);
                            beforeOrAfter.Children.Add(natHazardGroup);
                        }
                        natHazardGroup.Children.Add(new LayersModel(hazardMapLayer.Index.ToString(), hazardMapLayer));
                        natHazardGroup.VerifyCheckState();
                        beforeOrAfter.VerifyCheckState();
                        hazardMaps.VerifyCheckState();
                    }
                    else
                    {
                        if ((item.GetType() == typeof(ResTBPerimeterLayer)) || (item.ShapeCount > 0))
                        {
                            projects.Children.Add(new LayersModel(item));
                        }
                    }
                }
            }

            if ((projects.Children != null) && (projects.Children.Count > 0))
            {
                //projects.VerifyManuallyCheckState();
                projects.VerifyCheckState();
                if (allLayers.Children?.Count() > 0)
                {
                    allLayers.Children.Add(projects);
                }
                else
                {
                    allLayers.Children = new ObservableCollection <LayersModel>()
                    {
                        projects
                    }
                };
            }
            if ((rasters.Children != null) && (rasters.Children.Count > 0))
            {
                rasters.VerifyCheckState();
                if (allLayers.Children?.Count() > 0)
                {
                    allLayers.Children.Add(rasters);
                }
                else
                {
                    allLayers.Children = new ObservableCollection <LayersModel>()
                    {
                        rasters
                    }
                };
            }
            allLayers.Initialize(selectedLayer);
            allLayers.VerifyCheckState();

            if ((oldModel != null) && (oldModel.Count > 0))
            {
                var layerList = oldModel.First()?.getAllChildren(new List <LayersModel>()).Where(m => m._manuallyChecked == true).ToList();
                //var newLayers = allLayers.getAllChildren(new List<LayersModel>());
                foreach (LayersModel lmOld in layerList)
                {
                    allLayers.PutAllChildrenToManually(lmOld.Layer);
                }
            }


            return(allLayers);
        }

        #region INotifyPropertyChanged Members

        void OnPropertyChanged(string prop)
        {
            if (this.PropertyChanged != null)
            {
                this.PropertyChanged(this, new PropertyChangedEventArgs(prop));
            }
        }
Ejemplo n.º 5
0
        public int ImportProjectThread(string filename)
        {
            try
            {
                ZipFile.ExtractToDirectory(filename, localDirectory + "\\ImportMap");

                // import the project, add it to the database as a new project with new id
                if (File.Exists(localDirectory + "\\ImportMap\\database.sqlite"))
                {
                    RunGdalImport(localDirectory + "\\ImportMap\\database.sqlite", "projectimport", "project");
                }
                using (var context = new DB.ResTBContext())
                {
                    List <Project> importproject = context.Projects
                                                   .SqlQuery("Select * from projectimport")
                                                   .ToList <Project>();

                    if ((importproject != null) && (importproject.Count > 0))
                    {
                        Project p = new Project();
                        p.Description      = importproject[0].Description;
                        p.CoordinateSystem = importproject[0].CoordinateSystem;

                        // check if name is already there...
                        string  name = importproject[0].Name;
                        Project pold = context.Projects.Where(m => m.Name == name).FirstOrDefault();
                        if (pold != null)
                        {
                            name = name + " (import " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ")";
                        }


                        p.Name   = name;
                        p.Number = importproject[0].Number;
                        context.Projects.Add(p);
                        context.SaveChanges();

                        Events.MapControl_BusyStateChange bc = new Events.MapControl_BusyStateChange();
                        bc.BusyState   = Events.BusyState.Busy;
                        bc.KeyOfSender = "ImportProject";
                        bc.Percent     = 10;
                        bc.Message     = Resources.MapControl_Importing;
                        MapControlTools.On_BusyStateChange(bc);

                        // we have a new project id

                        //import all new Objectparameters
                        RunGdalImport(localDirectory + "\\ImportMap\\database.sqlite", "objectparameterimport", "objectparameter");

                        RunGdalImport(localDirectory + "\\ImportMap\\database.sqlite", "resiliencevaluesimport", "resiliencevalues");

                        RunGdalImport(localDirectory + "\\ImportMap\\database.sqlite", "praimport", "pra");
                        List <PrA> importpra = context.PrAs
                                               .SqlQuery("Select * from praimport")
                                               .ToList <PrA>();
                        foreach (PrA praImp in importpra)
                        {
                            PrA pra = (PrA)praImp.Clone();
                            pra.Project = p;
                            p.PrAs.Add(pra);
                            context.PrAs.Add(pra);
                        }

                        context.SaveChanges();

                        RunGdalImport(localDirectory + "\\ImportMap\\database.sqlite", "protectionmeasureimport", "ProtectionMeasure");
                        List <ProtectionMeasure> importpm = context.ProtectionMeasurements
                                                            .SqlQuery("Select * from protectionmeasureimport")
                                                            .ToList <ProtectionMeasure>();
                        if (importpm?.Count > 0)
                        {
                            ProtectionMeasure pm = (ProtectionMeasure)importpm[0].Clone();
                            pm.Project          = p;
                            p.ProtectionMeasure = pm;
                            context.ProtectionMeasurements.Add(pm);
                            context.SaveChanges();
                        }

                        // create the ids of old objectparameters, so foreign constraint will work.
                        // But don't override existing
                        List <Objectparameter> importop = context.Objektparameter
                                                          .SqlQuery("Select * from objectparameterimport")
                                                          .ToList <Objectparameter>();

                        //
                        foreach (Objectparameter o in importop)
                        {
                            if (context.Objektparameter.Where(m => m.ID == o.ID).ToList().Count == 0)
                            {
                                context.Database.ExecuteSqlCommand("INSERT INTO public.\"Objectparameter\" (\"ID\",\"FeatureType\",\"Value\",\"Floors\",\"Personcount\",\"Presence\",\"NumberOfVehicles\",\"Velocity\",\"Staff\",\"IsStandard\",\"ObjectClass_ID\")\tVALUES (" + o.ID + ",1,0,0,0,0.0,0,0,0,false,1); ");
                            }
                        }



                        ResTBPostGISLayer tempLayer = new ResTBMitigationMeasureLayer(0);
                        if (File.Exists(localDirectory + "\\ImportMap\\" + tempLayer.ExportImportFileName + ".shp"))
                        {
                            RunGdalImport(localDirectory + "\\ImportMap\\" + tempLayer.ExportImportFileName + ".shp", "protectionmeasuregeometryimport");
                            context.Database.ExecuteSqlCommand("insert into \"ProtectionMeasureGeometry\" (project_fk, geometry) select " + p.Id + ", wkb_geometry from protectionmeasuregeometryimport;");
                        }
                        bc             = new Events.MapControl_BusyStateChange();
                        bc.BusyState   = Events.BusyState.Busy;
                        bc.KeyOfSender = "ImportProject";
                        bc.Percent     = 30;
                        bc.Message     = Resources.MapControl_Importing;
                        MapControlTools.On_BusyStateChange(bc);

                        tempLayer = new ResTBPerimeterLayer(0);
                        if (File.Exists(localDirectory + "\\ImportMap\\" + tempLayer.ExportImportFileName + ".shp"))
                        {
                            RunGdalImport(localDirectory + "\\ImportMap\\" + tempLayer.ExportImportFileName + ".shp", "perimeterimport");
                            context.Database.ExecuteSqlCommand("insert into \"Perimeter\" (project_fk, geometry) select " + p.Id + ", wkb_geometry from perimeterimport;");
                        }
                        bc             = new Events.MapControl_BusyStateChange();
                        bc.BusyState   = Events.BusyState.Busy;
                        bc.KeyOfSender = "ImportProject";
                        bc.Percent     = 40;
                        bc.Message     = Resources.MapControl_Importing;
                        MapControlTools.On_BusyStateChange(bc);

                        tempLayer = new ResTBHazardMapLayer(0, false, context.NatHazards.ToList().First(), 0);
                        if (File.Exists(localDirectory + "\\ImportMap\\" + tempLayer.ExportImportFileName + ".shp"))
                        {
                            RunGdalImport(localDirectory + "\\ImportMap\\" + tempLayer.ExportImportFileName + ".shp", "hazardmapimport");
                            context.Database.ExecuteSqlCommand("insert into \"HazardMap\" (\"Project_Id\", \"Index\",\"BeforeAction\",\"NatHazard_ID\",geometry) select " + p.Id + ",\"index\",CASE WHEN beforeacti IS NULL THEN false WHEN beforeacti = 0 THEN false ELSE true END beforeaction ,\"nathazard_\", wkb_geometry from hazardmapimport;");
                        }
                        bc             = new Events.MapControl_BusyStateChange();
                        bc.BusyState   = Events.BusyState.Busy;
                        bc.KeyOfSender = "ImportProject";
                        bc.Percent     = 50;
                        bc.Message     = Resources.MapControl_Importing;
                        MapControlTools.On_BusyStateChange(bc);

                        tempLayer = new ResTBDamagePotentialLayer(0);
                        if (File.Exists(localDirectory + "\\ImportMap\\" + tempLayer.ExportImportFileName + "_Points.shp"))
                        {
                            RunGdalImport(localDirectory + "\\ImportMap\\" + tempLayer.ExportImportFileName + "_Points.shp", "damagepotentialpoints");
                            context.Database.ExecuteSqlCommand("insert into \"MappedObject\" (\"Project_Id\", \"FreeFillParameter_ID\",\"Objectparameter_ID\",point) select " + p.Id + ", freefillpa, objectpara, wkb_geometry from damagepotentialpoints;");
                        }
                        if (File.Exists(localDirectory + "\\ImportMap\\" + tempLayer.ExportImportFileName + "_Lines.shp"))
                        {
                            RunGdalImport(localDirectory + "\\ImportMap\\" + tempLayer.ExportImportFileName + "_Lines.shp", "damagepotentiallines");
                            context.Database.ExecuteSqlCommand("insert into \"MappedObject\" (\"Project_Id\", \"FreeFillParameter_ID\",\"Objectparameter_ID\",line) select " + p.Id + ", freefillpa, objectpara, wkb_geometry from damagepotentiallines;");
                        }

                        List <int> importrvsMOID = context.Database.SqlQuery <int>("select distinct mappedobject_id from resiliencevaluesimport")
                                                   .ToList <int>();


                        bc             = new Events.MapControl_BusyStateChange();
                        bc.BusyState   = Events.BusyState.Busy;
                        bc.KeyOfSender = "ImportProject";
                        bc.Percent     = 60;
                        bc.Message     = Resources.MapControl_Importing;
                        MapControlTools.On_BusyStateChange(bc);



                        if (File.Exists(localDirectory + "\\ImportMap\\" + tempLayer.ExportImportFileName + "_Polygones.shp"))
                        {
                            RunGdalImport(localDirectory + "\\ImportMap\\" + tempLayer.ExportImportFileName + "_Polygones.shp", "damagepotentialpolygones");
                            context.Database.ExecuteSqlCommand("insert into \"MappedObject\" (\"Project_Id\", \"FreeFillParameter_ID\",\"Objectparameter_ID\",polygon) select " + p.Id + ", freefillpa, objectpara, wkb_geometry from damagepotentialpolygones;");
                        }
                        bc             = new Events.MapControl_BusyStateChange();
                        bc.BusyState   = Events.BusyState.Busy;
                        bc.KeyOfSender = "ImportProject";
                        bc.Percent     = 70;
                        bc.Message     = Resources.MapControl_Importing;
                        MapControlTools.On_BusyStateChange(bc);

                        foreach (int moID in importrvsMOID)
                        {
                            string sql = "insert into \"ResilienceValues\" (\"OverwrittenWeight\", \"Value\", \"MappedObject_ID\", \"ResilienceWeight_ID\") " +
                                         "select r.overwrittenweight, r.value, (select \"ID\" " +
                                         "from \"MappedObject\" mo where polygon = ( " +
                                         "select wkb_geometry from damagepotentialpolygones d " +
                                         "where d.id = " + moID + ") " +
                                         "and \"Project_Id\" = " + p.Id + "), r.resilienceweight_id from resiliencevaluesimport r where r.mappedobject_id = " + moID + "; ";
                            context.Database.ExecuteSqlCommand(sql);
                        }



                        List <MappedObject> mos = context.MappedObjects.Where(m => m.Project.Id == p.Id).ToList();

                        // Insert FreeFills and Objectparameters

                        foreach (MappedObject mo in mos)
                        {
                            if (mo.FreeFillParameter != null)
                            {
                                Objectparameter o     = importop.Where(m => m.ID == mo.FreeFillParameter.ID).FirstOrDefault();
                                Objectparameter oCopy = ShallowCopyEntity <Objectparameter>(o);
                                context.Objektparameter.Add(oCopy);
                                mo.FreeFillParameter = oCopy;
                                context.SaveChanges();
                            }
                            if (mo.Objectparameter != null)
                            {
                                Objectparameter o = importop.Where(m => m.ID == mo.Objectparameter.ID).FirstOrDefault();

                                // not a standard objectparameter
                                if (o != null)
                                {
                                    Objectparameter oCopy = ShallowCopyEntity <Objectparameter>(o);

                                    // get the objectclass
                                    int         objClassID = context.Database.SqlQuery <int>("select objectclass_id from objectparameterimport where id = " + o.ID).First();
                                    ObjectClass oc         = context.ObjektKlassen.Find(objClassID);
                                    oCopy.ObjectClass = oc;
                                    // get the motherobject
                                    int             motherObjID = context.Database.SqlQuery <int>("select motherotbjectparameter_id from objectparameterimport where id = " + o.ID).First();
                                    Objectparameter motherObj   = context.Objektparameter.Find(motherObjID);
                                    oCopy.MotherOtbjectparameter = motherObj;

                                    context.Objektparameter.Add(oCopy);
                                    mo.Objectparameter = oCopy;
                                    context.SaveChanges();
                                }
                            }
                        }



                        bc             = new Events.MapControl_BusyStateChange();
                        bc.BusyState   = Events.BusyState.Idle;
                        bc.KeyOfSender = "ImportProject";
                        bc.Percent     = 100;
                        bc.Message     = Resources.MapControl_Importing_Success;
                        MapControlTools.On_BusyStateChange(bc);

                        return(p.Id);
                    }
                }
            }
            catch (Exception e)
            {
                Events.MapControl_Error export_error = new Events.MapControl_Error()
                {
                    ErrorCode = Events.ErrorCodes.ImportExportError, InMethod = "ImportProject", AxMapError = e.ToString()
                };
                On_Error(export_error);
            }
            return(-1);
        }