public static AnchorPointList CreateNear(Coordinates center, float radius1, float radius2) { bool rc = false; RGEContext db = new RGEContext(); AnchorPointList anchor_point_list = new AnchorPointList(); using (SqlCommand cmd = new SqlCommand("EGH.GetListAnchorPointOnDistanceLessThanD2MoreThanD1", db.connection)) { cmd.CommandType = CommandType.StoredProcedure; { SqlParameter parm = new SqlParameter("@ШиротаГрад", SqlDbType.Real); parm.Value = center.latitude; cmd.Parameters.Add(parm); } { SqlParameter parm = new SqlParameter("@ДолготаГрад", SqlDbType.Real); parm.Value = center.lngitude; cmd.Parameters.Add(parm); } { SqlParameter parm = new SqlParameter("@Расстояние1", SqlDbType.Real); parm.Value = radius1; cmd.Parameters.Add(parm); } { SqlParameter parm = new SqlParameter("@Расстояние2", SqlDbType.Real); parm.Value = radius2; cmd.Parameters.Add(parm); } try { cmd.ExecuteNonQuery(); SqlDataReader reader = cmd.ExecuteReader(); while (reader.Read()) { int id = (int)reader["IdТехногенногоОбъекта"]; float x = (float)reader["ШиротаГрад"]; float y = (float)reader["ДолготаГрад"]; int ground_type_code = (int)reader["ТипГрунта"]; int cadastre_type_code = (int)reader["КодНазначенияЗемель"]; float waterdeep = (float)reader["ГлубинаГрунтовыхВод"]; float height = (float)reader["ВысотаУровнемМоря"]; GroundType ground_type = new GroundType(ground_type_code); Coordinates coordinates = new Coordinates((float)x, (float)y); CadastreType cadastre_type = new CadastreType(cadastre_type_code); Point point = new Point(coordinates, ground_type, (float)waterdeep, (float)height); //delta = (float)reader["Расстояние"]; AnchorPoint anchor_point = new AnchorPoint(id, point, cadastre_type); anchor_point_list.Add(anchor_point); } rc = anchor_point_list.Count > 0; reader.Close(); } catch (Exception e) { rc = false; }; return(anchor_point_list); } }
public Report(CEQContext db, RGEContext.Report report) { CadastreType _cadastretype = CadastreType.defaulttype; RiskObject _riskobject = RiskObject.defaulttype; this.report = report; this.pdk_coef = _cadastretype.pdk_coef; this.water_pdk_coef = _cadastretype.water_pdk_coef; if (report.riskobject_id > 0) { if (RiskObject.GetById(db, report.riskobject_id, ref _riskobject)) { if (_riskobject.cadastretype.pdk_coef > 0) { this.pdk_coef = _riskobject.cadastretype.pdk_coef; } if (_riskobject.cadastretype.water_pdk_coef > 0) { this.water_pdk_coef = _riskobject.cadastretype.water_pdk_coef; } } } this.excessgroundconcentration = this.report.C3 / (this.pdk_coef); this.exesswaterconcentration = this.report.C4 / this.water_pdk_coef; }
// разлив в произвольной точке public SpreadPoint(Point point, CadastreType cadastretype, PetrochemicalType petrochemicaltype, float volume) : base(point) { this.petrochemicaltype = petrochemicaltype; this.volume = volume; this.riskobject = null; // разлив не связан с техногенным объектом this.cadastretype = cadastretype; }
static public bool FindAtDistance(EGH01DB.IDBContext dbcontext, Coordinates coordinates, int buffer, out EcoObjectsList ecolist) { bool rc = false; ecolist = new EcoObjectsList(); //List<EcoObject> ecolist = new List<EcoObject>(); using (SqlCommand cmd = new SqlCommand("MAP.EcoObjectInBuffer", dbcontext.connection)) { cmd.CommandType = CommandType.StoredProcedure; { SqlParameter parm = new SqlParameter("@point", SqlDbType.VarChar); parm.Value = coordinates.GetMapPoint();; cmd.Parameters.Add(parm); } { SqlParameter parm = new SqlParameter("@buffer", SqlDbType.Int); parm.Value = buffer; cmd.Parameters.Add(parm); } { SqlParameter parm = new SqlParameter("@exitrc", SqlDbType.Int); parm.Direction = ParameterDirection.ReturnValue; cmd.Parameters.Add(parm); } try { SqlDataReader reader = cmd.ExecuteReader(); rc = true; //EcoObject(int id, Point point, EcoObjectType ecoobjecttype, CadastreType cadastretype, string name, bool iswaterobject) while (reader.Read()) { int id = (int)reader["Obj_Id"]; string name = (string)reader["name"]; string type = (string)reader["type"]; float dist = (float)reader["distance"]; float x = (float)reader["yPoint"]; float y = (float)reader["xPoint"]; Coordinates nearbypoint = new Coordinates(x, y); Point point = new Point(nearbypoint); EcoObjectType eco_object_type = new EcoObjectType(type); CadastreType cadastre_type = new CadastreType("Не определено на карте"); EcoObject ecoobject = new EcoObject(id, point, eco_object_type, cadastre_type, name, true); // уточнить насчет iswaterobject! blinova ecolist.Add(ecoobject); } reader.Close(); } catch (Exception e) { rc = false; }; return(rc); } }
public EcoObject(string name, EcoObjectType ecoobjecttype, CadastreType cadastretype) { this.id = -1; this.ecoobjecttype = ecoobjecttype; this.cadastretype = cadastretype; this.name = name; this.angle = 0.0f; this.pollutionecoobject = 0.0f; }
public EcoObject(int id, Point point, EcoObjectType ecoobjecttype, CadastreType cadastretype, string name, bool iswaterobject, float angle, float pollutionecoobject) : base(point) { this.id = id; this.ecoobjecttype = ecoobjecttype; this.cadastretype = cadastretype; this.name = name; this.iswaterobject = iswaterobject; this.angle = angle; this.pollutionecoobject = pollutionecoobject; }
public AnchorPoint(XmlNode node) : base(new Point(node.SelectSingleNode(".//Point"))) { this.id = Helper.GetIntAttribute(node, "id", -1); XmlNode cad = node.SelectSingleNode(".//CadastreType"); if (cad != null) { this.cadastretype = new CadastreType(cad); } else { this.cadastretype = null; } }
// #2 Получение карты водоемов static public bool GetWaterPond(EGH01DB.IDBContext dbcontext, Coordinates coordinates, out EcoObject water_object) // водные объекты - озера, водохранилища { bool rc = false; water_object = new EcoObject(); using (SqlCommand cmd = new SqlCommand("MAP.InPondMap", dbcontext.connection)) { cmd.CommandType = CommandType.StoredProcedure; { SqlParameter parm = new SqlParameter("@point", SqlDbType.VarChar); parm.Value = coordinates.GetMapPoint(); cmd.Parameters.Add(parm); } { SqlParameter parm = new SqlParameter("@exitrc", SqlDbType.Int); parm.Direction = ParameterDirection.ReturnValue; cmd.Parameters.Add(parm); } try { SqlDataReader reader = cmd.ExecuteReader(); if (rc = reader.Read()) { int id = (int)reader["Obj_Id"]; string type = (string)reader["type"]; string name = (string)reader["name"]; EcoObjectType eco_object_type = new EcoObjectType(type); CadastreType cadastre_type = new CadastreType("Водный объект"); water_object = new EcoObject(name, eco_object_type, cadastre_type, true); } reader.Close(); } catch (Exception e) { rc = false; }; } return(rc); }
static public bool GetById(EGH01DB.IDBContext dbcontext, int id, ref EcoObject ecoobject) { bool rc = false; using (SqlCommand cmd = new SqlCommand("EGH.GetEcoObjectByID", dbcontext.connection)) { cmd.CommandType = CommandType.StoredProcedure; { SqlParameter parm = new SqlParameter("@IdПриродоохранногоОбъекта", SqlDbType.Int); parm.Value = id; cmd.Parameters.Add(parm); } { SqlParameter parm = new SqlParameter("@exitrc", SqlDbType.Int); parm.Direction = ParameterDirection.ReturnValue; cmd.Parameters.Add(parm); } try { cmd.ExecuteNonQuery(); SqlDataReader reader = cmd.ExecuteReader(); if (reader.Read()) { float x = (float)reader["ШиротаГрад"]; float y = (float)reader["ДолготаГрад"]; Coordinates coordinates = new Coordinates((float)x, (float)y); string ground_type_name = (string)reader["НаименованиеТипаГрунта"]; float porosity = (float)reader["КоэфПористости"]; float holdmigration = (float)reader["КоэфЗадержкиМиграции"]; float waterfilter = (float)reader["КоэфФильтрацииВоды"]; float diffusion = (float)reader["КоэфДиффузии"]; float distribution = (float)reader["КоэфРаспределения"]; float sorption = (float)reader["КоэфСорбции"]; float watercapacity = (float)reader["КоэфКапВлагоемкости"]; float soilmoisture = (float)reader["ВлажностьГрунта"]; float аveryanovfactor = (float)reader["КоэфАверьянова"]; float permeability = (float)reader["Водопроницаемость"]; float density = (float)reader["СредняяПлотностьГрунта"]; GroundType ground_type = new GroundType((int)reader["ТипГрунта"], (string)ground_type_name, (float)porosity, (float)holdmigration, (float)waterfilter, (float)diffusion, (float)distribution, (float)sorption, (float)watercapacity, (float)soilmoisture, (float)аveryanovfactor, (float)permeability, (float)density); float waterdeep = (float)reader["ГлубинаГрунтовыхВод"]; float height = (float)reader["ВысотаУровнемМоря"]; Point point = new Point(coordinates, ground_type, (float)waterdeep, (float)height); int ecoobject_type_code = (int)reader["КодТипаПриродоохранногоОбъекта"]; string ecoobject_type_name = (string)reader["НаименованиеТипаПриродоохранногоОбъекта"]; int cat_water_name = (int)reader["КатегорияВодоохрТер"]; bool iswaterobject; if (cat_water_name != 0) { iswaterobject = true; } else { iswaterobject = false; } WaterProtectionArea water_protection_area = new WaterProtectionArea(cat_water_name); EcoObjectType ecoobjecttype = new EcoObjectType(ecoobject_type_code, ecoobject_type_name, water_protection_area); int cadastre_type_code = (int)reader["КодТипаНазначенияЗемель"]; string cadastre_type_name = (string)reader["НаименованиеНазначенияЗемель"]; float pdk = (float)reader["ПДК"]; float water_pdk_coef = (float)reader["ПДКводы"]; string ground_doc_name = (string)reader["НормДокументЗемля"]; string water_doc_name = (string)reader["НормДокументВода"]; CadastreType cadastre_type = new CadastreType(cadastre_type_code, (string)cadastre_type_name, pdk, water_pdk_coef, ground_doc_name, water_doc_name); string ecoobject_name = (string)reader["НаименованиеПриродоохранногоОбъекта"]; ecoobject = new EcoObject(id, point, ecoobjecttype, cadastre_type, ecoobject_name, iswaterobject); } reader.Close(); rc = (int)cmd.Parameters["@exitrc"].Value > 0; } catch (Exception e) { rc = false; }; return(rc); } }
// найти список точек в заданном радиусе public static AnchorPointList CreateNear(Coordinates center, float distance) { bool rc = false; RGEContext db = new RGEContext(); AnchorPointList anchor_point_list = new AnchorPointList(); using (SqlCommand cmd = new SqlCommand("EGH.GetListAnchorPointOnDistanceLessThanD", db.connection)) { cmd.CommandType = CommandType.StoredProcedure; { SqlParameter parm = new SqlParameter("@ШиротаГрад", SqlDbType.Real); parm.Value = center.latitude; cmd.Parameters.Add(parm); } { SqlParameter parm = new SqlParameter("@ДолготаГрад", SqlDbType.Real); parm.Value = center.lngitude; cmd.Parameters.Add(parm); } { SqlParameter parm = new SqlParameter("@Расстояние", SqlDbType.Real); parm.Value = distance; cmd.Parameters.Add(parm); } try { //cmd.ExecuteNonQuery(); SqlDataReader reader = cmd.ExecuteReader(); while (reader.Read()) { int id = (int)reader["IdОпорнойГеологическойТочки"]; float x = (float)reader["ШиротаГрад"]; float y = (float)reader["ДолготаГрад"]; int ground_type_code = (int)reader["ТипГрунта"]; float waterdeep = (float)reader["ГлубинаГрунтовыхВод"]; float height = (float)reader["ВысотаУровнемМоря"]; GroundType ground_type = new GroundType(ground_type_code); Coordinates coordinates = new Coordinates((float)x, (float)y); int cadastre_type_code = (int)reader["КодНазначенияЗемель"]; string ground_type_name = (string)reader["НаименованиеНазначенияЗемель"]; float pdk_koef = (float)reader["ПДК"]; float water_pdk_koef = (float)reader["ПДКводы"]; string pdk_korf_doc = (string)reader["НормДокументЗемля"]; string water_pdk_korf_doc = (string)reader["НормДокументВода"]; CadastreType cadastre_type = new CadastreType(cadastre_type_code, ground_type_name, pdk_koef, water_pdk_koef, pdk_korf_doc, water_pdk_korf_doc); Point point = new Point(coordinates, ground_type, (float)waterdeep, (float)height); //delta = (float)reader["Расстояние"]; AnchorPoint anchor_point = new AnchorPoint(id, point, cadastre_type); anchor_point_list.Add(anchor_point); } rc = anchor_point_list.Count > 0; reader.Close(); } catch (Exception e) { rc = false; }; return(anchor_point_list); } }
public AnchorPoint(int id) { this.id = id; this.cadastretype = new CadastreType(); }
public AnchorPoint(int id, Point point, CadastreType cadastretype) : base(point) { this.id = id; this.cadastretype = cadastretype; }
static public bool Create(EGH01DB.IDBContext dbcontext, AnchorPoint anchor_point, float angle, float distance) { bool rc = false; int id = -1; using (SqlCommand cmd = new SqlCommand("EGH.GetCoordinatesByAngle", dbcontext.connection)) { cmd.CommandType = CommandType.StoredProcedure; { SqlParameter parm = new SqlParameter("@lat1", SqlDbType.Real); parm.Value = anchor_point.coordinates.latitude; cmd.Parameters.Add(parm); } { SqlParameter parm = new SqlParameter("@lng1", SqlDbType.Real); parm.Value = anchor_point.coordinates.lngitude; cmd.Parameters.Add(parm); } { SqlParameter parm = new SqlParameter("@angle", SqlDbType.Real); parm.Value = angle; cmd.Parameters.Add(parm); } { SqlParameter parm = new SqlParameter("@distance", SqlDbType.Real); parm.Value = distance; cmd.Parameters.Add(parm); } { SqlParameter parm = new SqlParameter("@lat2", SqlDbType.Real); parm.Direction = ParameterDirection.Output; cmd.Parameters.Add(parm); } { SqlParameter parm = new SqlParameter("@lng2", SqlDbType.Real); parm.Direction = ParameterDirection.Output; cmd.Parameters.Add(parm); } //{ // SqlParameter parm = new SqlParameter("@exitrc", SqlDbType.Int); // parm.Direction = ParameterDirection.ReturnValue; // cmd.Parameters.Add(parm); //} try { cmd.ExecuteNonQuery(); // if (rc = ((int)cmd.Parameters["@exitrc"].Value) > 0) // { float x = (float)cmd.Parameters["@lat2"].Value; float y = (float)cmd.Parameters["@lng2"].Value; Coordinates coordinates = new Coordinates((float)x, (float)y); int new_ground_type_code = anchor_point.groundtype.type_code; float new_waterdeep = anchor_point.waterdeep; float new_height = anchor_point.height; GroundType new_ground_type = new GroundType(new_ground_type_code); Point point = new Point(coordinates, new_ground_type, new_waterdeep, new_height); int new_cadastre_type_code = anchor_point.cadastretype.type_code; CadastreType cadastretype = new CadastreType(new_cadastre_type_code); AnchorPoint new_anchor_point = new AnchorPoint(id, point, cadastretype); if (AnchorPoint.Create(dbcontext, new_anchor_point)) { rc = true; } // } } catch (Exception e) { rc = false; }; return(rc); } }
public ActionResult EcoObjectCreate(EGH01.Models.EGHRGE.EcoObjectView eo) { RGEContext db = null; ViewBag.EGHLayout = "RGE.EcoObject"; ActionResult view = View("Index"); string menuitem = this.HttpContext.Request.Params["menuitem"] ?? "Empty"; try { db = new RGEContext(); view = View("EcoObject", db); if (menuitem.Equals("EcoObjectCreateEco.Create")) { view = View("EcoObjectCreateEco"); return(view); } if (menuitem.Equals("EcoObject.Create.Create")) { int id = -1; if (EGH01DB.Objects.EcoObject.GetNextId(db, out id)) { String name = eo.name; CadastreType type_cadastre = new CadastreType(); if (EGH01DB.Types.CadastreType.GetByCode(db, eo.list_cadastre, out type_cadastre)) { EcoObjectType eco_type = new EcoObjectType(); if (EGH01DB.Types.EcoObjectType.GetByCode(db, eo.list_ecoType, out eco_type)) { bool iswaterobject = eo.iswaterobject; string strlat_s = this.HttpContext.Request.Params["lat_s"] ?? "Empty"; string strlng_s = this.HttpContext.Request.Params["lng_s"] ?? "Empty"; string strwaterdeep = this.HttpContext.Request.Params["waterdeep"] ?? "Empty"; string strheight = this.HttpContext.Request.Params["height"] ?? "Empty"; float lat_s = 0.0f; float lng_s = 0.0f; float waterdeep = 0.0f; float height = 0.0f; if (!Helper.FloatTryParse(strlat_s, out lat_s)) { lat_s = 0.0f; } if (!Helper.FloatTryParse(strlng_s, out lng_s)) { lng_s = 0.0f; } if (!Helper.FloatTryParse(strwaterdeep, out waterdeep)) { waterdeep = 0.0f; } if (!Helper.FloatTryParse(strheight, out height)) { height = 0.0f; } Coordinates coordinates = new Coordinates(eo.latitude, eo.lat_m, lat_s, eo.lngitude, eo.lng_m, lng_s); EGH01DB.Types.GroundType ground_type = new EGH01DB.Types.GroundType(); if (EGH01DB.Types.GroundType.GetByCode(db, eo.list_groundType, out ground_type)) { Point point = new Point(coordinates, ground_type, waterdeep, height); EGH01DB.Objects.EcoObject eco_object = new EGH01DB.Objects.EcoObject(id, point, eco_type, type_cadastre, name, iswaterobject); if (EGH01DB.Objects.EcoObject.Create(db, eco_object)) { view = View("EcoObject", db); } } } } else if (menuitem.Equals("EcoObject.Create.Cancel")) { view = View("EcoObject", db); } } } } catch (RGEContext.Exception e) { ViewBag.msg = e.message; } catch (Exception e) { ViewBag.msg = e.Message; } return(view); }
static public bool CreateNear(EGH01DB.IDBContext dbcontext, EcoObject ecoobject, float angle, float distance, out EcoObject eco_object) { bool rc = false; int id = -1; eco_object = new EcoObject(); using (SqlCommand cmd = new SqlCommand("EGH.GetCoordinatesByAngle", dbcontext.connection)) { cmd.CommandType = CommandType.StoredProcedure; { SqlParameter parm = new SqlParameter("@lat1", SqlDbType.Real); parm.Value = ecoobject.coordinates.latitude; cmd.Parameters.Add(parm); } { SqlParameter parm = new SqlParameter("@lng1", SqlDbType.Real); parm.Value = ecoobject.coordinates.lngitude; cmd.Parameters.Add(parm); } { SqlParameter parm = new SqlParameter("@angle", SqlDbType.Real); parm.Value = angle; cmd.Parameters.Add(parm); } { SqlParameter parm = new SqlParameter("@distance", SqlDbType.Real); parm.Value = distance; cmd.Parameters.Add(parm); } { SqlParameter parm = new SqlParameter("@lat2", SqlDbType.Real); parm.Direction = ParameterDirection.Output; cmd.Parameters.Add(parm); } { SqlParameter parm = new SqlParameter("@lng2", SqlDbType.Real); parm.Direction = ParameterDirection.Output; cmd.Parameters.Add(parm); } try { cmd.ExecuteNonQuery(); float x = (float)cmd.Parameters["@lat2"].Value; float y = (float)cmd.Parameters["@lng2"].Value; Coordinates coordinates = new Coordinates((float)x, (float)y); int new_ground_type_code = ecoobject.groundtype.type_code; float new_waterdeep = ecoobject.waterdeep; float new_height = ecoobject.height; GroundType new_ground_type = new GroundType(new_ground_type_code); Point point = new Point(coordinates, new_ground_type, new_waterdeep, new_height); int new_cadastre_type_code = ecoobject.cadastretype.type_code; bool iswaterobject = ecoobject.iswaterobject; string name = ecoobject.name; int ecoobjecttype_code = ecoobject.ecoobjecttype.type_code; EcoObjectType ecoobjecttype = new EcoObjectType(ecoobjecttype_code); CadastreType cadastretype = new CadastreType(new_cadastre_type_code); eco_object = new EcoObject(id, point, ecoobjecttype, cadastretype, name, iswaterobject); if (EcoObject.Create(dbcontext, eco_object)) { rc = true; } } catch (Exception e) { rc = false; }; return(rc); } }
} // кадастровый тип земли public AnchorPoint() { this.id = -1; this.cadastretype = new CadastreType(); }
public ActionResult AnchorPointCreatePoint(AnchorPointView ah) { RGEContext db = null; ViewBag.EGHLayout = "RGE.AnchorPoint"; ActionResult view = View("Index"); string menuitem = this.HttpContext.Request.Params["menuitem"] ?? "Empty"; try { db = new RGEContext(); view = View("AnchorPoint", db); if (menuitem.Equals("AnchorPointCreate.Create.Create")) { int id = -1; if (EGH01DB.Points.AnchorPoint.GetNextId(db, out id)) { float lat_s = 0.0f; string strlat_s = this.HttpContext.Request.Params["lat_s"] ?? "Empty"; if (!Helper.FloatTryParse(strlat_s, out lat_s)) { lat_s = 0.0f; } float angel = 0.0f; string strangel = this.HttpContext.Request.Params["angel"] ?? "Empty"; if (!Helper.FloatTryParse(strangel, out angel)) { angel = 0.0f; } float distance = 0.0f; string strdistance = this.HttpContext.Request.Params["distance"] ?? "Empty"; if (!Helper.FloatTryParse(strdistance, out distance)) { distance = 0.0f; } float lng_s = 0.0f; string strlng_s = this.HttpContext.Request.Params["lng_s"] ?? "Empty"; if (!Helper.FloatTryParse(strlng_s, out lng_s)) { lng_s = 0.0f; } Coordinates coordinates = new Coordinates(ah.Lat_d, ah.lat_m, lat_s, ah.lngitude, ah.lng_m, lng_s); float waterdeep = 0.0f; int list_cadastre = ah.list_cadastre; float height = 0.0f; string strheight = this.HttpContext.Request.Params["height"] ?? "Empty"; if (!Helper.FloatTryParse(strheight, out height)) { height = 0.0f; } string strwaterdeep = this.HttpContext.Request.Params["waterdeep"] ?? "Empty"; if (!Helper.FloatTryParse(strwaterdeep, out waterdeep)) { waterdeep = 0.0f; } EGH01DB.Types.GroundType ground_type = new EGH01DB.Types.GroundType(); if (EGH01DB.Types.GroundType.GetByCode(db, ah.list_groundType, out ground_type)) { Point point = new Point(coordinates, ground_type, waterdeep, height); CadastreType type_cadastre = new CadastreType(); if (EGH01DB.Types.CadastreType.GetByCode(db, ah.list_cadastre, out type_cadastre)) { EGH01DB.Points.AnchorPoint anchor_point = new EGH01DB.Points.AnchorPoint(id, point, type_cadastre); if (EGH01DB.Points.AnchorPoint.Create(db, anchor_point, angel, distance)) { view = View("AnchorPoint", db); } else if (menuitem.Equals("AnchorPoint.Create.Cancel")) { view = View("AnchorPoint", db); } { } } } } } } catch (RGEContext.Exception e) { ViewBag.msg = e.message; } catch (Exception e) { ViewBag.msg = e.Message; } return(view); }