public static OverViewObject CreateOverViewObject(ProjectionInfo pInfo) { OverViewObject ov = new monitoringPage.OverViewObject(); ov.ProjectionInfo = pInfo; string pngfilename = Path.ChangeExtension(Path.Combine(DataPathHelper.ProjectionRootPath + pInfo.datapath), ".overview.png"); PrjEnvelopeItem prjEnv = new PrjEnvelopeItem("", new PrjEnvelope(pInfo.minx, pInfo.maxx, pInfo.miny, pInfo.maxy)); if (!File.Exists(pngfilename)) { return(null); } Core.DrawEngine.CoordEnvelope env = CoordEnvelopeFromPrj(prjEnv); Bitmap bmp = LoadImage(pngfilename); if (bmp == null || bmp.Height * bmp.Width > 1000000) { return(null); } if (env.Height <= 0 || env.Width <= 0 || env.Height * env.Width > 1600) { return(null); } ov.OverviewName = Path.GetFileNameWithoutExtension(pngfilename); ov.ProjectionInfo = pInfo; ov.Envelope = env; ov.Overview = bmp; return(ov); }
private static void AddRegionToNode(RadTreeNode node, PrjEnvelopeItem env) { RadTreeNode item = new RadTreeNode(env.ToString()); item.Tag = env; node.Nodes.Add(item); }
private void AddAoiToVectorHost(ISimpleVectorObjectHost host, PrjEnvelopeItem prjItem) { PrjEnvelope prjEnv = prjItem.PrjEnvelope; Core.DrawEngine.CoordEnvelope env = new Core.DrawEngine.CoordEnvelope(prjEnv.MinX, prjEnv.MaxX, prjEnv.MinY, prjEnv.MaxY); host.Add(new SimpleVectorObject(prjItem.Name, env)); }
public static InputArg ParseStatRegions(string regionxml) { if (string.IsNullOrWhiteSpace(regionxml)) { throw new ArgumentNullException("argXml", "参数文件为空"); } if (!File.Exists(regionxml)) { throw new FileNotFoundException("参数文件不存在" + regionxml); } try { XElement xml = XElement.Load(regionxml); InputArg arg = new InputArg(); PrjEnvelopeItem[] validEnvelopes = ParseEnvelopes(xml.Element("ValidEnvelopes")); if (validEnvelopes.Length != 0) { arg.ValidEnvelopes = validEnvelopes; } PrjEnvelopeItem selectedRegion = ParseEnvelope(xml.Element("SelectedRegion").Element("Envelope")); if (selectedRegion != null) { arg.SelectedRegionEnvelope = selectedRegion; } return(arg); } catch (Exception ex) { throw new Exception("解析投影输入参数文件失败" + ex.Message, ex); } }
private void btnAddEvp_Click(object sender, EventArgs e) { string evpName = txtRegionName.Text.Trim(); if (string.IsNullOrWhiteSpace(evpName)) { MsgBox.ShowInfo("请输入范围标识"); return; } foreach (PrjEnvelopeItem item in _envList) { if (item.Name == evpName) { MsgBox.ShowInfo("已存在名为" + evpName + "的区域范围名称,请重新输入!"); return; } } RasterProject.PrjEnvelope envelope = GetEnvelopeFromUI(); if (envelope.Width == 0 || envelope.Height == 0 || !CheckRegion(envelope.MinX, envelope.MaxX, -180, 180) || !CheckRegion(envelope.MinY, envelope.MaxY, -90, 90)) { MsgBox.ShowInfo("请输入正确的地理坐标范围值!"); return; } PrjEnvelopeItem env = new PrjEnvelopeItem(txtRegionName.Text, envelope); lstRegions.Items.Add(env.Name); _envList.Add(env); }
protected override void ApplyAttributesOfLayoutTemplate(ILayoutTemplate template) { string instanceIdentify = _argumentProvider.GetArg("OutFileIdentify") as string; if (instanceIdentify == "NCSI" || instanceIdentify == "NMCS") { string[] files = GetStringArray("SelectedPrimaryFiles"); RasterIdentify rstId = new RasterIdentify(files[0]); if (!string.IsNullOrWhiteSpace(rstId.RegionIdentify)) { DefinedRegionParse reg = new DefinedRegionParse(); BlockItemGroup blockGroup = reg.BlockDefined.FindGroup("积雪"); PrjEnvelopeItem envItem = blockGroup.GetPrjEnvelopeItem(rstId.RegionIdentify); if (envItem != null) { RasterProject.PrjEnvelope prjEnvelope = RasterProject.PrjEnvelope.CreateByCenter(envItem.PrjEnvelope.CenterX, envItem.PrjEnvelope.CenterY, 10, 10); ILayout layout = template.Layout; if (layout.Size.Width != 1000 || layout.Size.Height != 1000) { ChangeTemplateSize(layout, 1000, 1000); } _envelope = new Layout.GxdEnvelope(prjEnvelope.MinX, prjEnvelope.MaxX, prjEnvelope.MinY, prjEnvelope.MaxY); } } } }
private void btnAddRegion_Click(object sender, EventArgs e) { errorProvider1.Clear(); string name = textBox1.Text; double minx = doubleTextBox1.Value; double maxx = doubleTextBox2.Value; double miny = doubleTextBox3.Value; double maxy = doubleTextBox4.Value; PrjEnvelope env = new RasterProject.PrjEnvelope(minx, maxx, miny, maxy); if (string.IsNullOrWhiteSpace(name)) { errorProvider1.SetError(textBox1, "名字不能为空"); return; } if (env.IsEmpty || env.Width <= 0 || env.Height <= 0 || env.MinX < -180 || env.MaxX > 180 || env.MinY < -90 || env.MaxY > 90) { errorProvider1.SetError(panel2, "范围不合法"); return; } if (ContainItem(name)) { errorProvider1.SetError(textBox1, "已经含有该名字的范围定义"); return; } PrjEnvelopeItem item = new PrjEnvelopeItem(name, env); AddDefinedRegion(item); }
private void AddDefinedRegion(PrjEnvelopeItem item) { RadTreeNode node = new RadTreeNode(item.Name); node.Tag = item; _tree.Nodes.Add(node); _items.Add(item); }
private void AddDataOverView(ProjectionInfo pInfo) { string thumbnailFile = Path.ChangeExtension(Path.Combine(DataPathHelper.ProjectionRootPath + pInfo.datapath), ".overview.png"); PrjEnvelopeItem prjEnv = new PrjEnvelopeItem("", new PrjEnvelope(pInfo.minx, pInfo.maxx, pInfo.miny, pInfo.maxy)); OverViewObject ov = OverViewObject.CreateOverViewObject(pInfo); if (ov == null) { return; } _lstOverviews.Add(ov); }
private void btnAddRegion_Click(object sender, EventArgs e) { errorProvider1.Clear(); string name = textBox1.Text; string identify = txtIdentify.Text; PrjEnvelope env = GetEnvelopeFromUI(); if (string.IsNullOrWhiteSpace(name)) { errorProvider1.SetError(textBox1, "名字不能为空"); return; } if (env.IsEmpty || env.Width <= 0 || env.Height <= 0) { errorProvider1.SetError(radCenter, "范围不合法,不能为空或零"); return; } if (env.MinX < -180d) { errorProvider1.SetError(radCenter, "范围不合法,最小经度不能小于-180"); return; } if (env.MaxX > 180d) { errorProvider1.SetError(radCenter, "范围不合法,最大经度不能大于180"); return; } if (env.MinY < -90d) { errorProvider1.SetError(radCenter, "范围不合法,最小纬度不能小于-90"); return; } if (env.MaxY > 90d) { errorProvider1.SetError(radCenter, "范围不合法,最大纬度不能大于90"); return; } BlockItemGroup group = GetSelectedGroup(); if (group == null) { errorProvider1.SetError(panel1, "请选择或者添加一个分组"); return; } if (group.GetPrjEnvelopeItem(identify) != null) { errorProvider1.SetError(textBox1, "标识不能重复"); return; } PrjEnvelopeItem item = new PrjEnvelopeItem(name, env, identify); AddDefinedRegion(item); }
private void GetMapInfo(out PrjEnvelopeItem[] prjEnvelopeItem, out float resolutionX, out float resolutionY) { prjEnvelopeItem = null; resolutionX = 0; resolutionY = 0; if (rbAllFile.Checked) { resolutionX = ucPrjEnvelopes1.ResolutionX; resolutionY = ucPrjEnvelopes1.ResolutionY; prjEnvelopeItem = null; } else if (rbCenter.Checked) { resolutionX = ucPrjEnvelopes1.ResolutionX; resolutionY = ucPrjEnvelopes1.ResolutionY; if (_dstSpatialRef == null || _dstSpatialRef.ProjectionCoordSystem == null) { prjEnvelopeItem = ucPrjEnvelopes1.PrjEnvelopes; } else { PrjEnvelope env = GetPrjEnvelopeFromCenter(resolutionX, resolutionY); prjEnvelopeItem = new PrjEnvelopeItem[] { new PrjEnvelopeItem("AOI", env) }; } } else if (rbBlocks.Checked)//自定义分幅 { resolutionX = ucPrjEnvelopes1.ResolutionX; resolutionY = ucPrjEnvelopes1.ResolutionY; if (_dstSpatialRef == null || _dstSpatialRef.ProjectionCoordSystem == null) { prjEnvelopeItem = ucPrjEnvelopes1.PrjEnvelopes; } else { PrjEnvelopeItem[] geoItems = ucPrjEnvelopes1.PrjEnvelopes; prjEnvelopeItem = new PrjEnvelopeItem[geoItems.Length]; IProjectionTransform tran = ProjectionTransformFactory.GetProjectionTransform(SpatialReference.GetDefault(), _dstSpatialRef); for (int i = 0; i < geoItems.Length; i++) { double[] xs = new double[] { geoItems[i].PrjEnvelope.LeftTop.X, geoItems[i].PrjEnvelope.RightBottom.X }; double[] ys = new double[] { geoItems[i].PrjEnvelope.LeftTop.Y, geoItems[i].PrjEnvelope.RightBottom.Y }; tran.Transform(xs, ys); double minx = Math.Min(xs[0], xs[1]); double maxx = Math.Max(xs[0], xs[1]); double miny = Math.Min(ys[0], ys[1]); double maxy = Math.Max(ys[0], ys[1]); PrjEnvelope env = new PrjEnvelope(minx, maxx, miny, maxy); prjEnvelopeItem[i] = new PrjEnvelopeItem(geoItems[i].Name, env); } } } }
private XElement EnvelopeToXmlValue(PrjEnvelopeItem item) { if (item == null) { return(null); } return(new XElement("Envelope", new XAttribute("name", item.Name), new XAttribute("minx", item.PrjEnvelope.MinX), new XAttribute("maxx", item.PrjEnvelope.MaxX), new XAttribute("miny", item.PrjEnvelope.MinY), new XAttribute("maxy", item.PrjEnvelope.MaxY))); }
private void btnDelete_Click(object sender, EventArgs e) { RadTreeNode node = _tree.SelectedNode; if (node == null) { return; } PrjEnvelopeItem item = node.Tag as PrjEnvelopeItem; _items.Remove(item); _tree.Nodes.Remove(node); }
private void Editfile(string file, string outputPath) { Match match = _regex.Match(file); string fileRegion = match.Groups["region"].Value; string region = fileRegion.Replace("0S", "0D"); if (string.IsNullOrWhiteSpace(region)) { WriteLog("[失败]无法识别文件区域"); return; } PrjEnvelopeItem item = _group.GetPrjEnvelopeItem(region); if (item == null || item.PrjEnvelope == null) { WriteLog("[失败]区域" + region + "无法匹配"); return; } using (IRasterDataProvider raster = GeoDataDriver.Open(file) as IRasterDataProvider) { if (!(raster is ILdfDataProvider)) { WriteLog("[失败]源文件无法读取"); return; } } string destFile = Path.Combine(outputPath, Path.GetFileNameWithoutExtension(file) + "_XDT.LDF").Replace(fileRegion, region); if (File.Exists(destFile)) { WriteLog("[失败]目标文件已经存在" + destFile); return; } File.Copy(file, destFile, true); try { CoordEnvelope newEnv = new CoordEnvelope(item.PrjEnvelope.MinX + 0.005d, item.PrjEnvelope.MaxX - 0.005d, item.PrjEnvelope.MinY + 0.005d, item.PrjEnvelope.MaxY - 0.005d); using (IRasterDataProvider raster = GeoDataDriver.Open(destFile, RSS.Core.DF.enumDataProviderAccess.Update, null) as IRasterDataProvider) { (raster as ILdfDataProvider).Update(newEnv); (raster as ILdfDataProvider).IsStoreHeaderChanged = true; (raster as ILdfDataProvider).UpdateHeader(); } WriteLog("[成功],目标文件" + destFile); } catch (Exception ex) { WriteLog(ex.Message); File.Delete(destFile); } }
private static MosaicInputArg ParseMosaic(XElement mosaic) { if (mosaic == null) { return(null); } string outputdir = mosaic.Element("OutputDir").Value; PrjEnvelopeItem env = ParseEnvelope(mosaic.Element("Envelope")); MosaicInputArg mosaicArg = new MosaicInputArg(); mosaicArg.OutputDir = outputdir; mosaicArg.Envelope = env; return(mosaicArg); }
private void lstRegions_SelectedIndexChanged(object sender, EventArgs e) { if (lstRegions.SelectedItem == null) { return; } string name = lstRegions.SelectedItem.ToString(); PrjEnvelopeItem p = GetEnvelopeItemByName(name); if (p == null) { return; } txtRegionName.Text = p.Name; SetEnvelopeToUI(p.PrjEnvelope); }
/// <summary> /// FY3A_MERSI_GBAL_L1_20120808_0000_1000M_MS.HDF-> /// FY3A_MERSI_GBAL_GLL_L1_20120808_0000_1000M_MS_D.ldf /// </summary> /// <param name="inArg"></param> /// <param name="dataIdentify"></param> /// <returns></returns> private string CreateMosaicFilename(InputArg inArg, DataIdentify dataIdentify, string projectionIdentify, float resolution, string station, string dayOrNight) { PrjEnvelopeItem item = inArg.MosaicInputArg.Envelope; return(string.Format("{0}_{1}_{2}_{3}_{4}_{5}_{6}_{7}_{8}_{9}.ldf", dataIdentify.Satellite, dataIdentify.Sensor, item.Name, projectionIdentify, "L1", dataIdentify.OrbitDateTime.ToString("yyyyMMdd"), string.IsNullOrWhiteSpace(inArg.OrbitIdentify) ? "0000" : inArg.OrbitIdentify, projectionIdentify == "GLL" ? GLLResolutionIdentify(resolution) : ResolutionIdentify(resolution), station, dayOrNight )); }
private static PrjEnvelopeItem[] ParseEnvelopes(XElement xml) { List <PrjEnvelopeItem> items = new List <PrjEnvelopeItem>(); IEnumerable <XElement> els = xml.Elements("EnvelopeItem"); foreach (XElement item in els) { string name = item.Attribute("name").Value; PrjEnvelope env = ParseEnvelope(item); if (env != null) { PrjEnvelopeItem envItem = new PrjEnvelopeItem(name, env); items.Add(envItem); } } return(items.ToArray()); }
static void Main(string[] args) { string prjItemName = args[0]; double minX = double.Parse(args[1]); double maxX = double.Parse(args[2]); double minY = double.Parse(args[3]); double maxY = double.Parse(args[4]); PrjEnvelopeItem prjItem = new PrjEnvelopeItem(prjItemName, new GeoDo.RasterProject.PrjEnvelope(minX, maxX, minY, maxY)); string dataSet = args[5]; string locationFile = args[6]; string dataFile = args[7]; string outfname = args[8]; float outResolution = float.Parse(args[9]); MOD06DataProject.Project(prjItem, dataSet, locationFile, dataFile, outfname, outResolution); }
void _tree_SelectedNodeChanged(object sender, RadTreeViewEventArgs e) { RadTreeNode node = e.Node; if (node == null) { return; } if (node.Level == 1) { PrjEnvelopeItem item = node.Tag as PrjEnvelopeItem; if (item != null) { textBox1.Text = item.Name; txtIdentify.Text = item.Identify; SetEnvelopeToUI(item.PrjEnvelope); } } }
private PrjEnvelopeItem[] ParseEnvelopes(XElement xml) { List <PrjEnvelopeItem> items = new List <PrjEnvelopeItem>(); IEnumerable <XElement> els = xml.Elements("EnvelopeItem"); XAttribute attr = null; foreach (XElement item in els) { string name = item.Attribute("name").Value; string identify = (attr = item.Attribute("identify")) == null ? null : attr.Value; PrjEnvelope env = ParseEnvelope(item); if (env != null) { PrjEnvelopeItem envItem = new PrjEnvelopeItem(name, env, identify); items.Add(envItem); } } return(items.ToArray()); }
private void AddDataOverViewItem(ProjectionInfo pInfo) { string thumbnailFile = Path.ChangeExtension(Path.Combine(DataPathHelper.ProjectionRootPath + pInfo.datapath), ".overview.png"); PrjEnvelopeItem prjEnv = new PrjEnvelopeItem("", new PrjEnvelope(pInfo.minx.GetValueOrDefault(), pInfo.maxx.GetValueOrDefault(), pInfo.miny.GetValueOrDefault(), pInfo.maxy.GetValueOrDefault())); OverViewObject item = OverViewObject.CreateOverViewObject(pInfo); if (item == null) { return; } foreach (OverViewObject match in _lstOverviews) { if (match.ProjectionInfo.datapath == item.ProjectionInfo.datapath) { return; } } _lstOverviews.Add(item); }
private void btnSaveNewRegion_Click(object sender, EventArgs e) { string evpName = txtRegionName.Text.Trim(); if (string.IsNullOrWhiteSpace(evpName)) { MessageBox.Show("请输入范围标识"); return; } foreach (PrjEnvelopeItem item in _envList) { if (item.Name == evpName) { MessageBox.Show("已存在名为" + evpName + "的区域范围名称,请重新输入!"); return; } } RasterProject.PrjEnvelope env = new RasterProject.PrjEnvelope(dtbxMinX.Value, dtbxMaxX.Value, dtbxMinY.Value, dtbxMaxY.Value); if (env.Width <= 0 || env.Height <= 0 || env.MinX < -180 || env.MaxX > 180 || env.MinY < -90 || env.MaxY > 90) { MessageBox.Show("经纬度值超出有效值"); return; } if (env.MinX == env.MaxX || env.MinY == env.MaxY) { MessageBox.Show("范围最大最小值不能相等!"); return; } PrjEnvelopeItem newenv = new PrjEnvelopeItem(txtRegionName.Text, env); _envList.Add(newenv); cbxRegionlist.Items.Add(newenv.Name); cbxRegionlist.SelectedItem = newenv.Name; cbxRegionlist.Visible = true; txtRegionName.Visible = false; btnSaveNewRegion.Enabled = false; btnAddRegion.Enabled = true; btnCancelNewReg.Enabled = false; }
private void LoadThemeGraphRegion() { _btnSetThemeGraphRegion.Items.Clear(); ThemeGraphRegion region = ThemeGraphRegionSetting.GetThemeGraphRegion(_productIdentify); _btnSetThemeGraphRegion.Tag = region; if (region != null) { bool enable = region.Enable; int selectedIndex = region.SelectedIndex; PrjEnvelopeItem[] items = region.PrjEnvelopeItems; if (items != null) { for (int i = 0; i < items.Length; i++) { PrjEnvelopeItem item = items[i]; RadMenuItem menu = new RadMenuItem(); menu.Text = item.Name; menu.Tag = i; menu.Click += new EventHandler(menu_Click); if (enable && selectedIndex == i) { _btnSetThemeGraphRegion.Text = item.Name; menu.IsChecked = true; } _btnSetThemeGraphRegion.Items.Add(menu); } _btnSetThemeGraphRegion.Items.Add(new RadMenuSeparatorItem()); RadMenuItem cancelRegion = new RadMenuItem("取消范围应用"); cancelRegion.Tag = region; cancelRegion.Click += new EventHandler(cancelRegion_Click); _btnSetThemeGraphRegion.Items.Add(cancelRegion); } } _btnSetThemeGraphRegion.Items.Add(new RadMenuSeparatorItem()); RadMenuItem editRegion = new RadMenuItem("编辑范围"); editRegion.Click += new EventHandler(editRegion_Click); editRegion.Tag = region; _btnSetThemeGraphRegion.Items.Add(editRegion); }
private void AddDefinedRegion(PrjEnvelopeItem item) { RadTreeNode node = _tree.SelectedNode; if (node == null) { return; } if (node.Level == 0) { BlockItemGroup group = node.Tag as BlockItemGroup; group.Add(item); AddRegionToNode(node, item); } else if (node.Level == 1) { BlockItemGroup group = node.Parent.Tag as BlockItemGroup; group.Add(item); AddRegionToNode(node.Parent, item); } }
private void btnDelete_Click(object sender, EventArgs e) { RadTreeNode node = _tree.SelectedNode; if (node == null) { return; } if (node.Level == 0) { _groups.Remove(node.Tag as BlockItemGroup); _tree.Nodes.Remove(node); } else if (node.Level == 1) { PrjEnvelopeItem item = node.Tag as PrjEnvelopeItem; BlockItemGroup group = node.Parent.Tag as BlockItemGroup; group.Remove(item); node.Parent.Nodes.Remove(node); } }
private void AddDefaultRegions() { if (File.Exists(_path)) { InputArg arg = InputArg.ParseXml(_path); if (arg != null) { _xmlSelectedNode = arg.Bands; if (Directory.Exists(arg.InputDir)) { txtInDir.Text = arg.InputDir; } txtOutDir.Text = arg.OutputDir; if (arg.ValidEnvelopes != null && arg.ValidEnvelopes.Length > 0) { _envList = arg.ValidEnvelopes.ToList(); foreach (PrjEnvelopeItem item in _envList) { cbxRegionlist.Items.Add(item.Name); } } } } else { RasterProject.PrjEnvelope globalEnv = new RasterProject.PrjEnvelope(-180, 180, -90, 90); PrjEnvelopeItem globalPrjEnv = new PrjEnvelopeItem("Global", globalEnv); _envList.Add(globalPrjEnv); RasterProject.PrjEnvelope chinaEnv = new RasterProject.PrjEnvelope(65, 145, 10, 60); PrjEnvelopeItem chinaPrjEnv = new PrjEnvelopeItem("China", chinaEnv); _envList.Add(chinaPrjEnv); foreach (PrjEnvelopeItem env in _envList) { cbxRegionlist.Items.Add(env.Name); } cbxRegionlist.SelectedIndex = 1; } }
public void Add(PrjEnvelopeItem item) { int findIndex = -1; for (int i = 0; i < _prjEnvelopeItems.Count; i++) { if (_prjEnvelopeItems[i].Name == item.Name) { findIndex = i; } } if (findIndex == -1) { _prjEnvelopeItems.Add(item); _selectedIndex = _prjEnvelopeItems.Count - 1; } else { _prjEnvelopeItems[findIndex] = item; _selectedIndex = findIndex; } Enable = true; }
public static void Project(PrjEnvelopeItem prjItem, string dataSet, string locationFile, string dataFile, string outFilename, float outResolution) { IRasterDataProvider mainRaster = null; IRasterDataProvider locationRaster = null; try { string[] openArgs = new string[] { "datasets=" + dataSet }; mainRaster = RasterDataDriver.Open(dataFile, openArgs) as IRasterDataProvider; string[] locationArgs = new string[] { "datasets=" + "Latitude,Longitude", "geodatasets=" + "Latitude,Longitude" }; locationRaster = RasterDataDriver.Open(locationFile, locationArgs) as IRasterDataProvider; if (locationRaster == null || locationRaster.BandCount == 0) { return; } HDF4FilePrjSettings setting = new HDF4FilePrjSettings(); setting.LocationFile = locationRaster; setting.OutFormat = "LDF"; setting.OutResolutionX = setting.OutResolutionY = outResolution; Dictionary <string, double> exargs = new Dictionary <string, double>(); double invalidValue; if (double.TryParse(GetDefaultNullValue(mainRaster.DataType), out invalidValue)) { exargs.Add("FillValue", invalidValue); setting.ExtArgs = new object[] { exargs }; } HDF4FileProjector projector = new HDF4FileProjector(); GeoDo.RasterProject.PrjEnvelope mainPrj; projector.ComputeDstEnvelope(mainRaster, SpatialReference.GetDefault(), out mainPrj, null); GeoDo.RasterProject.PrjEnvelope dstmainPrj = GeoDo.RasterProject.PrjEnvelope.Intersect(prjItem.PrjEnvelope, mainPrj); if (dstmainPrj != null) { setting.OutEnvelope = dstmainPrj; setting.OutPathAndFileName = outFilename; projector.Project(mainRaster, setting, SpatialReference.GetDefault(), null); } else { return; } } catch (System.Exception ex) { string fname = Path.GetFileName(dataFile); string label = null; if (fname.Contains("MOD")) { label = "MOD06ProjectError"; } else if (fname.Contains("MYD")) { label = "MYD06ProjectError"; } else { label = "AIRSProjectError"; } LogFactory.WriteLine(label, "投影失败!" + ";" + dataFile + ";" + dataSet + ";" + outResolution.ToString("f2") + ";" + outFilename + ";" + ex.Message); } finally { if (mainRaster != null) { mainRaster.Dispose(); mainRaster = null; } if (locationRaster != null) { locationRaster.Dispose(); locationRaster = null; } } }
private IExtractResult IMGAlgorithm() { object obj = _argumentProvider.GetArg("ThemeGraphyGenerator"); if (obj == null) { return(null); } IThemeGraphGenerator tgg = obj as IThemeGraphGenerator; if (tgg == null) { return(null); } string aoiTemplateName = string.Empty; Dictionary <string, int[]> aoi = null; GetAOI(out aoiTemplateName, out aoi); string outFileIdentify = GetStringArgument("OutFileIdentify"); string templatName = GetStringArgument("ThemeGraphTemplateName"); string[] files = GetStringArray("SelectedPrimaryFiles"); if (files == null || files.Length == 0) { return(null); } foreach (string item in files) { if (!File.Exists(item)) { return(null); } } //计算网络二值图dat文件 string dir = AppDomain.CurrentDomain.BaseDirectory + "SystemData\\RasterTemplate\\China_LandRaster.dat"; if (!File.Exists(dir)) { return(null); } string datFileName = GenerateNetImageFile(dir, files[0]); if (string.IsNullOrEmpty(datFileName)) { return(null); } string colorTabelName = GetColorTableName("colortablename"); if (outFileIdentify == "NSNI") //需要限定输出范围 { RasterIdentify rstId = new RasterIdentify(files[0]); if (!string.IsNullOrWhiteSpace(rstId.RegionIdentify)) { DefinedRegionParse reg = new DefinedRegionParse(); BlockItemGroup blockGroup = reg.BlockDefined.FindGroup("积雪"); PrjEnvelopeItem envItem = blockGroup.GetPrjEnvelopeItem(rstId.RegionIdentify); if (envItem != null) { RasterProject.PrjEnvelope prjEnvelope = RasterProject.PrjEnvelope.CreateByCenter(envItem.PrjEnvelope.CenterX, envItem.PrjEnvelope.CenterY, 10, 10); (tgg as CmaThemeGraphGenerator).SetEnvelope(new Layout.GxdEnvelope(prjEnvelope.MinX, prjEnvelope.MaxX, prjEnvelope.MinY, prjEnvelope.MaxY)); (tgg as ThemeGraphGenerator).IsFitToTemplateWidth = false; } } } tgg.Generate(datFileName, templatName, null, null, outFileIdentify, colorTabelName); string resultFilename = tgg.Save(); if (string.IsNullOrEmpty(resultFilename)) { return(null); } return(new FileExtractResult(outFileIdentify, resultFilename)); }