private void btn_Save_Click(object sender, EventArgs e) { Recordset objRt = null; try { btn_Draw.Enabled = true; objRt = (m_Application.Workspace.Datasources["Resource"].Datasets["ArtCraftTable"] as DatasetVector).GetRecordset(false, CursorType.Dynamic); switch (m_Type) { case WorkflowEditType.New: Dictionary <string, object> dic = new Dictionary <string, object>(); dic.Add("CraftName", txt_Name.Text.Trim()); dic.Add("Note", rtb_Description.Text.Equals(m_Tip) ? "" : rtb_Description.Text); dic.Add("CraftID", (objRt.RecordCount + 1).ToString()); dic.Add("PlaySpeed", txt_PlaySpeed.Text); dic.Add("Symbol", btn_SelectColor.Text + ',' + btn_SelectColor.Tag); objRt.AddNew(null, dic); objRt.Update(); break; case WorkflowEditType.Edit: objRt.Edit(); objRt.SetFieldValue("CraftName", txt_Name.Text.Trim()); objRt.SetFieldValue("Note", rtb_Description.Text.Equals(m_Tip) ? "" : rtb_Description.Text); objRt.SetFieldValue("CraftID", objRt.RecordCount + 1); objRt.SetFieldValue("PlaySpeed", txt_PlaySpeed.Text); objRt.SetFieldValue("Symbol", btn_SelectColor.Text + ',' + btn_SelectColor.Tag); objRt.Update(); break; } Layer3DDataset layer = m_SceneControl.Scene.Layers[txt_Name.Text + "@SpaceData"] as Layer3DDataset; for (int i = 0; i < (layer.Theme as Theme3DUnique).Count; i++) { Theme3DUniqueItem item = (layer.Theme as Theme3DUnique)[i]; item.IsVisible = false; } m_Application.MessageBox.Show("保存成功!"); } catch (Exception ex) { Log.OutputBox(ex); } finally { if (objRt != null) { objRt.Close(); objRt.Dispose(); } } }
private void btn_Commit_Click(object sender, EventArgs e) { Recordset objRt = null; try { if (chkTheme.SelectedItem == null) { m_Application.MessageBox.Show(Message); return; } Layer3DDataset layer3DDataset = (chkTheme.SelectedItem as Label).Tag as Layer3DDataset; objRt = (layer3DDataset.Dataset as DatasetVector).GetRecordset(false, CursorType.Dynamic); foreach (DataGridViewRow row in dg_Data.Rows) { int id = Convert.ToInt32(row.HeaderCell.Value); if (objRt.SeekID(id) && objRt.Edit()) { foreach (DataGridViewColumn column in dg_Data.Columns) { switch (objRt.GetFieldInfos()[column.Name].Type) { case FieldType.WText: objRt.SetFieldValue(column.Name, Convert.ToString(row.Cells[column.Name].Value)); break; case FieldType.Double: objRt.SetFieldValue(column.Name, Convert.ToDouble(row.Cells[column.Name].Value)); break; case FieldType.Int32: objRt.SetFieldValue(column.Name, Convert.ToInt32(row.Cells[column.Name].Value)); break; } } objRt.Update(); } } m_SceneControl.Refresh(); } catch (Exception ex) { Log.OutputBox(ex); } finally { if (objRt != null) { objRt.Close(); objRt.Dispose(); } } }
private void btnGetCamera_Click(object sender, EventArgs e) { Recordset objRt = null; try { if (dg_Data.SelectedRows.Count == 0) { m_Application.MessageBox.Show("未选中数据!"); return; } DataGridViewRow row = dg_Data.SelectedRows[0]; ResourceTypeData data = cmbDeviceType.SelectedItem as ResourceTypeData; objRt = (m_Application.Workspace.Datasources["Resource"].Datasets[data.DatasetName] as DatasetVector).GetRecordset(false, CursorType.Dynamic); if (objRt.SeekID(Convert.ToInt32(row.Tag)) && objRt.Edit()) { objRt.SetFieldValue("Longitude", m_SceneControl.Scene.Camera.Longitude); objRt.SetFieldValue("Latitude", m_SceneControl.Scene.Camera.Latitude); objRt.SetFieldValue("Altitude", m_SceneControl.Scene.Camera.Altitude); objRt.SetFieldValue("Heading", m_SceneControl.Scene.Camera.Heading); objRt.SetFieldValue("Tilt", m_SceneControl.Scene.Camera.Tilt); if (objRt.Update()) { m_Application.MessageBox.Show("视角保存成功!"); } else { m_Application.MessageBox.Show("视角保存失败!"); } } } catch (Exception ex) { Log.OutputBox(ex); } finally { if (objRt != null) { objRt.Close(); objRt.Dispose(); } } }
//更新数据集内容 private void UpdateLocationData(DatasetVector dtVector) { if (dtVector == null) { return; } try { Recordset recdst = dtVector.GetRecordset(true, CursorType.Dynamic); if (recdst != null) { recdst.Batch.Begin(); //获取设备编码 string strTableName = "T_BUSI_DEVICE"; string strSQL = string.Format("select device_bm,device_carrier_lx from {0} where substr(device_user_bm,0,2)='32'", strTableName); DataSet dtSet = DbHelperOra.Query(DbHelperOra.connectionString_172, strSQL); if (dtSet != null && dtSet.Tables.Count > 0) { DataTable dtTable = dtSet.Tables[0]; foreach (DataRow dr in dtTable.Rows) { string strBM = string.Format("{0}", dr[0]); string strZTLX = string.Format("{0}", dr[1]); //获取坐标点 GeoPoint geoPt = GetGeoPoint(); // if (geoPt != null) { if (recdst.AddNew(geoPt)) { recdst.SetFieldValue("device_bm", strBM); recdst.SetFieldValue("device_ztlx", strZTLX); } } } } recdst.Batch.Update(); } } catch { } }
private DatasetVector DatasetConvertRegionToLine(DatasetVector dtVector2) { DatasetVector dtVector = null; if (dtVector2 != null) { DatasetVectorInfo dvi = new DatasetVectorInfo(); dvi.Name = m_selLayer.Dataset.Datasource.Datasets.GetAvailableDatasetName("C_geoLine"); dvi.Type = DatasetType.Line; //DatasetVector dtVector = m_selLayer.Dataset.Datasource.Datasets.Create(dvi); foreach (FieldInfo fi in dtVector2.FieldInfos) { if (dtVector.FieldInfos.IndexOf(fi.Name) < 0 && !fi.IsSystemField) { dtVector.FieldInfos.Add(fi.Clone()); } } Recordset recdst = dtVector.GetRecordset(true, CursorType.Dynamic); recdst.Batch.Begin(); try { Recordset recdst2 = dtVector2.GetRecordset(false, CursorType.Static); while (!recdst2.IsEOF) { GeoRegion geoR = recdst2.GetGeometry() as GeoRegion; if (geoR != null) { GeoLine geoLine = geoR.ConvertToLine(); recdst.AddNew(geoLine); foreach (FieldInfo fi in dtVector2.FieldInfos) { if (dtVector.FieldInfos.IndexOf(fi.Name) > -1 && !fi.IsSystemField) { recdst.SetFieldValue(fi.Name, recdst2.GetFieldValue(fi.Name)); } } geoR.Dispose(); } recdst2.MoveNext(); } recdst2.Dispose(); } catch { } recdst.Batch.Update(); recdst.Dispose(); } return(dtVector); }
public void AddModel_Click(Point3D Point3D, int ModelIndex, string strID, string strNOID) { AddPointToDatasets(Point3D, ModelIndex, strID, strNOID); Datasource datasource = m_workspace.Datasources[0]; DatasetVector pointDataset = datasource.Datasets["Point3D"] as DatasetVector; Recordset recordset = pointDataset.GetRecordset(false, CursorType.Dynamic); GeoPoint3D geopoint3D = new GeoPoint3D(Point3D); GeoStyle3D geoStyle = new GeoStyle3D(); geoStyle.MarkerSymbolID = UserHelper.Marker3DSymbolID[ModelIndex]; geoStyle.IsMarkerSizeFixed = false; geoStyle.MarkerSize = 1; geoStyle.Marker3DScaleX = 0.03; geoStyle.Marker3DScaleY = 0.03; geoStyle.Marker3DScaleZ = 0.08; geoStyle.IsMarker3D = true; geoStyle.AltitudeMode = AltitudeMode.RelativeToGround; geopoint3D.Style3D = geoStyle; recordset.MoveLast(); recordset.AddNew(geopoint3D); recordset.SetFieldValue(m_filedName, strID); recordset.Update(); recordset.Dispose(); m_layer3DPoint.IsSelectable = false; m_layer3DPoint.UpdateData(); m_SceneControl.Scene.Refresh(); //AddKmlLayer(); //GeoPlacemark geoPlacemark = new GeoPlacemark(); //m_geoModel = new GeoModel(); //m_geoModel.FromFile(UserHelper.sModelName[ModelIndex]); ////人物模型朝向前进方向,如果原始方向一致则不需要旋转。 //m_geoModel.Style3D = m_style3D; //m_geoModel.RotationZ = 180; //m_geoModel.ScaleX = 0.3; //m_geoModel.ScaleY = 0.3; //m_geoModel.ScaleZ = 0.3; //m_geoModel.Position = new Point3D(Point3D.X, Point3D.Y, Point3D.Z); //geoPlacemark.Geometry = m_geoModel; //Feature3Ds feture3Ds = m_LayerKML.Features; //Feature3D feature = new Feature3D(); //feature.Geometry = geoPlacemark; //feature.Description = strID; //feature.Name = feature.Description; //feture3Ds.Add(feature); //feture3Ds.ToKMLFile(m_LayerKML.DataName); //m_LayerKML.UpdateData(); }
private void AddPointToDatasets(Point3D Point3D, int ModelIndex, string strID, string strNOID) { CreateDatasets(); try { Datasource datasource = m_workspace.Datasources[0]; DatasetVector pointDataset = datasource.Datasets[UserHelper.sDeviceName[ModelIndex]] as DatasetVector; if (pointDataset != null) { GeoPoint geoPoint = new GeoPoint(Point3D.X, Point3D.Y); Recordset recordset = pointDataset.GetRecordset(false, CursorType.Dynamic); recordset.MoveLast(); recordset.AddNew(geoPoint); recordset.SetFieldValue(m_filedName, strID); recordset.Update(); recordset.Close(); recordset.Dispose(); } m_MapControl.Map.Refresh(); DatasetVector textDataset = datasource.Datasets[UserHelper.sTextName] as DatasetVector; if (textDataset != null) { Recordset textRecordset = textDataset.GetRecordset(false, CursorType.Dynamic); TextPart part = new TextPart(); part.Text = strNOID; Point2D point2D = new Point2D(Point3D.X, Point3D.Y); part.AnchorPoint = point2D; GeoText geoText = new GeoText(part); geoText.TextStyle.ForeColor = Color.Green; geoText.TextStyle.FontHeight = 8; textRecordset.MoveLast(); textRecordset.AddNew(geoText); textRecordset.Update(); textRecordset.Close(); textRecordset.Dispose(); } m_MapControl.Map.Refresh(); } catch (Exception e) { MessageBox.Show(e.Message); } }
private void button1_Click(object sender, EventArgs e) { try { if (recordset.SetFieldValue("界址点号", textBox1.Text.ToString())) { MessageBox.Show("修改成功"); } recordset.Update(); this.Hide(); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } }
private void button1_Click(object sender, EventArgs e) { try { if (zdh.Text.Length != 0) { object value = getvalue(recordset.GetFieldInfos()[label_zdh.Text.Remove(label_zdh.Text.Length - 1)].Type, zdh.Text); recordset.SetFieldValue(label_zdh.Text.Remove(label_zdh.Text.Length - 1), value); } if (tdlylb.Text.Length != 0) { object value = getvalue(recordset.GetFieldInfos()[label_tdlylb.Text.Remove(label_tdlylb.Text.Length - 1)].Type, tdlylb.Text); recordset.SetFieldValue(label_tdlylb.Text.Remove(label_tdlylb.Text.Length - 1), value); } if (qlr.Text.Length != 0) { object value = getvalue(recordset.GetFieldInfos()[label_qlr.Text.Remove(label_qlr.Text.Length - 1)].Type, qlr.Text); recordset.SetFieldValue(label_qlr.Text.Remove(label_qlr.Text.Length - 1), value); } if (xzqh.Text.Length != 0) { object value = getvalue(recordset.GetFieldInfos()[label_qh.Text.Remove(label_qh.Text.Length - 1)].Type, xzqh.Text); recordset.SetFieldValue(label_qh.Text.Remove(label_qh.Text.Length - 1), value); } if (frdb.Text.Length != 0) { object value = getvalue(recordset.GetFieldInfos()[label_frdb.Text.Remove(label_frdb.Text.Length - 1)].Type, frdb.Text); recordset.SetFieldValue(label_frdb.Text.Remove(label_frdb.Text.Length - 1), value); } if (sfz1.Text.Length != 0) { object value = getvalue(recordset.GetFieldInfos()[label_sfz.Text.Remove(label_sfz.Text.Length - 1)].Type, sfz1.Text); recordset.SetFieldValue(label_sfz.Text.Remove(label_sfz.Text.Length - 1), value); } if (tel1.Text.Length != 0) { object value = getvalue(recordset.GetFieldInfos()[lable_tel.Text.Remove(lable_tel.Text.Length - 1)].Type, tel1.Text); recordset.SetFieldValue(lable_tel.Text.Remove(lable_tel.Text.Length - 1), value); } MessageBox.Show("修改成功"); recordset.Update(); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } }
private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e) { try { Recordset rec = mDataVec.GetRecordset(false, CursorType.Dynamic); int Rowindex = e.RowIndex; //获取修改记录的行索引 int Colindex = e.ColumnIndex; //获取修改记录的列索引 rec.MoveTo(Rowindex); //记录集移到当前索引 object changevalue = dataGridView1.Rows[Rowindex].Cells[Colindex].Value; //获取修改之后的cell值 if (!rec.Dataset.FieldInfos[Colindex].IsSystemField) { rec.Edit();//编辑记录集中该行记录 rec.SetFieldValue(Colindex, changevalue); rec.Update(); } } catch (Exception) { throw; } }
//规范化数据-BUSINESS_ID private void FormatData() { DatasetVector dtVector = GetSCZT(); if (dtVector != null) { string strBS_ID = m_strBusiness_id; string strFilter = string.Format(" length({0})=5", strBS_ID); Recordset recdst = dtVector.Query(strFilter, CursorType.Dynamic); if (recdst.RecordCount > 0) { int iDex = recdst.GetFieldInfos().IndexOf(strBS_ID); recdst.Batch.Begin(); while (!recdst.IsEOF) { string strValue = string.Format("0{0}", recdst.GetString(iDex)); recdst.SetFieldValue(iDex, strValue); recdst.MoveNext(); } recdst.Batch.Update(); MessageBox.Show("规范数据完毕"); } } }
private void btnSetCamera_Click(object sender, EventArgs e) { Recordset objRt = null; try { if (lst_Items.SelectedItem == null) { m_Application.MessageBox.Show("请选择分段数据!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } int id = Convert.ToInt32((lst_Items.SelectedItem as Label).Tag); objRt = (m_Application.Workspace.Datasources["SpaceData"].Datasets[txt_Name.Text.Trim()] as DatasetVector).GetRecordset(false, CursorType.Dynamic); objRt.MoveTo(id); objRt.Edit(); objRt.SetFieldValue("Longitude", m_SceneControl.Scene.Camera.Longitude.ToString()); objRt.SetFieldValue("Latitude", m_SceneControl.Scene.Camera.Latitude.ToString()); objRt.SetFieldValue("Altitude", m_SceneControl.Scene.Camera.Altitude.ToString()); objRt.SetFieldValue("Tilt", m_SceneControl.Scene.Camera.Tilt.ToString()); objRt.SetFieldValue("Heading", m_SceneControl.Scene.Camera.Heading.ToString()); objRt.SetFieldValue("Time", txt_PlaySpeed.Text); objRt.Update(); (m_lstItems[lst_Items.SelectedIndex] as Label).Text = (lst_Items.SelectedItem as Label).Text.Split('(')[0]; lst_Items.DataSource = null; lst_Items.DataSource = m_lstItems; lst_Items.DisplayMember = "Text"; } catch (Exception ex) { Log.OutputBox(ex); } finally { if (objRt != null) { objRt.Close(); objRt.Dispose(); } } }
private void insertData() { #region 属性记录补登 //文件上传成功后,文件表插入成功后,更新属性表记录 //获得用于操作的两个数据集 DatasetVector gkfqdDatasetVector = (DatasetVector)gk01dDatasource.Datasets["BG" + gkfqd.Common.DbUse.GetTownCode(textBox4.Text)]; DatasetVector tempDatasetVector = (DatasetVector)gk01dDatasource.Datasets["temp_gkfqd"]; string strSmid = gk01dDataGridViewRow.Cells["SMID"].Value.ToString();//获取smid值 // 构造一个查询参数对象,查询选中的记录 QueryParameter para = new QueryParameter(); para.AttributeFilter = "SMID = " + strSmid; para.CursorType = CursorType.Dynamic; Recordset tempRecordset = tempDatasetVector.Query(para); Recordset gkfqdRecordset = gkfqdDatasetVector.GetRecordset(false, CursorType.Dynamic); //判断添加地块在目标图层是否存在 标记 Boolean flag = false; //临时图层到正式图层用smid string getSmid = ""; if (gkfqdRecordset == null) { flag = false; } else if (gkfqdRecordset.RecordCount > 0) { for (int i = 0; i <= gkfqdRecordset.RecordCount; i++) { gkfqdRecordset.MoveTo(i); if (gkfqdRecordset.GetGeometry().Bounds.Equals(tempRecordset.GetGeometry().Bounds)) { flag = true; break; } } } if (!flag) { //非面数据不能导入 if (tempRecordset.GetGeometry().GetType().Name.ToString() != "GeoRegion") { MessageBox.Show("导入图斑不是面数据,不能导入,请重新选择!"); return; } //------以下为属性字段添加 //项目所在县 if (textBox4.Text == "") { MessageBox.Show("请输入项目所在县!"); return; } //项目名称 if (textBox2.Text == "") { MessageBox.Show("请输入项目名称!"); return; } //备注 if (textBox1.Text == "") { MessageBox.Show("请输入备注!"); return; } //地块编号 if (textBox3.Text == "") { MessageBox.Show("请输入地块编号!"); return; } if (button1.Text != "更新") { //查询重复项目名称 sqlQuery.Clear(); sqlQuery.Append(" SELECT DKBH FROM " + "BG" + gkfqd.Common.DbUse.GetTownCode(textBox4.Text)); sqlQuery.Append(" WHERE DKBH ='" + textBox3.Text + "'"); gkfqd.Common.DbUse.GetOleDbconnection().Close(); gkfqd.Common.DbUse.GetOleDbconnection().Open(); dataSet.Clear(); OleDbDataAdapter MyAdapter = new OleDbDataAdapter(sqlQuery.ToString(), gkfqd.Common.DbUse.GetOleDbconnection()); MyAdapter.Fill(dataSet); gkfqd.Common.DbUse.GetOleDbconnection().Close(); if (dataSet.Tables[0].Rows.Count != 0) { MessageBox.Show("该地块编号已经存在,请重新录入!"); return; } } //临时图层到正式图层赋值 gkfqdRecordset.AddNew(tempRecordset.GetGeometry()); //所属复垦项目名称 主键 gkfqdRecordset.SetFieldValue("FKXMMC", textBox2.Text); //地块编号 gkfqdRecordset.SetFieldValue("DKBH", textBox3.Text); //备注 gkfqdRecordset.SetFieldValue("BZ", textBox1.Text); //项目所在县名 gkfqdRecordset.SetFieldValue("XMSZXM", textBox4.Text); gkfqdRecordset.Update(); //插入记录成功后防止再次点击插入设置按钮不可用 button1.Enabled = false; } else { MessageBox.Show("该图斑已经存在,请确认或重新选择!"); tempRecordset.Dispose(); gkfqdRecordset.Dispose(); return; } tempRecordset.Dispose(); gkfqdRecordset.Dispose(); gk011 frmGk011; frmGk011 = (gk011)this.Owner; frmGk011.RefreshDataGridView(); MessageBox.Show("导入成功!"); #endregion }
//private void CreatePointDataset(string tableName) //{ // Workspace workspace = new Workspace(); // DatasourceConnectionInfo info = new DatasourceConnectionInfo(); // Datasource datasource = GetDbDatasource(workspace, info); // var datasetVector = (DatasetVector)datasource.Datasets[tableName]; // if (datasetVector == null) // { // CreateDataset(datasource, DatasetType.Point, tableName); // } // //只取了数据结构,没有取数据 // var recordset = datasetVector.GetRecordset(true, SuperMap.Data.CursorType.Dynamic); // recordset.Edit(); // recordset.fi //} private void InsertRecordSetToDb(string shapeFieldName, string tableName) { Workspace workspace = new Workspace(); DatasourceConnectionInfo info = new DatasourceConnectionInfo(); var filePath = $"{Directory.GetCurrentDirectory()}\\{Guid.NewGuid().ToString()}"; var files = new List <string> { $"{filePath}.udb", $"{filePath}.udd" }; Datasource datasource = GetDbDatasource(workspace, info); if (datasource != null) { //临时数据源 DatasourceConnectionInfo tempInfo = new DatasourceConnectionInfo(); //设置数据源连接的引擎类型 tempInfo.EngineType = EngineType.UDB; tempInfo.Alias = tableName; tempInfo.Server = filePath; // 创建/打开数据库数据源 Datasource tempDatasource = workspace.Datasources.Create(tempInfo); Recordset recordset = null, tempRecordset = null; if (tempDatasource != null) { ImportResult result = ImportShpToTemp(shapeFieldName, tempDatasource, tableName); if (result.FailedSettings.Length == 0) { Console.WriteLine($"导入{shapeFieldName}成功!"); try { for (int index = 0; index < tempDatasource.Datasets.Count; index++) { DatasetVector tempDatasetVector = (DatasetVector)tempDatasource.Datasets[index]; tempRecordset = tempDatasetVector.GetRecordset(false, SuperMap.Data.CursorType.Dynamic); //没有数据 if (tempRecordset.RecordCount == 0) { continue; } var tempFieldInfos = tempDatasetVector.FieldInfos; //注意:数据集是手工录入的,不是超图sdk生成的,所以不能删除数据集 //如果更新数据集中的记录,则应该操纵记录集(删除、修改、新增) var datasetVector = (DatasetVector)datasource.Datasets[tableName]; if (datasetVector == null) { CreateDataset(datasource, DatasetType.Point, tableName); //throw new Exception($"不存在数据集名称为{tableName}的数据集!"); } //删去之前的所有记录 //datasetVector.GetRecordset(false, SuperMap.Data.CursorType.Dynamic).DeleteAll(); //只取了数据结构,没有取数据 recordset = datasetVector.GetRecordset(true, SuperMap.Data.CursorType.Dynamic); //设置批量提交 // 设置批量更新的限度为5000,注意一定要在开始批量更新前设置MaxRecordCount! recordset.Batch.MaxRecordCount = 500; // 开始批量更新,当添加到设置的MaxRecordCount的下一条记录时,将会将MaxRecordCount条记录自动提交到数据库中。 recordset.Batch.Begin(); tempRecordset.MoveFirst(); //遍历临时记录集 for (Int32 i = 0; i < tempRecordset.RecordCount; i++) { //往mysql新增记录 SuperMap.Data.Geometry geoPoint = tempRecordset.GetGeometry(); recordset.AddNew(geoPoint); //SeekID:在记录中搜索指定 ID 号的记录,并定位该记录为当前记录。 recordset.MoveLast(); foreach (SuperMap.Data.FieldInfo fileInfo in tempFieldInfos) { if (!fileInfo.IsSystemField && IsHaveField(datasetVector.FieldInfos, fileInfo.Name)) { recordset.Edit(); recordset.SetFieldValue(fileInfo.Name, tempRecordset.GetFieldValue(fileInfo.Name)); Object valueID = recordset.GetFieldValue(fileInfo.Name); } } //处理业务数据 tempRecordset.MoveNext(); //recordset.Update(); } // 使用批量更新的Update,提交没有自动提交的记录 recordset.Batch.Update(); } } catch (Exception ex) { throw ex; } finally { //示例程序BatchAdd说明要释放记录集 if (recordset != null) { recordset.Dispose(); } if (tempRecordset != null) { tempRecordset.Dispose(); } } } else { throw new Exception($"导入{shapeFieldName}失败!"); } } else { throw new Exception($"创建临时数据源{filePath}失败!"); } } // 释放工作空间资源 info.Dispose(); workspace.Dispose(); foreach (var file in files) { if (File.Exists(file)) { File.Delete(file); } } MessageBox.Show("成功!"); }
public void run() { Recordset rc = dv.GetRecordset(false, CursorType.Dynamic); Dictionary <int, Feature> feas = rc.GetAllFeatures(); foreach (KeyValuePair <int, Feature> item in feas) { GeoModel gm = item.Value.GetGeometry() as GeoModel; Console.WriteLine("==" + gm.Position + "=="); GeoModel model = new GeoModel(); model.Position = gm.Position; foreach (Mesh m in gm.Meshes) { if (m.Material.TextureFile.Length > 1) { //Console.WriteLine(m.Material.TextureFile.ToString()); Point3Ds p3ds = new Point3Ds(); for (int i = 0; i < m.Vertices.Length; i += 3) { bool repition = false; foreach (Point3D p in p3ds) { if (p.X == m.Vertices[i] && p.Y == m.Vertices[i + 1] && p.Z == m.Vertices[i + 2]) { repition = true; } } if (!repition) { p3ds.Add(new Point3D(m.Vertices[i], m.Vertices[i + 1], m.Vertices[i + 2])); } } foreach (Point3D p3d in p3ds) { Console.WriteLine(string.Format(" {0},{1},{2}", p3d.X, p3d.Y, p3d.Z)); scene.TrackingLayer.Add(new GeoPoint3D(p3d.X, p3d.Y, p3d.Z), ""); } //model.Meshes.Add(MakeMeshPot(p3ds)); Mesh mesh = new Mesh(m); mesh.Material.TextureFile = @".\78310a55b319ebc41f7810198326cffc1e171629.png"; model.Meshes.Add(mesh); #region 写属性表 Dictionary <string, double> fields = new Dictionary <string, double>(); fields.Add("FaceMeshCenterX", model.Position.X); fields.Add("FaceMeshCenterY", model.Position.Y); fields.Add("FaceMeshCenterZ", model.Position.Z); fields.Add("FaceMeshLx", p3ds.leftbottom().X); fields.Add("FaceMeshLy", p3ds.leftbottom().Y); fields.Add("FaceMeshLz", p3ds.leftbottom().Z); fields.Add("FaceMeshUx", p3ds.rightup().X); fields.Add("FaceMeshUy", p3ds.rightup().Y); fields.Add("FaceMeshUz", p3ds.rightup().Z); foreach (KeyValuePair <string, double> field in fields) { if (dv.FieldInfos.IndexOf(field.Key) < 0) { FieldInfo fieldInf = new FieldInfo(field.Key, FieldType.Double); dv.FieldInfos.Add(fieldInf); } string fieldName = field.Key; double fieldValue = field.Value; try { rc.SeekID(item.Value.GetID()); rc.Edit(); rc.SetFieldValue(fieldName, fieldValue); rc.Update(); } catch { Console.WriteLine("error!"); } //Console.WriteLine(string.Format("{0},{1},{2}", item.GetID(), fieldName, fieldValue)); } #endregion } } Console.WriteLine(""); model.ComputeBoundingBox(); scene.TrackingLayer.Add(model, gm.Position.ToString()); scene.Refresh(); } }
private void insertData() { #region 属性记录补登 //----------------拼接行政区图形数据存储表名 string tableName = gkfqd.Common.DbUse.GetTownCode(textBox35.Text); //文件上传成功后,文件表插入成功后,更新属性表记录 //获得用于操作的两个数据集 DatasetVector gkfqdDatasetVector = (DatasetVector)gk013Datasource.Datasets[tableName]; DatasetVector tempDatasetVector = (DatasetVector)gk013Datasource.Datasets["temp_gkfqd"]; string strSmid = gk013DataGridViewRow.Cells["SMID"].Value.ToString();//获取smid值 // 构造一个查询参数对象,查询选中的记录 QueryParameter para = new QueryParameter(); para.AttributeFilter = "SMID = " + strSmid; para.CursorType = CursorType.Dynamic; Recordset tempRecordset = tempDatasetVector.Query(para); Recordset gkfqdRecordset = gkfqdDatasetVector.GetRecordset(false, CursorType.Dynamic); //判断添加地块在目标图层是否存在 标记 Boolean flag = false; //临时图层到正式图层用smid string getSmid = ""; if (gkfqdRecordset == null) { flag = false; } else if (gkfqdRecordset.RecordCount > 0) { for (int i = 0; i <= gkfqdRecordset.RecordCount; i++) { gkfqdRecordset.MoveTo(i); if (gkfqdRecordset.GetGeometry().Bounds.Equals(tempRecordset.GetGeometry().Bounds)) { flag = true; break; } } } if (!flag) { //非面数据不能导入 if (tempRecordset.GetGeometry().GetType().Name.ToString() != "GeoRegion") { MessageBox.Show("导入图斑不是面数据,不能导入,请重新选择!"); return; } //------以下为属性字段添加 //地块编号 if (textBox1.Text == "") { MessageBox.Show("请输入地块编号!"); return; } //国有面积 if (textBox2.Text == "") { MessageBox.Show("请输入国有面积!"); return; } //地块位置 if (textBox4.Text == "") { MessageBox.Show("请输入地块位置!"); return; } //集体面积 if (textBox5.Text == "") { MessageBox.Show("请输入集体面积!"); return; } //土源保障情况 if (comboBox9.Text == "") { MessageBox.Show("请输入土源保障情况!"); return; } //地块现状的地形坡度 if (comboBox10.Text == "") { MessageBox.Show("请输入地块现状的地形坡度!"); return; } //水源保障情况 if (comboBox4.Text == "") { MessageBox.Show("请输入水源保障情况!"); return; } //预期复垦更低等级 if (textBox14.Text == "") { MessageBox.Show("请输入预期复垦更低等级!"); return; } //预期地块的地形坡度 if (comboBox16.Text == "") { MessageBox.Show("请输入预期地块的地形坡度!"); return; } //建设用地合法性 if (comboBox1.Text == "") { MessageBox.Show("请选择建设用地合法性!"); return; } //复垦义务人情况 if (comboBox2.Text == "") { MessageBox.Show("请选择复垦义务人情况!"); return; } //查询重复地块编号,若重复则重新输入地块编号 sqlQuery.Clear(); sqlQuery.Append(" SELECT DKBH FROM " + tableName); sqlQuery.Append(" WHERE DKBH ='" + textBox1.Text + "'"); gkfqd.Common.DbUse.GetOleDbconnection().Close(); gkfqd.Common.DbUse.GetOleDbconnection().Open(); DataSetDkbh.Clear(); OleDbDataAdapter MyAdapter = new OleDbDataAdapter(sqlQuery.ToString(), gkfqd.Common.DbUse.GetOleDbconnection()); MyAdapter.Fill(DataSetDkbh); gkfqd.Common.DbUse.GetOleDbconnection().Close(); if (DataSetDkbh.Tables[0].Rows.Count != 0) { MessageBox.Show("该地块编号已经存在,请重新录入!"); return; } //临时图层到正式图层赋值 gkfqdRecordset.AddNew(tempRecordset.GetGeometry()); getSmid = gkfqdRecordset.GetFieldValue("SMID").ToString(); //复垦项目名称 主键 gkfqdRecordset.SetFieldValue("FKXMMC", textBox10.Text); //地块编号 gkfqdRecordset.SetFieldValue("DKBH", textBox1.Text); //地块位置 gkfqdRecordset.SetFieldValue("DKWZ", textBox4.Text); //地块中的国有面积 gkfqdRecordset.SetFieldValue("DKZGYMJ", double.Parse(textBox2.Text)); //地块中的集体面积 gkfqdRecordset.SetFieldValue("DKZJTMJ", double.Parse(textBox5.Text)); //土源保障情况 gkfqdRecordset.SetFieldValue("TYBZQK", comboBox9.Text); //水源保障情况 gkfqdRecordset.SetFieldValue("SYBZQK", comboBox4.Text); //现状地形坡度 gkfqdRecordset.SetFieldValue("XZDXPD", comboBox10.Text); //预期复垦更低等级 gkfqdRecordset.SetFieldValue("YQFKGDDJ", textBox14.Text); //预期地形坡度 gkfqdRecordset.SetFieldValue("YQDXPD", comboBox4.Text); //建设用地合法性 gkfqdRecordset.SetFieldValue("JSYDHF", comboBox1.Text); //复垦义务人情况 gkfqdRecordset.SetFieldValue("FKYWR", comboBox2.Text); //其他规划名称 if (textBox6.Text != null) { gkfqdRecordset.SetFieldValue("QTGHMC", textBox6.Text); } //是否符合 if (checkBox2.Checked == true) { gkfqdRecordset.SetFieldValue("SFFH", "是"); } //是否符合土地利用总体规划 if (checkBox1.Checked == true) { gkfqdRecordset.SetFieldValue("SFFHTDLYZTGH", "是"); } //现状有无污染状况 if (checkBox3.Checked == true) { gkfqdRecordset.SetFieldValue("XZYWWRZK", "有"); } //现状污染状况 if (textBox7.Text != null) { gkfqdRecordset.SetFieldValue("XZWRZK", textBox7.Text); } //现状有无地质灾害隐患 if (checkBox4.Checked == true) { gkfqdRecordset.SetFieldValue("XZYWDZZHYH", "有"); } //交通运输用地 if (textBox9.Text != "") { gkfqdRecordset.SetFieldValue("JTYSYD", double.Parse(textBox9.Text)); } //工业用地 if (textBox25.Text != "") { gkfqdRecordset.SetFieldValue("GYYD", double.Parse(textBox25.Text)); } //其他建设用地 if (textBox11.Text != "") { gkfqdRecordset.SetFieldValue("QTJSYD", double.Parse(textBox11.Text)); } //采矿用地 if (textBox12.Text != "") { gkfqdRecordset.SetFieldValue("CKYD", double.Parse(textBox12.Text)); } //水域及水利设施用地 if (textBox8.Text != "") { gkfqdRecordset.SetFieldValue("SYJSLSSYD", double.Parse(textBox8.Text)); } //地块现状小计 if (textBox13.Text != "") { // double result = double.Parse(textBox9.Text) + double.Parse(textBox25.Text) + double.Parse(textBox11.Text) + double.Parse(textBox12.Text) + double.Parse(textBox8.Text); gkfqdRecordset.SetFieldValue("XZXJ", double.Parse(textBox13.Text)); } //有效土层厚度 if (textBox3.Text != "") { gkfqdRecordset.SetFieldValue("YXTCHD", double.Parse(textBox3.Text)); } //预期有无污染状况 if (checkBox5.Checked == true) { gkfqdRecordset.SetFieldValue("YQYWWRZK", "有"); } //预期污染状况 if (textBox15.Text != null) { gkfqdRecordset.SetFieldValue("YQWRZK", textBox15.Text); } //预期有无地质灾害隐患 if (checkBox6.Checked == true) { gkfqdRecordset.SetFieldValue("YQYWDZZHYH", "有"); } //农村道路 if (textBox16.Text != "") { gkfqdRecordset.SetFieldValue("NCDL", double.Parse(textBox16.Text)); } //耕地 if (textBox18.Text != "") { gkfqdRecordset.SetFieldValue("GD", double.Parse(textBox18.Text)); } //园地 if (textBox17.Text != "") { gkfqdRecordset.SetFieldValue("YD", double.Parse(textBox17.Text)); } //坑塘水面 if (textBox19.Text != "") { gkfqdRecordset.SetFieldValue("KTSM", double.Parse(textBox19.Text)); } //林地 if (textBox20.Text != "") { gkfqdRecordset.SetFieldValue("LD", double.Parse(textBox20.Text)); } //草地 if (textBox21.Text != "") { gkfqdRecordset.SetFieldValue("CD", double.Parse(textBox21.Text)); } //其他农用地 if (textBox22.Text != "") { gkfqdRecordset.SetFieldValue("QTNYD", double.Parse(textBox22.Text)); } //沟渠 if (textBox23.Text != "") { gkfqdRecordset.SetFieldValue("GQ", double.Parse(textBox23.Text)); } //预期地块小计 if (textBox24.Text != "") { // double result = double.Parse(textBox16.Text) + double.Parse(textBox17.Text) + double.Parse(textBox18.Text) + double.Parse(textBox19.Text) + double.Parse(textBox20.Text) + double.Parse(textBox21.Text) + double.Parse(textBox22.Text) + double.Parse(textBox23.Text); gkfqdRecordset.SetFieldValue("YQXJ", double.Parse(textBox24.Text)); } //地块名称 if (textBox26.Text != "") { gkfqdRecordset.SetFieldValue("DKMC", textBox26.Text); } //地块面积(亩) if (textBox27.Text != "") { gkfqdRecordset.SetFieldValue("DKMJ", double.Parse(textBox27.Text)); } //坐标系 if (textBox28.Text != "") { gkfqdRecordset.SetFieldValue("ZBX", textBox28.Text); } //界址点数 if (textBox29.Text != "") { gkfqdRecordset.SetFieldValue("JZDS", double.Parse(textBox29.Text)); } //几度分带 if (textBox30.Text != "") { gkfqdRecordset.SetFieldValue("JDFD", double.Parse(textBox30.Text)); } //精度 if (textBox31.Text != "") { gkfqdRecordset.SetFieldValue("JD", double.Parse(textBox31.Text)); } //计量单位 if (textBox32.Text != "") { gkfqdRecordset.SetFieldValue("JLDW", textBox32.Text); } // 记录图形属性 if (textBox33.Text != "") { gkfqdRecordset.SetFieldValue("JLTCSX", textBox33.Text); } // 投影类型 if (textBox34.Text != "") { gkfqdRecordset.SetFieldValue("TYLX", textBox34.Text); } gkfqdRecordset.Update(); //防止第二次插入 设置按钮不能点 button2.Enabled = false; } else { MessageBox.Show("该图斑已经存在,请确认或重新选择!"); tempRecordset.Dispose(); gkfqdRecordset.Dispose(); return; } tempRecordset.Dispose(); gkfqdRecordset.Dispose(); gk011 frmGk011; frmGk011 = (gk011)this.Owner; frmGk011.RefreshDataGridView(); MessageBox.Show("导入成功!"); #endregion }
private void button1_Click(object sender, EventArgs e) { try { if (xzqh.Text.Length > 0) { if (xzqh.Text.Length != 6) { MessageBox.Show("行政区划必须为六位"); return; } object value = getvalue(recordset.GetFieldInfos()[label_xzqh.Text.Remove(label_xzqh.Text.Length - 1)].Type, xzqh.Text); recordset.SetFieldValue(label_xzqh.Text.Remove(label_xzqh.Text.Length - 1), value); } else { MessageBox.Show(label_xzqh.Text.Remove(label_xzqh.Text.Length - 1) + " 不能为空"); return; } if (jd.Text.Length > 0) { if (jd.Text.Length != 3) { MessageBox.Show("街道号必须为3位"); return; } object value = getvalue(recordset.GetFieldInfos()[label_jd.Text.Remove(label_jd.Text.Length - 1)].Type, jd.Text); recordset.SetFieldValue(label_jd.Text.Remove(label_jd.Text.Length - 1), value); } else { MessageBox.Show(label_jd.Text.Remove(label_jd.Text.Length - 1) + "不能为空"); return; } if (jf.Text.Length > 0) { if (jf.Text.Length != 2) { MessageBox.Show("街坊必须为2位"); return; } object value = getvalue(recordset.GetFieldInfos()[label_jf.Text.Remove(label_jf.Text.Length - 1)].Type, jf.Text); recordset.SetFieldValue(label_jf.Text.Remove(label_jf.Text.Length - 1), value); } else { MessageBox.Show(label_jf.Text.Remove(label_jf.Text.Length - 1) + " 不能为空"); return; } if (zdh.Text.Length > 0) { object value = getvalue(recordset.GetFieldInfos()[zdh_l.Text.Remove(zdh_l.Text.Length - 1)].Type, jd.Text + jf.Text + zdh.Text); recordset.SetFieldValue(zdh_l.Text.Remove(zdh_l.Text.Length - 1), value); } else { MessageBox.Show(zdh_l.Text.Remove(zdh_l.Text.Length - 1) + " 不能为空"); return; } if (tdlylb.Text.Length > 0) { object value = getvalue(recordset.GetFieldInfos()[label_tdlylb.Text.Remove(label_tdlylb.Text.Length - 1)].Type, tdlylb.Text); recordset.SetFieldValue(label_tdlylb.Text.Remove(label_tdlylb.Text.Length - 1), value); } else { MessageBox.Show(label_tdlylb.Text.Remove(label_tdlylb.Text.Length - 1) + " 不认为空"); return; } if (qlr.Text.Length > 0) { object value = getvalue(recordset.GetFieldInfos()[label_qlr.Text.Remove(label_qlr.Text.Length - 1)].Type, qlr.Text); recordset.SetFieldValue(label_qlr.Text.Remove(label_qlr.Text.Length - 1), value); } else { MessageBox.Show(qlr.Text.Remove(qlr.Text.Length - 1) + " 不能为空"); return; } if (recordset.Update()) { MessageBox.Show("添加宗地成功"); } tt = true; } catch (Exception ex) { MessageBox.Show(ex.ToString()); } }
void addBox(DatasetVector dv, string file) { FileStream f; StreamWriter sw; Recordset rc = dv.GetRecordset(false, CursorType.Dynamic); Console.WriteLine(dv.Name + "\t::\t" + dv.Type.ToString() + "\t::\t" + dv.RecordCount); Dictionary <int, Feature> feas = rc.GetAllFeatures(); f = new FileStream(file, FileMode.OpenOrCreate); sw = new StreamWriter(f); foreach (Feature item in feas.Values) { Point3D lower, uper, center; if ((item.GetGeometry() as Geometry3D) != null) { lower = (item.GetGeometry() as Geometry3D).BoundingBox.Lower; uper = (item.GetGeometry() as Geometry3D).BoundingBox.Upper; center = (item.GetGeometry() as Geometry3D).BoundingBox.Center; sw.WriteLine(string.Format("{0},{1},{2},{3},{4},{5},{6}", item.GetID(), lower.X, lower.Y, lower.Z, uper.X, uper.Y, uper.Z)); if (!dv.IsOpen) { dv.Open(); } Dictionary <string, double> fields = new Dictionary <string, double>(); fields.Add("Lx", lower.X); fields.Add("Ly", lower.Y); fields.Add("Lz", lower.Z); fields.Add("Ux", uper.X); fields.Add("Uy", uper.Y); fields.Add("Uz", uper.Z); foreach (KeyValuePair <string, double> field in fields) { if (dv.FieldInfos.IndexOf(field.Key) < 0) { FieldInfo fieldInf = new FieldInfo(field.Key, FieldType.Double); dv.FieldInfos.Add(fieldInf); } string fieldName = field.Key; double fieldValue = field.Value; try { rc.SeekID(item.GetID()); rc.Edit(); rc.SetFieldValue(fieldName, fieldValue); rc.Update(); } catch { Console.WriteLine("error!"); } //Console.WriteLine(string.Format("{0},{1},{2}", item.GetID(), fieldName, fieldValue)); } //Console.WriteLine("=="+item.GetID()+"=="); } } Console.WriteLine(dv.Name + " done!"); sw.Close(); f.Close(); rc.Close(); dv.Close(); }
// 通过线性参考 处理数据 private void DataHandling(Dataset currentDs, DatasetVector routesDataset) { if (currentDs.Type == DatasetType.Tabular) { SuperMap.Desktop.Application.ActiveApplication.Output.Output("DatasetType.Tabular"); } DatasetVector datasetVector = currentDs as DatasetVector; Recordset rd = datasetVector.GetRecordset(false, CursorType.Dynamic); Recordset routeRd = routesDataset.GetRecordset(false, CursorType.Dynamic); rd.MoveFirst(); while (!rd.IsEOF) { String _id = rd.GetFieldValue("ID").ToString(); String _name = rd.GetFieldValue("NAME").ToString(); String _xbh = rd.GetFieldValue("XBH").ToString(); String _licheng = rd.GetFieldValue("LICHENG").ToString(); String _x = rd.GetFieldValue("X").ToString(); String _y = rd.GetFieldValue("Y").ToString(); //质量差的数据过滤 if (_id.Trim() == "" || _xbh.Trim() == "" || _licheng.Trim() == "") { rd.MoveNext(); continue; } // 如果有xy坐标,使用xy坐标;如果没有,使用线性参考获得坐标 if (_x.Trim() != "" && _y.Trim() != "") { //使用xy try { double x = 0, y = 0; double.TryParse(_x, out x); double.TryParse(_y, out y); //add list Vehicle vehicle = new Vehicle(); vehicle.Id = _id; vehicle.Name = _name; vehicle.X = x; vehicle.Y = y; vehicle.Xbh = _xbh; vehicleList.Add(vehicle); } catch (Exception) { this.MyLog("经纬度坐标格式有误,请使用如下格式:111.67,23.89"); } } else { //使用 线性参考 GeoLineM geoLineM = new GeoLineM(); //游标移到开头 routeRd.MoveFirst(); while (!routeRd.IsEOF) { String xbh = routeRd.GetFieldValue("线编号").ToString(); if (xbh == _xbh) { geoLineM = (GeoLineM)routeRd.GetGeometry(); double mValue = 0; //解析里程值 mValue = GetMValue(_licheng); Point2D point = geoLineM.GetPointAtM(mValue); this.MyLog("坐标:" + point.X + "," + point.Y); rd.SetFieldValue("X", point.X.ToString()); rd.SetFieldValue("Y", point.Y.ToString()); //add list Vehicle vehicle = new Vehicle(); vehicle.Id = _id; vehicle.Name = _name; vehicle.X = point.X; vehicle.Y = point.Y; vehicle.Xbh = _xbh; vehicleList.Add(vehicle); break; } // routeRd.MoveNext(); } }//---else end rd.MoveNext(); } //update //rd.Update(); rd.Close(); rd.Dispose(); routeRd.Close(); routeRd.Dispose(); this.MyLog("rd---------end"); //creat new dataset //处理后的数据 存储在新建要素集 CopyToNewDataset(vehicleList); }