private void CreatProjSystem() { AngularUnit prjLinearUnit = new AngularUnit(linearUnit.LinearUnitName, linearUnit.LinearUnitValue); foreach (NameValuePair projParam in projectionParam.ProjectParams) { if (projParam.Name == null) { projectionParam.CollectionAguments(); } } NameValuePair[] prjParams = projectionParam.ProjectParams; using (PrjStdsMapTableParser p = new PrjStdsMapTableParser()) { if (projectionParam.CurrentEnviPrjInfoArgDefs == null) { projectionParam.GetPrjNameItem(); } NameMapItem prjName = p.GetPrjNameItemByEnviName(projectionParam.CurrentEnviPrjInfoArgDefs.PrjId.ToString()); if (prjName == null) { MessageBox.Show("投影名错误!", "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } _projectionCoordSystem = new ProjectionCoordSystem(prjName, projectionParam.ProjectParams, prjLinearUnit); } _spatialReference = new SpatialReference(_geographicCoordSystem, _projectionCoordSystem); _spatialReference.Name = _spatialSystemName; }
/// <summary> /// 从界面数据表中获取参数信息 /// </summary> private void GetDataGridValue() { NameValuePair prjParam = null; int count = dgvParams.RowCount; _projectParams = new NameValuePair[count]; //这里原为count-1,是错误的 PrjStdsMapTableParser parser = new PrjStdsMapTableParser(); string name; double value; NameMapItem item; for (int i = 0; i < count; i++) //这里原为count-1,是错误的 { DataGridViewRow row = dgvParams.Rows[i]; name = row.Cells[0].Value.ToString(); //if (parser.GetPrjParamterItemByWktName(name) == null) // throw new Exception(); //if (row.Cells[1].Value == null) // throw new Exception(); try { item = parser.GetPrjParamterItemByWktName(name); value = double.Parse(row.Cells[1].Value.ToString()); prjParam = new NameValuePair(item, value); _projectParams[i] = prjParam; } catch { MessageBox.Show("请输入数字!", "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Warning); } } }
private void InitPrjName() { using (PrjStdsMapTableParser parser = new PrjStdsMapTableParser()) { if (parser.EnviPrjInfoArgDefs != null) { _enviPrjInfoArgDefs = parser.EnviPrjInfoArgDefs; for (int i = 2; i < _enviPrjInfoArgDefs.Length; i++) { cmbPrjName.Items.Add(_enviPrjInfoArgDefs[i].PrjName); } } } }
public void GetPrjNameItem() { string[] argNames = null; using (PrjStdsMapTableParser parser = new PrjStdsMapTableParser()) { for (int i = 2; i < _enviPrjInfoArgDefs.Length; i++) { if (_enviPrjInfoArgDefs[i].PrjName == cmbPrjName.Text) // prjName) { _currentEnviPrjInfoArgDef = _enviPrjInfoArgDefs[i]; //当前选定的投影参数数组 argNames = _currentEnviPrjInfoArgDef.Args; GetPrjArgNameList(argNames); break; } } } if (_currentEnviPrjInfoArgDef == null) { MessageBox.Show("投影参数名错误!", "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Warning); } }
/// <summary> /// 通过投影参数名数组获取投影参数名 /// </summary> /// <param name="argNames"></param> private void GetPrjArgNameList(string[] argNames) { int count; NameMapItem[] prjNames; using (PrjStdsMapTableParser parser = new PrjStdsMapTableParser()) { if (argNames[0] == "a") { count = argNames.Length - 2; prjNames = new NameMapItem[count]; //通过Envi名获取投影参数列表 for (int i = 0; i < count; i++) { prjNames[i] = parser.GetPrjParamterItemByEnviName(argNames[i + 2]); } if (prjNames == null) { return; } FillDataGrid(prjNames); } else if (argNames[0] == "r") { count = argNames.Length - 1; prjNames = new NameMapItem[count]; for (int i = 0; i < count; i++) { prjNames[i] = parser.GetPrjParamterItemByEnviName(argNames[i + 1]); } if (prjNames == null) { return; } FillDataGrid(prjNames); } } }