private void valiPipedata(GSOLayer layer) { txtMessage.Text = ""; if (layer != null) { GSOFeatureDataset featDataSet = layer.Dataset as GSOFeatureDataset; List <string> lstField = new List <string>(); List <string> listFieldType_Text = new List <string>(); for (int i = 0; i < featDataSet.FieldCount; i++) { string fieldName = featDataSet.GetField(i).Name; lstField.Add(fieldName); if (fields_types.ContainsKey(fieldName)) { string fieldType = fields_types[fieldName].ToString().ToUpper(); switch (featDataSet.GetField(i).Type) { case EnumFieldType.Text: if (fieldType != "string".ToUpper()) { txtMessage.Text += "" + fieldName + "数据类型不正确\r\n"; } listFieldType_Text.Add(fieldName); break; case EnumFieldType.INT32: if (fieldType != "int".ToUpper() && fieldType != "double".ToUpper()) { txtMessage.Text += "" + fieldName + "数据类型不正确\r\n"; } break; case EnumFieldType.INT16: if (fieldType != "int".ToUpper() && fieldType != "double".ToUpper()) { txtMessage.Text += "" + fieldName + "数据类型不正确\r\n"; } break; case EnumFieldType.Double: if (fieldType != "double".ToUpper()) { txtMessage.Text += "" + fieldName + "数据类型不正确\r\n"; } break; case EnumFieldType.Date: if (fieldType != "date".ToUpper()) { txtMessage.Text += "" + fieldName + "数据类型不正确\r\n"; } break; } } else { txtMessage.Text += "警告:配置文件中不包含\"" + fieldName + "\"字段\r\n"; } } if (!lstField.Contains("Deep1")) { txtMessage.Text += "Deep1字段不存在!\r\n"; } else { GSOFieldAttr fieldDeep1 = featDataSet.GetField("Deep1"); if (fieldDeep1.Type != EnumFieldType.Double && fieldDeep1.Type != EnumFieldType.Float && fieldDeep1.Type != EnumFieldType.INT16 && fieldDeep1.Type != EnumFieldType.INT32) { txtMessage.Text += "Deep1字段必须为数值类型\r\n"; } } if (!lstField.Contains("Deep2")) { txtMessage.Text += "Deep2字段不存在!\r\n"; } else { GSOFieldAttr fieldDeep1 = featDataSet.GetField("Deep2"); if (fieldDeep1.Type != EnumFieldType.Double && fieldDeep1.Type != EnumFieldType.Float && fieldDeep1.Type != EnumFieldType.INT16 && fieldDeep1.Type != EnumFieldType.INT32) { txtMessage.Text += "Deep2字段必须为数值类型\r\n"; } } if (!lstField.Contains("Diameter")) { txtMessage.Text += "Diameter字段不存在!\r\n"; } else { GSOFieldAttr fieldDeep1 = featDataSet.GetField("Diameter"); if (fieldDeep1.Type != EnumFieldType.Double && fieldDeep1.Type != EnumFieldType.Float && fieldDeep1.Type != EnumFieldType.INT16 && fieldDeep1.Type != EnumFieldType.INT32) { txtMessage.Text += "Diameter字段必须为数值类型\r\n"; } } if (!lstField.Contains("Handle")) { txtMessage.Text += "Handle字段不存在!\r\n"; } List <string> lstHandle = new List <string>(); for (int i = 0; i < layer.GetAllFeatures().Length; i++) { GSOFeature f = layer.GetAt(i); for (int j = 0; j < listFieldType_Text.Count; j++) { string fieldName = listFieldType_Text[j]; if (fields_types.ContainsKey(fieldName)) { if (f.GetValue(fieldName).ToString().Trim().Length > 8000) { txtMessage.Text += "ID为" + f.ID + "的要素的字段" + fieldName + "的长度大于8000 !\r\n"; } } } if (f.GetFieldAsFloat("Diameter") <= 0) { txtMessage.Text += "ID为" + f.ID + "\"Diameter\"字段中的值必须大于0 \r\n"; } if (!lstHandle.Contains(f.GetFieldAsString("Handle"))) { lstHandle.Add(f.GetFieldAsString("Handle")); } else { txtMessage.Text += "ID为" + f.ID + "的\"Handle\"字段中的值重复\r\n"; } } } }