public string AddProfilePointsTo3D(IEnumerable <IPoint> points) { string featureClassName = GenerateTemp3DPointStorage(); IWorkspaceEdit workspaceEdit = (IWorkspaceEdit)calcWorkspace; workspaceEdit.StartEditing(true); workspaceEdit.StartEditOperation(); IFeatureClass calc = GetCalcProfileFeatureClass(featureClassName); var GCS_WGS = Helper.GetBasePointSpatialReference(); int i = 0; points.ToList().ForEach(point => { var pointFeature = calc.CreateFeature(); int idFieldIndex = calc.FindField("ID"); pointFeature.set_Value(idFieldIndex, i); pointFeature.Shape = point; pointFeature.Store(); }); workspaceEdit.StopEditOperation(); workspaceEdit.StopEditing(true); return(featureClassName); }
/// <summary> /// 结束任务流程 /// </summary> /// <param name="taskName"></param> public void FinishTask(string taskName) { IFeatureWorkspace ws = Util.ServerWorkspace as IFeatureWorkspace; IVersionedWorkspace vw = ws as IVersionedWorkspace; if (taskName.ToLower() == vw.DefaultVersion.VersionName.ToLower()) { return; } IVersion ver = vw.FindVersion(taskName); IVersionEdit4 ve = ver as IVersionEdit4; IWorkspaceEdit wse = ver as IWorkspaceEdit; wse.StartEditing(true); ve.Reconcile4(vw.DefaultVersion.VersionName, true, true, true, true); if (ve.CanPost()) { ve.Post(vw.DefaultVersion.VersionName); } ITable task_tbl = ws.OpenTable("TaskLog"); IQueryFilter filter = new QueryFilterClass(); filter.WhereClause = "TaskName = '" + taskName + "'"; ICursor cur = task_tbl.Search(filter, false); IRow rw = cur.NextRow(); if (rw != null) { rw.set_Value(task_tbl.FindField("Status"), TaskManager.FINISH_STATUS); rw.set_Value(task_tbl.FindField("FinishDate"), DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss")); rw.Store(); } wse.StopEditing(true); ver.Delete(); }
/// <summary> /// 删除图元 /// </summary> public void DelFeature(AxMapControl axMapControl1, IFeatureLayer feaLayer, string FeaKey) { IDataset ipDataset = feaLayer.FeatureClass as IDataset; IWorkspaceEdit ipwsEdit = ipDataset.Workspace as IWorkspaceEdit; IQueryFilter ipQueryFilter = new QueryFilterClass(); ipQueryFilter.WhereClause = string.Format("{0}={1}", feaLayer.FeatureClass.OIDFieldName, FeaKey); IFeatureCursor ipFeatureCursor = feaLayer.FeatureClass.Search(ipQueryFilter, false); if (ipFeatureCursor != null) { IFeature ipFt = ipFeatureCursor.NextFeature(); if (ipFt != null) { //if (!ipwsEdit.IsBeingEdited()) //{ // ipwsEdit.StartEditing(false); //} //ipwsEdit.StopEditing(true); //DelFeatureByKeyName("MARKER_PIN_" + SelEditLayer + ipFt.OID.ToString()); axMapControl1.ActiveView.Refresh(); // this._mapObject.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, GetLayerByName(SelEditLayer), null); } } }
public string AddPolygonTo3D(Dictionary <IPolygon, bool> polygons) { string featureClassName = GenerateTemp3DPolygonStorage(); IWorkspaceEdit workspaceEdit = (IWorkspaceEdit)calcWorkspace; workspaceEdit.StartEditing(true); workspaceEdit.StartEditOperation(); IFeatureClass calc = GetCalcProfileFeatureClass(featureClassName); var GCS_WGS = Helper.GetBasePointSpatialReference(); polygons.ToList().ForEach(polygon => { var pointFeature = calc.CreateFeature(); pointFeature.Shape = polygon.Key; int isVisibleFieldIndex = calc.FindField("IS_VISIBLE"); pointFeature.set_Value(isVisibleFieldIndex, polygon.Value ? 1 : 0); pointFeature.Store(); }); workspaceEdit.StopEditOperation(); workspaceEdit.StopEditing(true); return(featureClassName); }
public void ChangeTasksStatus(string taskName, string status) { IFeatureWorkspace ws = Util.ServerWorkspace as IFeatureWorkspace; ITable task_tbl = ws.OpenTable("TaskLog"); IQueryFilter filter = new QueryFilterClass(); filter.WhereClause = "TaskName = '" + taskName + "'"; ICursor cur = task_tbl.Search(filter, false); IRow rw = cur.NextRow(); IWorkspaceEdit wse = ws as IWorkspaceEdit; wse.StartEditing(false); if (rw != null) { wse.StartEditOperation(); rw.set_Value(task_tbl.FindField("Status"), status); if (status == TaskManager.CHECKIN_STATUS) { rw.set_Value(task_tbl.FindField("CheckInDate"), DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss")); } else if (status == TaskManager.AUTOCHECK_STATUS) { rw.set_Value(task_tbl.FindField("AutoDataCheckDate"), DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss")); } else if (status == TaskManager.MANUALCHECK_STATUS) { rw.set_Value(task_tbl.FindField("ManualDataCheckDate"), DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss")); } rw.Store(); wse.StopEditOperation(); } wse.StopEditing(true); }
public void AddPointByWrite(IFeatureLayer l, double x, double y) { ESRI.ArcGIS.Geometry.esriGeometryType featype = l.FeatureClass.ShapeType; if (featype == esriGeometryType.esriGeometryPoint)//判断层是否为点层 { // IFeatureLayer l = MapCtr.Map.get_Layer(0) as IFeatureLayer; IFeatureClass fc = l.FeatureClass; IFeatureClassWrite fr = fc as IFeatureClassWrite; IWorkspaceEdit w = (fc as IDataset).Workspace as IWorkspaceEdit; IFeature f; IPoint p; w.StartEditing(true); w.StartEditOperation(); f = fc.CreateFeature(); p = new PointClass(); p.PutCoords(x, y); f.Shape = p; fr.WriteFeature(f); w.StopEditOperation(); w.StopEditing(true); } }
public void AddPolygonByWrite(AxMapControl axMapControl1, IFeatureLayer l, double x, double y) { ESRI.ArcGIS.Geometry.esriGeometryType featype = l.FeatureClass.ShapeType; if (featype == esriGeometryType.esriGeometryPolygon)//判断层是否为线层 { //IFeatureLayer l = MapCtr.Map.get_Layer(0) as IFeatureLayer; IFeatureClass fc = l.FeatureClass; IFeatureClassWrite fr = fc as IFeatureClassWrite; IWorkspaceEdit w = (fc as IDataset).Workspace as IWorkspaceEdit; IFeature f; //可选参数的设置 object Missing = Type.Missing; IPoint p = new PointClass(); w.StartEditing(true); w.StartEditOperation(); f = fc.CreateFeature(); //定义一个多义线对象 IRgbColor color = new RgbColor(); // 设置颜色属性 color.Red = 255; color.Transparency = 255; IGeometry iGeom = axMapControl1.TrackPolygon(); AddRegion(axMapControl1, iGeom); f.Shape = iGeom; fr.WriteFeature(f); w.StopEditOperation(); w.StopEditing(true); } }
//IFeatureClass CreateFeature Example private IFeature IFeatureClass_Create(IFeatureClass featureClass, IGeometry pGeometry) { if (featureClass.ShapeType != ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPolygon) { return(null); } IWorkspaceEdit iWE = (featureClass as IDataset).Workspace as IWorkspaceEdit; if (!iWE.IsBeingEdited()) { iWE.StartEditing(false); } IFeature feature = featureClass.CreateFeature(); //Apply the constructed shape to the new features shape feature.Shape = pGeometry; ISubtypes subtypes = (ISubtypes)featureClass; IRowSubtypes rowSubtypes = (IRowSubtypes)feature; if (subtypes.HasSubtype) // does the feature class have subtypes? { rowSubtypes.SubtypeCode = 1; //in this example 1 represents the Primary Pipeline subtype } // initalize any default values that the feature has rowSubtypes.InitDefaultValues(); //Commit the default values in the feature to the database feature.Store(); iWE.StopEditing(true); iWE = null; return(feature); }
private void dataGridViewX_CellValueChanged(object sender, DataGridViewCellEventArgs e) { try { IFeature pfeature = advTree.SelectedNode.Tag as IFeature; if (pfeature != null) { IWorkspaceEdit iWE = (pfeature.Class as IDataset).Workspace as IWorkspaceEdit; if (!iWE.IsBeingEdited()) { iWE.StartEditing(false); } iWE.StartEditOperation(); int fdpos = pfeature.Fields.FindFieldByAliasName(dataGridViewX[e.ColumnIndex - 1, e.RowIndex].Value.ToString()); pfeature.set_Value(fdpos, dataGridViewX[e.ColumnIndex, e.RowIndex].Value.ToString()); pfeature.Store(); iWE.StopEditOperation(); labelEditStatus.Text = "已完成更改!"; labelEditStatus.Visible = true; this.Refresh(); iWE = null; } } catch { MessageBox.Show("请按正确的字段格式填写属性!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } }
/// <summary> /// /// </summary> /// <param name="workspace"></param> /// <param name="withUndoRedo"></param> public EditSession(IWorkspace workspace, bool withUndoRedo) { if (workspace != null) { _workspaceEdit = (IWorkspaceEdit)workspace; } }
/// <summary> /// 根据点创建要素 /// </summary> /// <param name="pGeom"></param> private void CreateFeature(IGeometry pGeom) { try { if (pGeom == null) { return; } if (m_pCurrentLayer == null) { return; } IWorkspaceEdit pWorkspaceEdit = DataEditCommon.g_CurWorkspaceEdit;// GetWorkspaceEdit(); IFeatureLayer pFeatureLayer = (IFeatureLayer)m_pCurrentLayer; IFeatureClass pFeatureClass = pFeatureLayer.FeatureClass; pWorkspaceEdit.StartEditOperation(); IFeature pFeature = pFeatureClass.CreateFeature(); // 处理Z/M值 DrawCommon.HandleZMValue(pFeature, pGeom, 0); pFeature.Shape = pGeom; pFeature.Store(); pWorkspaceEdit.StopEditOperation(); m_GeometryCollection = null; m_pMap.SelectFeature(m_pCurrentLayer, pFeature); m_pMapControl.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGraphics | esriViewDrawPhase.esriViewGeoSelection, null, null); } catch (Exception e) { Console.WriteLine(e.Message.ToString()); } }
private void GetSelctionSet(IFeatureLayer pFeatureLayer, IGeometry pGeometry, bool bjustone, int Shift) { IFeatureClass pFeatureClass = pFeatureLayer.FeatureClass; //没开启编辑的不可选择 IDataset pDataset = pFeatureClass as IDataset; IWorkspaceEdit pWorkspaceEdit = pDataset.Workspace as IWorkspaceEdit; if (!pWorkspaceEdit.IsBeingEdited()) { return; } switch (Shift) { case 1: //增加选择结果集 ModPublic.GetSelctionSet(pFeatureLayer, pGeometry, pFeatureClass, esriSelectionResultEnum.esriSelectionResultAdd, bjustone); break; case 4: //减少选择结果集 ModPublic.GetSelctionSet(pFeatureLayer, pGeometry, pFeatureClass, esriSelectionResultEnum.esriSelectionResultSubtract, bjustone); break; case 2: ModPublic.GetSelctionSet(pFeatureLayer, pGeometry, pFeatureClass, esriSelectionResultEnum.esriSelectionResultXOR, bjustone); break; default: //新建选择结果集 ModPublic.GetSelctionSet(pFeatureLayer, pGeometry, pFeatureClass, esriSelectionResultEnum.esriSelectionResultNew, bjustone); break; } }
/// <summary> /// 开始编辑 /// </summary> /// <param name="bWithUndoRedo"></param> public void StartEditing(bool WithUndoRedo) { if (MyselectedLayer == null) { return; } IFeatureLayer featureLayer = MyselectedLayer as IFeatureLayer; if (featureLayer == null) { return; } IFeatureClass featureClass = featureLayer.FeatureClass; if (featureClass == null) { return; } IDataset dataset = featureClass as IDataset; IWorkspaceEdit workspaceEdit = dataset.Workspace as IWorkspaceEdit; try { workspaceEdit.StartEditing(WithUndoRedo); If_isEdited = true; } catch { return; } }
public string AddProfileLinesToCalculation(IEnumerable <IPolyline> profileLines) { string featureClassName = GenerateTempProfileLinesStorage(); IWorkspaceEdit workspaceEdit = (IWorkspaceEdit)calcWorkspace; workspaceEdit.StartEditing(true); workspaceEdit.StartEditOperation(); IFeatureClass calc = GetCalcProfileFeatureClass(featureClassName); var GCS_WGS = Helper.GetBasePointSpatialReference(); profileLines.ToList().ForEach( l => { var newLine = calc.CreateFeature(); newLine.Shape = l; newLine.Store(); } ); workspaceEdit.StopEditOperation(); workspaceEdit.StopEditing(true); return(featureClassName); }
/// 合并列表中所有多边形 /// </summary> /// <param name="orifeature">保留源对象</param> /// <param name="geolist">图形列表</param> /// <returns></returns> public void CreatePolygonFromExistingGeometries(IFeatureLayer lyr, IFeature orifeature, List <IGeometry> geolist) { int i = 0; IGeometry geometry = null; IFeatureClass Featureclass = lyr.FeatureClass; IWorkspaceEdit workspace = (IWorkspaceEdit)(Featureclass as IDataset).Workspace; workspace.StartEditing(false); workspace.StartEditOperation(); //合并图形 ITopologicalOperator2 topologicalOperator2 = orifeature.ShapeCopy as ITopologicalOperator2; for (i = 0; i < geolist.Count; i++) { IGeometry geo = geolist[i]; if (geometry != null) { topologicalOperator2 = geometry as ITopologicalOperator2; } ITopologicalOperator opertor = geo as ITopologicalOperator; opertor.Simplify(); topologicalOperator2.IsKnownSimple_2 = false; topologicalOperator2.Simplify(); geometry = topologicalOperator2.Union(geo); } //更新图形对象 IGeometry geoCombined = (IGeometry)geometry; orifeature.Shape = geoCombined as IGeometry; orifeature.Store(); workspace.StopEditOperation(); workspace.StopEditing(true); }
/// <summary> /// Deletes the anno features in feature layer. /// </summary> /// <param name="featureLayer">The feature layer.</param> public static void DeleteAnnoFeaturesInFeatureLayer(IFeatureLayer featureLayer) { if (featureLayer == null) { return; } IFeatureClass featureClass = featureLayer.FeatureClass; IDataset dataset = featureClass as IDataset; IWorkspace pWorkspace = dataset.Workspace; IWorkspaceEdit pWorkspaceEdit = pWorkspace as IWorkspaceEdit; pWorkspaceEdit.StartEditing(true); pWorkspaceEdit.StartEditOperation(); IWorkspaceProperties2 workspaceProperties2 = (IWorkspaceProperties2)pWorkspace; //判断workspace是否可以执行SQL语句 IWorkspaceProperty canExecuteSqlProperty = workspaceProperties2.get_Property(esriWorkspacePropertyGroupType.esriWorkspacePropertyGroup, (int)esriWorkspacePropertyType.esriWorkspacePropCanExecuteSQL); if (canExecuteSqlProperty.IsSupported) { //ExecuteSQL删除feature pWorkspace.ExecuteSQL("delete from " + featureClass.AliasName + " where objectid >=0"); } pWorkspaceEdit.StopEditOperation(); pWorkspaceEdit.StopEditing(true); }
public void OnClick() { try { m_Map = m_hookHelper.FocusMap; m_activeView = m_Map as IActiveView; m_EngineEditor = MapManager.EngineEditor; if (m_EngineEditor == null) { return; } if (m_EngineEditor.EditState != esriEngineEditState.esriEngineStateEditing) { return; } IWorkspaceEdit pWSEdit = m_EngineEditor.EditWorkspace as IWorkspaceEdit; if (pWSEdit == null) { return; } Boolean bHasRedo = true; pWSEdit.HasRedos(ref bHasRedo); if (bHasRedo) { pWSEdit.RedoEditOperation(); } m_activeView.Refresh(); } catch (Exception ex) { } }
/// <summary> /// 获取绘制点的图层——Cities, 保存点绘制的函数 /// </summary> /// <param name="pointLayerName"></param> /// <param name="point"></param> private void AddPointByStore(string pointLayerName, IPoint pt) { //得到要添加地物的图层 IFeatureLayer pFeatureLayer = GetLayerByName(pointLayerName) as IFeatureLayer; if (pFeatureLayer != null) { //定义一个地物类, 把要编辑的图层转化为定义的地物类 IFeatureClass pFeatureClass = pFeatureLayer.FeatureClass; //先定义一个编辑的工作空间, 然后将其转化为数据集, 最后转化为编辑工作空间 IWorkspaceEdit w = (pFeatureClass as IDataset).Workspace as IWorkspaceEdit; IFeature pFeature; //开始事务操作 w.StartEditing(false); //开始编辑 w.StartEditOperation(); //创建一个(点)要素 pFeature = pFeatureClass.CreateFeature(); //赋值该要素的Shape属性 pFeature.Shape = pt; //保存要素, 完成点要素生成 //此时生成的点要素只要集合特征(shape/Geometry), 无普通属性 pFeature.Store(); //结束编辑 w.StopEditOperation(); //结束事务操作 w.StopEditing(true); } //屏幕刷新 this.axMapControl1.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, pFeatureLayer, null); }
private bool UpdateFieldValue(IField pField, object str) { IWorkspaceEdit workspace = (this.m_pFeatLayer.FeatureClass as IDataset).Workspace as IWorkspaceEdit; bool flag = false; try { ICursor cursor; workspace.StartEditOperation(); int index = this.m_pFeatLayer.FeatureClass.Fields.FindField(pField.Name); (this.m_pFeatLayer as IFeatureSelection).SelectionSet.Search(null, false, out cursor); for (IRow row = cursor.NextRow(); row != null; row = cursor.NextRow()) { row.set_Value(index, str); row.Store(); } ComReleaser.ReleaseCOMObject(cursor); workspace.StopEditOperation(); try { } catch { } flag = true; } catch (Exception exception) { MessageBox.Show("输入数据格式错误"); CErrorLog.writeErrorLog(null, exception, ""); } return(flag); }
public override void OnMouseUp(int int_0, int int_1, int int_2, int int_3) { if (this.istretchLineFeedback_0 != null) { IPolyline polyline = this.istretchLineFeedback_0.Stop(); this.istretchLineFeedback_0 = null; IWorkspaceEdit workspace = (this.ifeature_0.Class as IDataset).Workspace as IWorkspaceEdit; workspace.StartEditOperation(); try { if ((this.ifeature_0.Shape as IZAware).ZAware) { (polyline as IZAware).ZAware = true; (polyline as IZ).SetConstantZ((this.ifeature_0.Shape as IZ).ZMax); } this.ifeature_0.Shape = polyline; this.ifeature_0.Store(); } catch (Exception exception) { MessageBox.Show(exception.ToString()); } workspace.StopEditOperation(); _context.ActiveView.Refresh(); } }
public void ActiveCommand() { m_pEditWorkspace = null; if (this.Enabled) { _context.ShowCommandString("正在启动编辑", CommandTipsType.CTTLog); if (Editor2.StartEditing(_context.MapControl.Map, _context)) { m_pEditWorkspace = Editor2.EditWorkspace; _context.Config.IsInEdit = true; _context.ShowCommandString("启动编辑", CommandTipsType.CTTEnd); EditorEvent.StartEditing(); //EditToolUI.EditTemplateCtrl.Map = _context.MapControl.Map; //base.m_HookHelper.DockWindows(EditToolUI.EditTemplateCtrl, null); } else { _context.ShowCommandString("未启动编辑", CommandTipsType.CTTEnd); } } else { if ((Editor2.EditMap != null) && (Editor2.EditMap != _context.MapControl.Map)) { _context.ShowCommandString("已处于编辑状态", CommandTipsType.CTTEnd); } else { _context.ShowCommandString("开始编辑命令不可用", CommandTipsType.CTTEnd); } } }
protected override void OnClick() { IActiveView activeView = ArcMap.Document.ActiveView; IMap map = activeView as IMap; ILayer layer = map.get_Layer(0); IFeatureLayer featureLayer = layer as IFeatureLayer; IFeatureClass featureClass = featureLayer.FeatureClass; IPoint point = new PointClass(); point.PutCoords(-117.1, 34.075); //(LONG, LAT) IWorkspace workspace = GetWorkspace(); IWorkspaceEdit workspaceEdit = workspace as IWorkspaceEdit; workspaceEdit.StartEditing(true); workspaceEdit.StartEditOperation(); // -------------- Perform your editing tests here ------------------ CreateFeature(featureClass, point); //UpdateFeature(featureClass); //DeleteFeature(featureClass); // ----------------------------------------------------------------- workspaceEdit.StopEditOperation(); workspaceEdit.StopEditing(true); ArcMap.Application.CurrentTool = null; }
/// <summary> /// 删除指定图层的指定图形 /// </summary> /// <param name="id">图形的id</param> /// <param name="layerName">图层名</param> public void DeleteFeature(int id, string layerName) { InitLicense(); try { List <FieldInfo> list = GetAllFields(layerName); var node = configXml.SelectSingleNode("/Layers/Layer[@Title='" + layerName + "']"); var ws = CreateWorkspace(); IWorkspaceEdit edit = (IWorkspaceEdit)ws; edit.StartEditing(false); edit.StartEditOperation(); var fc = ws.OpenFeatureClass(node.Attributes["Name"].Value); var feature = fc.GetFeature(id); IFeatureClassWrite fcw = fc as IFeatureClassWrite; if (feature != null) { fcw.RemoveFeature(feature); } edit.StopEditOperation(); edit.StopEditing(true); } catch (Exception ex) { ShutdownLicense(); throw ex; } }
public virtual void StartEdit() { this.oWs = this.Workspace; this.iwe = (IWorkspaceEdit)oWs; this.iwe.StartEditing(true); this.iwe.StartEditOperation(); }
/// <summary> /// 删除多个几何对象 /// </summary> /// <param name="lyr">图层</param> /// <param name="fea">要素对象</param> /// <param name="attributes">属性集合</param> /// <param name="pGeo">空间对象</param> /// <returns>成功失败标志</returns> public void DelFeatures(IFeatureLayer lyr, string sql) { try { IFeatureClass Featureclass = lyr.FeatureClass; if (Featureclass != null) { IFeatureCursor featurecursor = PropertySearch(sql, lyr); IWorkspaceEdit workspace = (IWorkspaceEdit)(Featureclass as IDataset).Workspace; workspace.StartEditing(false); workspace.StartEditOperation(); IFeature fea = featurecursor.NextFeature(); while (fea != null) { fea.Delete(); fea = featurecursor.NextFeature(); } workspace.StopEditOperation(); workspace.StopEditing(true); } } catch (Exception ei) { Log.Debug("[GIS] Del Feature: " + ei.ToString()); } }
/// <summary> /// 将拓扑错误要素存入要素类中 /// </summary> /// <param name="topoErrorFeatures">拓扑错误要素</param> /// <param name="resultFeatureClass">保存拓扑错误要素的要素类,注意其坐标系和类型(点/线/面)必须与拓扑错误要素相同</param> public static void TopoErrorInsertToFeatureClass(this IEnumerable <ITopologyErrorFeature> topoErrorFeatures, IFeatureClass resultFeatureClass) { int typeIndex = resultFeatureClass.AddField("TRuleType", "拓扑规则", esriFieldType.esriFieldTypeInteger); int orClassIdIndex = resultFeatureClass.AddField("OriClsID", "源要素类ID", esriFieldType.esriFieldTypeInteger); int deClassIdIndex = resultFeatureClass.AddField("DesClsID", "目标要素类ID", esriFieldType.esriFieldTypeInteger); int orOidIndex = resultFeatureClass.AddField("OriOID", "源要素OID", esriFieldType.esriFieldTypeInteger); int deOidIndex = resultFeatureClass.AddField("DesOID", "目标要素OID", esriFieldType.esriFieldTypeInteger); IWorkspaceEdit tmpWorkspaceEdit = (IWorkspaceEdit)(resultFeatureClass as IDataset).Workspace; tmpWorkspaceEdit.StartEditing(true); tmpWorkspaceEdit.StartEditOperation(); IFeatureBuffer featureBuffer = resultFeatureClass.CreateFeatureBuffer(); //在目标要素类中插入所有错误要素 IFeatureCursor featureCursor = resultFeatureClass.Insert(true); foreach (var errorFeature in topoErrorFeatures) { IFeature tmpFeature = errorFeature as IFeature; featureBuffer.set_Value(typeIndex, errorFeature.TopologyRuleType); featureBuffer.set_Value(orClassIdIndex, errorFeature.OriginClassID); featureBuffer.set_Value(deClassIdIndex, errorFeature.DestinationClassID); featureBuffer.set_Value(orOidIndex, errorFeature.OriginOID); featureBuffer.set_Value(deOidIndex, errorFeature.DestinationOID); featureBuffer.Shape = tmpFeature.Shape; object featureOID = featureCursor.InsertFeature(featureBuffer); } featureCursor.Flush();//保存要素 tmpWorkspaceEdit.StopEditOperation(); tmpWorkspaceEdit.StopEditing(true); Marshal.ReleaseComObject(featureCursor); }
/// <summary> /// 根据查询语句从ITable中删除对应的记录信息 /// </summary> /// <param name="lyr">图层</param> /// <param name="sql">查询语句</param> public void DelFeaturesByQueryFilter(IFeatureLayer lyr, string sql) { IFeatureClass Featureclass = lyr.FeatureClass; IWorkspaceEdit workspace = (IWorkspaceEdit)(Featureclass as IDataset).Workspace; workspace.StartEditing(false); workspace.StartEditOperation(); //删除要素 IQueryFilter qfilter = new QueryFilterClass(); qfilter.WhereClause = sql; ITable table = Featureclass as ITable; table.DeleteSearchedRows(qfilter); //停止编辑 try { workspace.StopEditOperation(); workspace.StopEditing(true); } catch (Exception ei) { throw; } System.Runtime.InteropServices.Marshal.ReleaseComObject(qfilter); Global.pActiveView.Refresh(); }
// 关闭feature的工作空间编辑状态 public void StopEditing(IFeature pFeature) { try { IFeatureClass pFC = pFeature.Table as IFeatureClass; IDataset pDataset = pFC as IDataset; if (pDataset == null) { return; } //如果数据已被修改,则提示用户是否保存 IWorkspaceEdit pWorkspaceEdit = (IWorkspaceEdit)pDataset.Workspace; if (pWorkspaceEdit.IsBeingEdited()) { pWorkspaceEdit.StopEditing(true); } IActiveView pActiveView = m_SceneCtrl.Scene as IActiveView; pActiveView.Refresh(); } catch (Exception e) { Console.WriteLine(e.Message.ToString()); } }
private void CreateFeature(IGeometry geo, IMap pMap, IFeatureClass fc) { try { if (geo == null || fc == null || pMap == null) { return; } IDataset pDataset = fc as IDataset; IWorkspaceEdit pWorkspaceEdit = pDataset.Workspace as IWorkspaceEdit; int index = fc.FindField(fc.ShapeFieldName); IGeometryDef pGD = fc.Fields.get_Field(index).GeometryDef; if (pGD.HasZ) { IZAware pZA = geo as IZAware; pZA.ZAware = true; IZ pZ = geo as IZ; double zmin = -1000, zmax = 1000; if (pGD.SpatialReference.HasZPrecision()) { pGD.SpatialReference.GetZDomain(out zmin, out zmax); } if (pZ != null) { pZ.SetConstantZ(0); } else { IPoint p = geo as IPoint; if (p.Z.ToString() == "非数字") { p.Z = 0; } } } if (pGD.HasM) { IMAware pMA = geo as IMAware; pMA.MAware = true; } if (!pWorkspaceEdit.IsBeingEdited()) { pWorkspaceEdit.StartEditing(true); pWorkspaceEdit.StartEditOperation(); } IFeature pFeature = fc.CreateFeature(); pFeature.Shape = geo; pFeature.Store(); if (pWorkspaceEdit.IsBeingEdited()) { pWorkspaceEdit.StartEditOperation(); pWorkspaceEdit.StopEditing(true); } pMap.ClearSelection(); } catch (System.Exception ex) { return; } }
private void UpdateFeature(IFeature selectedFeature, ISegmentCollection polylineSegments) { ISegmentCollection polyline = new PolylineClass(); polyline.AddSegmentCollection(polylineSegments); IFeatureClass featureClass = selectedFeature.Class as IFeatureClass; IDataset dataset = featureClass as IDataset; IWorkspaceEdit workspaceEdit = dataset.Workspace as IWorkspaceEdit; if (!(workspaceEdit.IsBeingEdited())) { return; } try { workspaceEdit.StartEditOperation(); selectedFeature.Shape = polyline as IGeometry; selectedFeature.Store(); workspaceEdit.StopEditOperation(); } catch (Exception ex) { workspaceEdit.AbortEditOperation(); MessageBox.Show("移动线段失败!!" + ex.Message, "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } }
protected override void OnMouseDown(ESRI.ArcGIS.Desktop.AddIns.Tool.MouseEventArgs arg) { IMxDocument pMxDoc = ArcMap.Application.Document as IMxDocument; IRubberBand pRabber = new RubberPolygon(); //get polygon from screen IPolygon pPolygon = pRabber.TrackNew(pMxDoc.ActiveView.ScreenDisplay, null) as IPolygon; //get cordinate from hard coded //IPolygon pPolygon ; //IPoint pPoint1 = new Point(); //pPoint1.X = -120.730273; //pPoint1.Y = 224.928212; //IPoint pPoint2 = new Point(); //pPoint2.X = -25.280158; //pPoint2.Y = 27942068.023; //IPoint pPoint3 = new Point(); //pPoint3.X = -117.895121; //pPoint3.Y = 150.269211; //IPointCollection pPointCollection = new Polygon(); //pPointCollection.AddPoint(pPoint1); //pPointCollection.AddPoint(pPoint2); //pPointCollection.AddPoint(pPoint3); //pPointCollection.AddPoint(pPoint1); //pPolygon = pPointCollection as IPolygon; ////fix when draw wrong draw //IArea pArea = pPolygon as IArea; //if (pArea.Area < 0) //{ // pPolygon.ReverseOrientation(); //} IFeatureLayer pFlayer = pMxDoc.FocusMap.Layer[0] as IFeatureLayer; IDataset pDS = pFlayer.FeatureClass as IDataset; IWorkspaceEdit pWSE = pDS.Workspace as IWorkspaceEdit; pWSE.StartEditing(false); pWSE.StartEditOperation(); IFeature pFeature = pFlayer.FeatureClass.CreateFeature(); pFeature.Shape = pPolygon; pFeature.Store(); pWSE.StopEditOperation(); pWSE.StopEditing(true); pMxDoc.ActiveView.Refresh(); }
public static void CheckEditState() { try { if (g_engineEditor.EditState == esriEngineEditState.esriEngineStateNotEditing) { // ����༭�������£���ɫ����ֵ��ע�⣬��������ñ༭���ͣ� // ��ᱨ�쳣���� HRESULT:0x80040356�����������������Arcmap��Edit������������Opetionsѡ���Versisionѡ��� g_engineEditor.EditSessionMode = esriEngineEditSessionMode.esriEngineEditSessionModeVersioned; g_engineEditor.StartEditing(g_pCurrentWorkSpace, g_pMap); } if (g_CurWorkspaceEdit == null) g_CurWorkspaceEdit = (IWorkspaceEdit)g_pCurrentWorkSpace; if (g_CurWorkspaceEdit.IsBeingEdited() == false) { g_engineEditor.EditSessionMode = esriEngineEditSessionMode.esriEngineEditSessionModeVersioned; g_engineEditor.StartEditing(g_pCurrentWorkSpace, g_pMap); } } catch (Exception ex) { throw ex; } }
private void DiscardEdits() { try { if (InEditingSession) { _editor.AbortOperation(); } else { _hluWorkspaceEdit.AbortEditOperation(); _hluWorkspaceEdit.StopEditOperation(); _hluWorkspaceEdit.StopEditing(false); } } finally { _hluWorkspaceEdit = null; } }
private void CommitEdits() { try { if (InEditingSession) { _editor.StopOperation(String.Empty); if (_saveEditsCmd == null) _saveEditsCmd = FindSaveEditsCommand(); if (_saveEditsCmd != null) { _saveEditsCmd.Execute(); // only way to save edits without closing edit session } else { _editor.StopEditing(true); _editor.StartEditing((IWorkspace)_hluWS); } } else { _hluWorkspaceEdit.StopEditOperation(); _hluWorkspaceEdit.StopEditing(true); _hluWorkspaceEdit = null; } } catch { DiscardEdits(); } }
private void StartEditing() { try { if (InEditingSession) { if (_saveEditsCmd == null) _saveEditsCmd = FindSaveEditsCommand(); _editor.StartOperation(); } else { _hluWorkspaceEdit = StartEditingWorkspace(_hluWS); } } catch { } }
public static void load(string path) { g_pMyMapCtrl = (IMapControl3)g_pAxMapControl.Object; g_pMap = g_pAxMapControl.Map; g_pGraph = (IGraphicsContainer)g_pMap; IWorkspace workspace = SDEOperation.connectSde(path);//dfjia g_pCurrentWorkSpace = workspace; g_CurWorkspaceEdit = (IWorkspaceEdit)workspace; contextMenu.SetHook(g_pAxMapControl.Object); //g_pAxMapControl.ActiveView.Refresh(); }
public void ProcessFeature(IWorkspaceEdit iwe, IFeatureLayer ifl_active, IRow rw) { double value = double.NaN; if (CoordinateSystem == "") { CoordinateSystem = ((IFeature)rw).Shape.SpatialReference.Name; } if (this.LinearUnit == null || this.LinearUnit == "") { if (fieldTier == 2) { LinearUnit = rw.get_Value(GetFieldUnitIndex()).ToString(); } if (this.LinearUnit == null || this.LinearUnit.Trim() == "") { LinearUnit = GetSpatialReferenceLinearUnit(((IFeature)rw).Shape.SpatialReference); } } if (LinearUnit.IndexOf("meter", 0, StringComparison.CurrentCultureIgnoreCase) > -1) { if (useArealUnit) { currentAreaUnit = esriAreaUnits.esriSquareMeters; LinearUnit = "Square Meters"; } else { currentLinearUnit = esriUnits.esriMeters; } } else if (LinearUnit.IndexOf("foot", 0, StringComparison.CurrentCultureIgnoreCase) > -1) { if (useArealUnit) { currentAreaUnit = esriAreaUnits.esriSquareFeet; LinearUnit = "Square Feet"; } else { currentLinearUnit = esriUnits.esriFeet; } } else if (LinearUnit.IndexOf("acre", 0, StringComparison.CurrentCultureIgnoreCase) > -1) { currentAreaUnit = esriAreaUnits.esriAcres; currentLinearUnit = esriUnits.esriUnknownUnits; LinearUnit = "Acres"; } if (doReCalcValues || !double.TryParse(rw.get_Value(GetFieldIndex()).ToString(), out value) || value == double.NaN || value == 0.0) { value = DoMeasure(rw); //try writing the (single) measured value to the table try { IFeature feat = (IFeature)rw; //if we are re-calculating all values, there is no need to start editing on each row if (!doReCalcValues) { if (!iwe.IsBeingEdited()) iwe.StartEditing(true); iwe.StartEditOperation(); } feat.set_Value(GetFieldIndex(), value); feat.set_Value(GetFieldUnitIndex(), LinearUnit); feat.Store(); } catch (Exception err) { } finally { if (!doReCalcValues) { iwe.StopEditOperation(); if (iwe.IsBeingEdited()) iwe.StopEditing(true); //there may be more than one row that requires editing doReCalcValues = true; } } } values.Add(value); }
public bool InsertNewRow(ITable table,IWorkspaceEdit workspace) { using (ComReleaser comReleaser = new ComReleaser()) { try { multiWspEdit.StartMultiuserEditing(esriMultiuserEditSessionMode.esriMESMVersioned); workspace.StartEditOperation(); _currentRow = table.CreateRow(); _currentRow.Store(); workspace.StopEditOperation(); workspace.StopEditing(true); return true; } catch { workspace.StopEditOperation(); workspace.StopEditing(false); return false; } } }
/// <summary> /// Initializes a new instance of the <see cref="FieldPropertyDescriptor"/> class. /// </summary> /// <param name="wrappedTable">The wrapped table.</param> /// <param name="fieldName">Name of the field within wrappedTable.</param> /// <param name="fieldIndex">Index of the field within wrappedTable.</param> public FieldPropertyDescriptor(ITable wrappedTable, string fieldName, int fieldIndex) : base(fieldName, null) { wrappedFieldIndex = fieldIndex; // Get the field this property will represent. We will use it to // get the field type and determine whether it can be edited or not. In // this case, editable means the field's editable property is true and it // is not a blob, geometry or raster field. IField wrappedField = wrappedTable.Fields.get_Field(fieldIndex); esriType = wrappedField.Type; isEditable = wrappedField.Editable && (esriType != esriFieldType.esriFieldTypeBlob) && (esriType != esriFieldType.esriFieldTypeRaster) && (esriType != esriFieldType.esriFieldTypeGeometry); netType = actualType = EsriFieldTypeToSystemType(wrappedField); wkspcEdit = ((IDataset)wrappedTable).Workspace as IWorkspaceEdit; }
public SDETable(ITable table, IWorkspace workspace) { _table = table; _workspace = workspace; _workspaceEdit = (IWorkspaceEdit)_workspace; multiWspEdit = (IMultiuserWorkspaceEdit)_workspace; }
/// <summary> /// 开始编辑 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Star_Edit_Click(object sender, EventArgs e) { if (flaglayer == null) { MessageBox.Show("请选取图层"); return; } else { istoolenable(true); //for (int i = 0; i < axMapControl1.LayerCount;i++) //mlayer = axMapControl1.Map.get_Layer(0); m_map = axMapControl1.Map; //mlayer = getLayerByName(m_map, comboBox1.SelectedText); mfeaturelayer = flaglayer as IFeatureLayer; mlayer = flaglayer; mfeatureclass = mfeaturelayer.FeatureClass; dataset = mfeatureclass as IDataset; mworkspace = dataset.Workspace; CurWorkspaceEdit = mworkspace as IWorkspaceEdit; //CurWorkspaceEdit.StartEditing(true); //CurWorkspaceEdit.StartEditOperation(); mEngineEditor.StartEditing(mworkspace, m_map); mEngineEditLayer = mEngineEditor as IEngineEditLayers; mEngineEditLayer.SetTargetLayer(mfeaturelayer, 0); //((IEngineEditLayers)mEngineEditor).SetTargetLayer(mfeaturelayer, 0); } }
ITable IDataManager.OpenTableFromSDE(IWorkspaceEdit workspace, string table) { IFeatureWorkspace fwsp = (IFeatureWorkspace)workspace; return fwsp.OpenTable(table); }
public SDETable(ITable table, IWorkspaceEdit workspaceEdit) { _table = table; _workspaceEdit = workspaceEdit; }
public void Calculate(List<object> newId) { #region tinh gia dat //cachtinhdongia = "[giadatduong] * [hesodatsxkd]"; //cachtinhdongia = "DonGiaSxkdMattienDt(Multiply([giadatduong],[hesodatsxkd]))"; //cachtinhdongia = "DonGiaOcoNnMattienDt([giadatduong])"; //cachtinhdongia = "DonGiaOcoSxkdMattienDt([giadatduong])"; //cachtinh="[giadatduong] * [dientich]"; //cachtinh = "GiaDatSxkdMattienDt([giadatduong] * [hesodatsxkd] * [dientich])"; //cachtinh = "DonGiaOcoNnMattienDt(Multiply([giadatduong],[giadatnongnghiep]))"; #region khoi tao cac bien SdeConnection conn = new SdeConnection(); ISdeConnectionInfo sdeConn = conn as ISdeConnectionInfo; _wspEdit = (IWorkspaceEdit)sdeConn.Workspace; _mwspEdit = (IMultiuserWorkspaceEdit)sdeConn.Workspace; IFeatureWorkspace fw = (IFeatureWorkspace)sdeConn.Workspace; copyTool = new DataManager(sdeConn.Workspace, sdeConn.Environment); this._fcName = new TnFeatureClassName(sdeConn.Workspace); this._tblName = new TnTableName(sdeConn.Workspace); string tgdDraft = string.Format("{0}_{1}", DataNameTemplate.Thua_Gia_Dat_Draft, this._currentConfig.NamApDung); string gdd = string.Format("{0}_{1}", DataNameTemplate.Gia_Dat_Duong, this._currentConfig.NamApDung); string gdhem = string.Format("{0}_{1}", DataNameTemplate.Gia_Hem, this._currentConfig.NamApDung); string gdhemPhu = string.Format("{0}_{1}", DataNameTemplate.Gia_Hem_Phu, this._currentConfig.NamApDung); string thuaName = string.Format("{0}_{1}", DataNameTemplate.Thua, this._currentConfig.NamApDung); string gdNnName=string.Format("{0}_{1}", DataNameTemplate.Gia_Dat_Nongnghiep, this._currentConfig.NamApDung); string gdPnnNtName = string.Format("{0}_{1}", DataNameTemplate.Gia_Dat_Pnn_Nongthon, this._currentConfig.NamApDung); _fcName.FC_THUA.NAME = thuaName; _fcName.FC_THUA.InitIndex(); _fcName.FC_THUA_GIADAT_DRAFT.NAME = tgdDraft; _fcName.FC_THUA_GIADAT_DRAFT.InitIndex(); _tblName.GIA_DAT_DUONG.NAME = gdd; _tblName.GIA_DAT_DUONG.InitIndex(); _fcName.FC_GIA_DAT_HEM.NAME = gdhem; _fcName.FC_GIA_DAT_HEM.InitIndex(); _fcName.FC_GIA_DAT_HEM_PHU.NAME = gdhemPhu; _fcName.FC_GIA_DAT_HEM_PHU.InitIndex(); _tblName.GIA_DAT_NONGNGHIEP.NAME = gdNnName; _tblName.GIA_DAT_NONGNGHIEP.InitIndex(); _tblName.GIA_DAT_O_NONGTHON.NAME = gdPnnNtName; _tblName.GIA_DAT_O_NONGTHON.InitIndex(); IFeatureClass tgdDraftFeatureClass = null; try { tgdDraftFeatureClass = fw.OpenFeatureClass(tgdDraft); } catch { MessageBox.Show("Không tìm thấy bảng " + tgdDraft); return; } IFeatureClass fcGiaDatHem = null; try { fcGiaDatHem = fw.OpenFeatureClass(gdhem); } catch { MessageBox.Show("Không tìm thấy bảng " + gdhem); } IFeatureClass fcGiaDatHemPhu = null; try { fcGiaDatHemPhu = fw.OpenFeatureClass(gdhemPhu); } catch { MessageBox.Show("Không tìm thấy bảng " + gdhemPhu); } ITable tblLoaiDat; ITable tblThuaGiaDatDraft; ITable tblGiaDatDuong; ITable tblHesoVitri; ITable tblTenDuong; ITable tblGiaDatNn; ITable tblGiaDatPnnNt; IFeatureClass fcThua; IFeatureClass fcXa; IFeatureClass fcDuong; IFeatureClass fcKtvhxh; IFeatureClass fcHemChinh; #endregion #region dinh nghia cac bien try { fcThua = fw.OpenFeatureClass(thuaName); } catch { MessageBox.Show("Không tìm thấy bảng " + thuaName); return; } try { tblTenDuong = fw.OpenTable(DataNameTemplate.Ten_Duong); } catch(Exception ex) { MessageBox.Show("Không tìm thấy bảng " + DataNameTemplate.Ten_Duong); return; } try { tblLoaiDat = fw.OpenTable(DataNameTemplate.Loai_Dat); tblThuaGiaDatDraft = (ITable)tgdDraftFeatureClass; //tblThuaGiaDat = fw.OpenTable(_fcName.FC_THUA_GIADAT.NAME); tblGiaDatDuong = fw.OpenTable(gdd); tblHesoVitri = fw.OpenTable(DataNameTemplate.He_So_K); } catch { MessageBox.Show("Không tìm thấy bảng " + tgdDraft); return; } try { tblGiaDatNn = fw.OpenTable(gdNnName); } catch (Exception ex) { MessageBox.Show("Không tìm thấy bảng " + gdNnName); return; } try { tblGiaDatPnnNt = fw.OpenTable(gdPnnNtName); } catch (Exception ex) { MessageBox.Show("Không tìm thấy bảng " + gdPnnNtName); return; } try { fcXa = fw.OpenFeatureClass(DataNameTemplate.Ranh_Xa_Poly); } catch { MessageBox.Show("Không tìm thấy bảng " + DataNameTemplate.Ranh_Xa_Poly); return; } try { fcHemChinh = fw.OpenFeatureClass(DataNameTemplate.Hem); } catch { MessageBox.Show("Không tìm thấy bảng " + DataNameTemplate.Hem); return; } ISDETableEditor sdeTblTgdEditor = new SDETable(tblThuaGiaDatDraft, sdeConn.Workspace); IQueryFilter qrf = new QueryFilterClass(); #endregion string paramTableName = DataNameTemplate.Thong_So + "_" + _currentConfig.NamApDung; ITable paramTable = fw.OpenTable(paramTableName); Dictionary<string, object> pars4TinhGia = new Dictionary<string, object>(); Dictionary<string, object> pars4TinhDonGia = new Dictionary<string, object>(); IQueryFilter q = new QueryFilterClass(); q.WhereClause = ""; ICursor parCursor = paramTable.Search(q, false); IRow parRow = null; try { while ((parRow = parCursor.NextRow()) != null) { string parName = parRow.get_Value(parRow.Fields.FindField(_tblName.THONG_SO.TEN_THONG_SO)).ToString(); object parVal = parRow.get_Value(parRow.Fields.FindField(_tblName.THONG_SO.GIA_TRI)); try { pars4TinhGia.Add(parName, parVal); pars4TinhDonGia.Add(parName, parVal); } catch (Exception ex) { continue; } } } catch (Exception) { } finally { Marshal.ReleaseComObject(parCursor); } pars4TinhGia.Add(ExpressionParameters.GiaDatDuong, 0); pars4TinhGia.Add(ExpressionParameters.DienTichPl, 0); pars4TinhGia.Add(ExpressionParameters.GiaDatNn,0); pars4TinhGia.Add(ExpressionParameters.GiaDatONT, 0); pars4TinhGia.Add(ExpressionParameters.GiaDatHemChinh, 0); pars4TinhGia.Add(ExpressionParameters.GiaDatHemPhu, 0); pars4TinhDonGia.Add(ExpressionParameters.GiaDatDuong,0); pars4TinhDonGia.Add(ExpressionParameters.GiaDatNn,0); pars4TinhDonGia.Add(ExpressionParameters.GiaDatONT, 0); pars4TinhDonGia.Add(ExpressionParameters.GiaDatHemChinh, 0); pars4TinhDonGia.Add(ExpressionParameters.GiaDatHemPhu, 0); #region vong lap tung id #region khoi dau int rowTgdNnHandleUpdate = 0; string cachtinh=""; string cachtinhdongia = ""; bool result = false; List<object[,]> pairColValTgd = new List<object[,]>(); CalculationEventArg evt = new CalculationEventArg(); if (_caller != null) { evt.Reset(); evt.Log = "\n\nBắt đầu tính giá cho các thửa vừa xác định vị trí"; _caller.onCalculating(evt); } int len = newId.Count; int thuaCount = 1; //MessageBox.Show(len.ToString()); #endregion foreach (object o in newId) { #region lay thong tin thua gia dat IRow tgdRowNew = tblThuaGiaDatDraft.GetRow((int)o); string mathuaNew = tgdRowNew.get_Value(tgdRowNew.Fields.FindField(_fcName.FC_THUA_GIADAT_DRAFT.MA_THUA)).ToString(); string maduongNew = tgdRowNew.get_Value(tgdRowNew.Fields.FindField(_fcName.FC_THUA_GIADAT_DRAFT.MA_DUONG)).ToString(); string hesovitriNew = tgdRowNew.get_Value(tgdRowNew.Fields.FindField(_fcName.FC_THUA_GIADAT_DRAFT.HE_SO_K)).ToString(); object dientich = tgdRowNew.get_Value(tgdRowNew.Fields.FindField(_fcName.FC_THUA_GIADAT_DRAFT.DIEN_TICH)); object dientichpl = tgdRowNew.get_Value(tgdRowNew.Fields.FindField(_fcName.FC_THUA_GIADAT_DRAFT.DIEN_TICH_PHAP_LY)); object khoagia = tgdRowNew.get_Value(tgdRowNew.Fields.FindField(_fcName.FC_THUA_GIADAT_DRAFT.LOCKED)); object mahem=tgdRowNew.get_Value(tgdRowNew.Fields.FindField(_fcName.FC_THUA_GIADAT_DRAFT.MA_HEM)); object dorongHem=0; object tenHem = ""; //MessageBox.Show("line 237 CalcLandprice, maduong=" + maduongNew); if (khoagia != null) { if (khoagia.ToString() != "0" && khoagia.ToString()!="") { //MessageBox.Show(khoagia.ToString()); if (_caller != null) { evt.Reset(); evt.IdThuaKhoaGia = o; evt.mathua = mathuaNew; _caller.onCalculating(evt); } continue; } } #endregion #region lay cach tinh qrf.WhereClause = string.Format("{0}='{1}'", "hesovitri", hesovitriNew); ICursor curNew = tblHesoVitri.Search(qrf, false); try { IRow rowNew = curNew.NextRow(); if (rowNew != null) { cachtinh = rowNew.get_Value(_tblName.HESO_VITRI.GetIndex(_tblName.HESO_VITRI.CACH_TINH)).ToString(); cachtinhdongia = rowNew.get_Value(_tblName.HESO_VITRI.GetIndex(_tblName.HESO_VITRI.CACH_TINH_DON_GIA)).ToString(); //MessageBox.Show("line 262 CalcLandprice, cachtinhdongia=" + cachtinhdongia); } } catch (COMException comExc) { } finally { Marshal.ReleaseComObject(curNew); } Evaluation evalTinhGia = new Evaluation(cachtinh); Evaluation evalTinhDonGia = new Evaluation(cachtinhdongia); Evaluation evalCachtinh = new Evaluation(cachtinhdongia); #endregion #region lay gia dat duong //MessageBox.Show("line 365 maduong=" + maduongNew); qrf.WhereClause = string.Format("{0}='{1}'", _tblName.GIA_DAT_DUONG.MA_DUONG, maduongNew); ICursor gdDuongCur = null; gdDuongCur = tblGiaDatDuong.Search(qrf, false); IRow gdDuongRow = null; double giaduong = 0; try { if ((gdDuongRow = gdDuongCur.NextRow()) != null) { result = double.TryParse(gdDuongRow.get_Value(_tblName.GIA_DAT_DUONG.GetIndex(_tblName.GIA_DAT_DUONG.GIA_DAT)).ToString(), out giaduong); if (!result) { giaduong = 0; } //MessageBox.Show("line 292 CalcLandprice, giaduong=" + giaduong.ToString()); } } catch (COMException comExc) { } finally { Marshal.ReleaseComObject(gdDuongCur); } #endregion #region lay ten duong qrf.WhereClause = string.Format("{0}='{1}'", _tblName.TEN_DUONG.MA_DUONG, maduongNew); ICursor tenDuongCur = null; tenDuongCur = tblTenDuong.Search(qrf, false); IRow tenDuongRow = null; object tenduong = ""; object batdau = ""; object ketthuc = ""; try { if ((tenDuongRow = tenDuongCur.NextRow()) != null) { tenduong = tenDuongRow.get_Value(_tblName.TEN_DUONG.GetIndex(_tblName.TEN_DUONG.TEN_DUONG)); batdau = tenDuongRow.get_Value(_tblName.TEN_DUONG.GetIndex(_tblName.TEN_DUONG.BAT_DAU)); ketthuc = tenDuongRow.get_Value(_tblName.TEN_DUONG.GetIndex(_tblName.TEN_DUONG.KET_THUC)); } } catch (COMException comExc) { giaduong = 0; } finally { Marshal.ReleaseComObject(tenDuongCur); } #endregion #region lay loai dat, loai xa qrf.WhereClause = string.Format("{0}='{1}'", _fcName.FC_THUA.MA_THUA, mathuaNew); IFeatureCursor thuaCur = null; thuaCur = fcThua.Search(qrf, false); IFeature thuaFt = null; object loaidat = ""; object maxa = ""; try { if ((thuaFt = thuaCur.NextFeature()) != null) { loaidat = thuaFt.get_Value(_fcName.FC_THUA.GetIndex(_fcName.FC_THUA.LOAI_DAT)); maxa = thuaFt.get_Value(_fcName.FC_THUA.GetIndex(_fcName.FC_THUA.MA_XA)); } #region kiem tra co dat nong nghiep foreach (string s in TnLoaiDats.NONG_NGHIEP) { if (loaidat.ToString().Contains(s)) { _loaidatNn = s; break; } else { _loaidatNn = ""; } } #endregion } catch (COMException comExc) { } finally { Marshal.ReleaseComObject(thuaCur); } #endregion //danh cho thua co dat nong nghiep #region lay ma xa va gia dat nong nghiep object loaixa = ""; object giadatNnDeGhi = 0; object giadatNnDeTinh = 0; int loaiDoThi = 0; object loaiDatNnDeTinh = ""; string nnStart = hesovitriNew.Substring(0, 1); string nnEnd = hesovitriNew.Substring(hesovitriNew.Length - 1, 1); object giadatPnnNt = 0; double giahem = 0; double giahemPhu = 0; if (nnStart=="5" || nnStart=="2"|| nnStart=="1") { qrf.WhereClause = string.Format("{0}='{1}'", _fcName.FC_RANH_XA_POLY.MA_XA, maxa); IFeatureCursor xaFcr = fcXa.Search(qrf, false); IFeature xaFt = null; try { if ((xaFt = xaFcr.NextFeature()) != null) { loaixa = xaFt.get_Value(xaFt.Fields.FindField(_fcName.FC_RANH_XA_POLY.MA_LOAI_XA)); result = int.TryParse(xaFt.get_Value(xaFt.Fields.FindField(_fcName.FC_RANH_XA_POLY.MA_LOAI_XA)).ToString(), out loaiDoThi); } } catch (Exception ex) { loaixa = ""; } finally { Marshal.ReleaseComObject(xaFcr); } if (loaixa != "") { #region neu la dat o nong thon if (nnStart == "2") { object vitriPnn; object khuvucPnn; getVitriPnnNt(hesovitriNew, out vitriPnn, out khuvucPnn); qrf.WhereClause = string.Format("{0}='{1}' and {2}='{3}' and {4}='{5}'", _tblName.GIA_DAT_O_NONGTHON.MA_LOAI_XA, loaixa, _tblName.GIA_DAT_O_NONGTHON.VI_TRI, vitriPnn, _tblName.GIA_DAT_O_NONGTHON.MA_KHU_VUC, khuvucPnn); //MessageBox.Show("line 471 CalcLandprice, qrf=" + qrf.WhereClause); ICursor gdPnnCur = tblGiaDatPnnNt.Search(qrf, false); IRow gdPnnRow = null; try { if ((gdPnnRow = gdPnnCur.NextRow()) != null) { giadatPnnNt = gdPnnRow.get_Value(gdPnnRow.Fields.FindField(_tblName.GIA_DAT_O_NONGTHON.GIA_DAT)); } else { giadatPnnNt = 0; } //MessageBox.Show("line 484 CalcLandprice, giadat=" + giadatPnnNt); } catch (Exception ex) { giadatPnnNt = 0; } finally { Marshal.ReleaseComObject(gdPnnCur); } } #endregion #region neu co dat nong nghiep if (nnStart == "5" || (nnStart == "2" && nnEnd == "2") || nnStart == "1") { loaiDatNnDeTinh = _loaidatNn; object vitriNn = getVitriNongNghiep(hesovitriNew); if (loaiDoThi != 0) { vitriNn = 1; loaiDatNnDeTinh = "LNQ"; } qrf.WhereClause = string.Format("{0}='{1}' and {2}='{3}' and {4}='{5}'", _tblName.GIA_DAT_NONGNGHIEP.MA_LOAI_DAT, loaiDatNnDeTinh, _tblName.GIA_DAT_NONGNGHIEP.MA_LOAI_XA, loaixa, _tblName.GIA_DAT_NONGNGHIEP.VI_TRI, vitriNn); ICursor gdNnCur = tblGiaDatNn.Search(qrf, false); IRow gdNnRow = null; try { if ((gdNnRow = gdNnCur.NextRow()) != null) { giadatNnDeGhi = gdNnRow.get_Value(gdNnRow.Fields.FindField(_tblName.GIA_DAT_NONGNGHIEP.GIA_DAT)); } else { giadatNnDeGhi = 0; } } catch (Exception ex) { giadatNnDeGhi = 0; } finally { Marshal.ReleaseComObject(gdNnCur); } //MessageBox.Show(string.Format("line 331 CalcLandprice giadatnndegi={0}", giadatNnDeGhi)); //neu ko phai dat thuan nong nghiep if (nnStart != "1") { if (double.Parse(dientichpl.ToString()) < 200) { giadatNnDeTinh = 0; } else { giadatNnDeTinh = giadatNnDeGhi; } } else { giadatNnDeTinh = giadatNnDeGhi; } } #endregion } //lay gia dat nn o vi tri theo quy dinh (vt3) //qrf.WhereClause=string.Format("{0}='{1}' and {2}='{3}'",_tblName.GIA_DAT_NONGNGHIEP.MA_LOAI_DAT,_loaidatNn,_tblName.GIA_DAT_NONGNGHIEP.MA_LOAI_XA,) } #endregion if (mahem != null) { #region lay thong tin hem //MessageBox.Show("line 567 CalcLandprice, mahem=" + mahem); if (mahem.ToString() != "0" && mahem.ToString() != "") { qrf.WhereClause = string.Format("{0}='{1}'", _fcName.FC_HEM.MA_HEM, mahem); IFeatureCursor hemFcur = fcHemChinh.Search(qrf, false); IFeature hemFt = null; int maHemChinh = 0; try { if ((hemFt = hemFcur.NextFeature()) != null) { dorongHem = hemFt.get_Value(hemFt.Fields.FindField(_fcName.FC_HEM.DO_RONG)); tenHem = hemFt.get_Value(hemFt.Fields.FindField(_fcName.FC_HEM.TEN_HEM)); maduongNew = hemFt.get_Value(hemFt.Fields.FindField(_fcName.FC_HEM.MA_DUONG)).ToString(); result = int.TryParse(hemFt.get_Value(hemFt.Fields.FindField(_fcName.FC_HEM.HEM_CHINH)).ToString(), out maHemChinh); if (!result) { maHemChinh = 0; } //MessageBox.Show("line 586 CalcLandprice,mahemchinh=" + maHemChinh); } } catch (Exception ex) { //MessageBox.Show("line 566 CalcLandprice, ex=" + ex.ToString()); } finally { Marshal.ReleaseComObject(hemFcur); } #region lay gia dat hem chinh string hsvitriHem = getHesoHem(hesovitriNew); //MessageBox.Show("line 597 hsvitrihem=" + hsvitriHem); if (hsvitriHem == "0") { continue; } if (maHemChinh == 0) { qrf.WhereClause = string.Format("{0}='{1}' and {2}='{3}'", _fcName.FC_GIA_DAT_HEM.MA_HEM, mahem, _fcName.FC_GIA_DAT_HEM.HE_SO, hsvitriHem); //MessageBox.Show("line 603 CalcLandprice, qrf=" + qrf.WhereClause); IFeatureCursor gdHemCur = null; gdHemCur = fcGiaDatHem.Search(qrf, false); IFeature gdHemRow = null; //MessageBox.Show("line 588 CalcLandprice, giaHem=" + _fcName.FC_GIA_DAT_HEM.GetIndex(_fcName.FC_GIA_DAT_HEM.GIA_DAT)); try { if ((gdHemRow = gdHemCur.NextFeature()) != null) { result = double.TryParse(gdHemRow.get_Value(_fcName.FC_GIA_DAT_HEM.GetIndex(_fcName.FC_GIA_DAT_HEM.GIA_DAT)).ToString(), out giahem); if (!result) { giahem = 0; } //MessageBox.Show("line 588 CalcLandprice, giaHem=" + giahem.ToString()); } } catch (COMException comExc) { //MessageBox.Show("line 593 CalcLandprice comexc=" + comExc.ToString()); } finally { Marshal.ReleaseComObject(gdHemCur); } } #endregion #region lay gia hem phu else { qrf.WhereClause = string.Format("{0}='{1}' and {2}='{3}'", _fcName.FC_GIA_DAT_HEM_PHU.MA_HEM, mahem, _fcName.FC_GIA_DAT_HEM_PHU.HE_SO, hsvitriHem); //MessageBox.Show("line 632 CalcLandprice, qrf=" + qrf.WhereClause); IFeatureCursor gdHemPhuCur = null; gdHemPhuCur = fcGiaDatHemPhu.Search(qrf, false); IFeature gdHemPhuRow = null; //MessageBox.Show("line 588 CalcLandprice, giaHem=" + _fcName.FC_GIA_DAT_HEM.GetIndex(_fcName.FC_GIA_DAT_HEM.GIA_DAT)); try { if ((gdHemPhuRow = gdHemPhuCur.NextFeature()) != null) { result = double.TryParse(gdHemPhuRow.get_Value(_fcName.FC_GIA_DAT_HEM_PHU.GetIndex(_fcName.FC_GIA_DAT_HEM_PHU.GIA_DAT)).ToString(), out giahemPhu); if (!result) { giahemPhu = 0; } //MessageBox.Show("line 646 CalcLandprice, giaHemPhu=" + giahemPhu.ToString()); } } catch (COMException comExc) { //MessageBox.Show("line 593 CalcLandprice comexc=" + comExc.ToString()); } finally { Marshal.ReleaseComObject(gdHemPhuCur); } } #endregion #region lay gia duong tu lop gia hem qrf.WhereClause = string.Format("{0}='{1}'", _tblName.GIA_DAT_DUONG.MA_DUONG, maduongNew); gdDuongCur = null; gdDuongCur = tblGiaDatDuong.Search(qrf, false); gdDuongRow = null; giaduong = 0; try { if ((gdDuongRow = gdDuongCur.NextRow()) != null) { result = double.TryParse(gdDuongRow.get_Value(_tblName.GIA_DAT_DUONG.GetIndex(_tblName.GIA_DAT_DUONG.GIA_DAT)).ToString(), out giaduong); if (!result) { giaduong = 0; } //MessageBox.Show("line 292 CalcLandprice, giaduong=" + giaduong.ToString()); } } catch (COMException comExc) { } finally { Marshal.ReleaseComObject(gdDuongCur); } #endregion } #endregion } //MessageBox.Show(string.Format("line 346 CalcLandprice giadatnndegi={0}, giadatnndetinh={1}", giadatNnDeGhi, giadatNnDeTinh)); #region lay gia dat o nong thon int intHsk = int.Parse(hesovitriNew); #endregion #region tinh gia //evalTinhGia.Giadatduong = giaduong; //evalTinhGia.Dientich = dientich; //evalTinhGia.Dientichpl = dientichpl; //evalTinhGia.GiadatNn = giadatNnDeTinh; //evalTinhDonGia.Giadatduong = giaduong; //evalTinhDonGia.GiadatNn = giadatNnDeTinh; //Dictionary<string, object> pars = new Dictionary<string, object>(); //MessageBox.Show("line 609 CalcLandprice, giaHem=" + giahem.ToString()); pars4TinhGia[ExpressionParameters.GiaDatDuong] = giaduong; pars4TinhGia[ExpressionParameters.DienTichPl] = dientichpl; pars4TinhGia[ExpressionParameters.GiaDatNn] = giadatNnDeTinh; pars4TinhGia[ExpressionParameters.GiaDatONT] = giadatPnnNt; pars4TinhGia[ExpressionParameters.GiaDatHemChinh] = giahem; pars4TinhGia[ExpressionParameters.GiaDatHemPhu] = giahemPhu; //pars.Add(ExpressionParameters.HeSoDatSxkd, _currentConfig.PGiaDatSxkddt); evalTinhGia.Params = pars4TinhGia; //Dictionary<string, object> pars1 = new Dictionary<string, object>(); //pars1.Add(ExpressionParameters.GiaDatDuong, giaduong); //pars1.Add(ExpressionParameters.GiaDatNn, giadatNnDeTinh); //pars1.Add(ExpressionParameters.HeSoDatSxkd, _currentConfig.PGiaDatSxkddt); pars4TinhDonGia[ExpressionParameters.GiaDatDuong] = giaduong; pars4TinhDonGia[ExpressionParameters.DienTichPl] = dientichpl; pars4TinhDonGia[ExpressionParameters.GiaDatNn] = giadatNnDeTinh; pars4TinhDonGia[ExpressionParameters.GiaDatONT] = giadatPnnNt; pars4TinhDonGia[ExpressionParameters.GiaDatHemChinh] = giahem; pars4TinhDonGia[ExpressionParameters.GiaDatHemPhu] = giahemPhu; evalTinhDonGia.Params = pars4TinhDonGia; object giaMoiTinh = evalTinhGia.EvaluateLandPrice(); object dongiaMoiTinh = evalTinhDonGia.EvaluateLandPrice(); //MessageBox.Show(string.Format("line 660 CalcLandprice dongia={0}", dongiaMoiTinh)); #endregion #region ghi cach tinh _methodBuilder.BatDau = batdau; _methodBuilder.CachTinh = cachtinh; _methodBuilder.CachTinhDonGia = cachtinhdongia; _methodBuilder.GiaDatNN = giadatNnDeGhi; _methodBuilder.GiaDuong = giaduong; _methodBuilder.KetThuc = ketthuc; _methodBuilder.LoaiDat = loaidat; _methodBuilder.TenDuong = tenduong; _methodBuilder.DoRongHem = dorongHem; _methodBuilder.LoaiXa = loaixa; string strCachtinh=_methodBuilder.GetMethodString(hesovitriNew); //evt.Reset(); //evt.Log = string.Format("\n\nĐộ dài cách tính:{0}, cachtinh={1}",strCachtinh.Length,strCachtinh); //_caller.onCalculating(evt); //MessageBox.Show(string.Format("line 241 CalcLandprice {0}, {1}",hesovitriNew,TnHeSoK.DatOMatTienDt)); //if (hesovitriNew == TnHeSoK.DatOMatTienDt.ToString()) //{ // strCachtinh = string.Format("Đất ở đô thị ({0}), mặt tiền đường {1} (giá={2}) đoạn từ {3} đến {4}. Giá đất = {5}", loaidat, tenduong, giaduong, batdau, ketthuc, cachtinhdongia); // //MessageBox.Show(string.Format("line 241 CalcLandprice \n{0}", strCachtinh)); //} //else if (hesovitriNew == TnHeSoK.DatSxkdMatTienDt.ToString()) //{ // strCachtinh = string.Format("Đất sxkd tại đô thị ({0}) (hệ số ={1}), mặt tiền đường {2} (giá={3}) đoạn từ {4} đến {5}. Giá đất = {6}", loaidat, _currentConfig.PGiaDatSxkddt, tenduong,giaduong, batdau, ketthuc, cachtinhdongia); //} //else if (hesovitriNew == TnHeSoK.DatONnMatTien.ToString()) //{ // strCachtinh = string.Format("Đất ở tại đô thị có đất nông nghiệp ({0}) (giá đất nn ={1}), mặt tiền đường {2} (giá={3}) đoạn từ {4} đến {5}. Giá đất = {6}", loaidat, giadatNnDeGhi, tenduong, giaduong, batdau, ketthuc, cachtinhdongia); //} #endregion #region lay cach ghi cach tinh gia //string ct = string.Format(cachtinh); //MessageBox.Show(evalCachtinh.EvaluateMethod().ToString()); #endregion #region luu thong tin gia va cach tinh pairColValTgd.Add(new object[,] { { _fcName.FC_THUA_GIADAT_DRAFT.GetIndex(_fcName.FC_THUA_GIADAT_DRAFT.DON_GIA), dongiaMoiTinh } }); pairColValTgd.Add(new object[,] { { _fcName.FC_THUA_GIADAT_DRAFT.GetIndex(_fcName.FC_THUA_GIADAT_DRAFT.GIA_DAT), giaMoiTinh } }); pairColValTgd.Add(new object[,] { { _fcName.FC_THUA_GIADAT_DRAFT.GetIndex(_fcName.FC_THUA_GIADAT_DRAFT.CACH_TINH), strCachtinh } }); sdeTblTgdEditor.CacheData(o, rowTgdNnHandleUpdate, pairColValTgd, EnumTypeOfEdit.UPDATE); rowTgdNnHandleUpdate++; pairColValTgd.Clear(); #endregion #region ---log if (_caller != null) { evt.Reset(); evt.IdThuaTinhGia = o;// new object[,] { { o, "tui", "soto", "sothua" } }; evt.mathua = mathuaNew; _caller.onCalculating(evt); evt.Reset(); if (thuaCount < len) { if (thuaCount % 10 == 0) { evt.Log = string.Format("\n---Đã tính cho {0} thửa----", thuaCount); } thuaCount++; } else if (thuaCount == len) { evt.Log = string.Format("\n---Đã tính cho {0} thửa---", thuaCount); } _caller.onCalculating(evt); } #endregion } #endregion #region luu thong tin vao bang gia dat if (!sdeTblTgdEditor.IsEditing()) { sdeTblTgdEditor.StartEditing(esriMultiuserEditSessionMode.esriMESMVersioned); sdeTblTgdEditor.StartEditOperation(); } //else //{ // //try // //{ // // sdeTblTgdEditor.SaveEdit(); // // sdeTblTgdEditor.StopEditOperation(); // // sdeTblTgdEditor.StopEditing(true); // //} // //catch // //{ // // sdeTblTgdEditor.StopEditOperation(); // // sdeTblTgdEditor.StopEditing(false); // //} // //sdeTblTgdEditor.StartEditing(esriMultiuserEditSessionMode.esriMESMVersioned); // //sdeTblTgdEditor.StartEditOperation(); //} #region ----log if (_caller != null) { evt.Log = string.Format("\n----||| Đang lưu bảng {0} |||---- ", tgdDraft); _caller.onCalculating(evt); } #endregion try { sdeTblTgdEditor.SaveEdit(); sdeTblTgdEditor.StopEditOperation(); sdeTblTgdEditor.StopEditing(true); } catch (Exception ex) { sdeTblTgdEditor.StopEditOperation(); sdeTblTgdEditor.StopEditing(false); } #region ----log if (_caller != null) { evt.Log = string.Format("\n----||| Đã lưu bảng {0} |||---- ", tgdDraft); _caller.onCalculating(evt); } #endregion #endregion #region loc gia dat ThreadStart filterThread =()=>fil(newId); Thread t = new Thread(filterThread); t.Start(); //while (!t.IsAlive) ; //Thread.Sleep(1); //t.Abort(); t.Join(); #endregion #endregion }
IFeatureClass IDataManager.TnOpenFeatureClassFromSDE(IWorkspaceEdit workspace, string featureClass) { IFeatureWorkspace fwsp = (IFeatureWorkspace)workspace; return fwsp.OpenFeatureClass(featureClass); }
public void CalcGiaHemPhu(List<object> newId) { #region khoi tao cac bien SdeConnection conn = new SdeConnection(); ISdeConnectionInfo sdeConn = conn as ISdeConnectionInfo; _wspEdit = (IWorkspaceEdit)sdeConn.Workspace; _mwspEdit = (IMultiuserWorkspaceEdit)sdeConn.Workspace; IFeatureWorkspace fw = (IFeatureWorkspace)sdeConn.Workspace; copyTool = new DataManager(sdeConn.Workspace, sdeConn.Environment); this._fcName = new TnFeatureClassName(sdeConn.Workspace); this._tblName = new TnTableName(sdeConn.Workspace); string gdHemPhu = string.Format("{0}_{1}", DataNameTemplate.Gia_Hem_Phu, this._currentConfig.NamApDung); string gdHemChinh = string.Format("{0}_{1}", DataNameTemplate.Gia_Hem, this._currentConfig.NamApDung); _fcName.FC_GIA_DAT_HEM_PHU.NAME = gdHemPhu; _fcName.FC_GIA_DAT_HEM_PHU.InitIndex(); _fcName.FC_GIA_DAT_HEM.NAME = gdHemChinh; _fcName.FC_GIA_DAT_HEM.InitIndex(); IFeatureClass gdhPhuFeatureClass = null; ITable tblgdHemPhu = null; try { gdhPhuFeatureClass = fw.OpenFeatureClass(gdHemPhu); tblgdHemPhu = (ITable)gdhPhuFeatureClass; } catch { MessageBox.Show("Không tìm thấy bảng " + gdHemPhu); return; } IFeatureClass gdhChinhFeatureClass; ITable tblHesoVitri; ITable tblTenDuong; ITable tblHemChinh; #endregion #region dinh nghia cac bien try { tblTenDuong = fw.OpenTable(DataNameTemplate.Ten_Duong); } catch (Exception ex) { MessageBox.Show("Không tìm thấy bảng " + DataNameTemplate.Ten_Duong); return; } try { gdhChinhFeatureClass = fw.OpenFeatureClass(gdHemChinh); } catch (Exception ex) { MessageBox.Show("Không tìm thấy bảng " + gdHemChinh); return; } try { tblHemChinh = fw.OpenTable(DataNameTemplate.Hem); } catch (Exception ex) { MessageBox.Show("Không tìm thấy bảng " + DataNameTemplate.Hem); return; } ISDETableEditor sdeTblGdhEditor = new SDETable(tblgdHemPhu, sdeConn.Workspace); IQueryFilter qrf = new QueryFilterClass(); #endregion #region vong lap tung id #region khoi dau int rowGdhHandleUpdate = 0; string cachtinh = ""; string cachtinhdongia = ""; bool result = false; List<object[,]> pairColValTgd = new List<object[,]>(); CalculationEventArg evt = new CalculationEventArg(); if (_caller != null) { evt.Reset(); evt.Log = "\n\nBắt đầu tính giá cho các hẻm vừa xác định vị trí"; _caller.onCalculating(evt); } int len = newId.Count; int thuaCount = 1; //MessageBox.Show(len.ToString()); #endregion foreach (object o in newId) { if (!((int)o > 0)) { //MessageBox.Show("line 737 CalcLandprice: không thể tính cho hẻm có id=" + o); continue; } #region lay thong tin hem gia dat IRow gdhRowNew = null; try { gdhRowNew = tblgdHemPhu.GetRow((int)o); } catch (Exception ex) { } if (gdhRowNew == null) { continue; } string maHemChinhNew = gdhRowNew.get_Value(gdhRowNew.Fields.FindField(_fcName.FC_GIA_DAT_HEM_PHU.MA_HEM_CHINH)).ToString(); int hesovitriNew; result = int.TryParse(gdhRowNew.get_Value(gdhRowNew.Fields.FindField(_fcName.FC_GIA_DAT_HEM_PHU.HE_SO)).ToString(), out hesovitriNew); object khoagia = gdhRowNew.get_Value(gdhRowNew.Fields.FindField(_fcName.FC_GIA_DAT_HEM_PHU.LOCKED)); object mahem = gdhRowNew.get_Value(gdhRowNew.Fields.FindField(_fcName.FC_GIA_DAT_HEM_PHU.MA_HEM)); int dorongHem = 0; object tenHem = ""; //MessageBox.Show("line 237 CalcLandprice, maduong=" + maduongNew); if (khoagia != null) { if (khoagia.ToString() != "0" && khoagia.ToString() != "") { //MessageBox.Show(khoagia.ToString()); //evt.Reset(); //evt.IdThuaKhoaGia = o; //evt.mathua = mahem; //_caller.onCalculating(evt); continue; } } #endregion #region lay gia dat hem chinh qrf.WhereClause = string.Format("{0}='{1}'", _fcName.FC_GIA_DAT_HEM.MA_HEM, maHemChinhNew); IFeatureCursor gdHemChinhCur = null; gdHemChinhCur = gdhChinhFeatureClass.Search(qrf, false); IFeature gdHemChinhRow = null; double giaHemChinh = 0; object maduong = 0; try { if ((gdHemChinhRow = gdHemChinhCur.NextFeature()) != null) { result = double.TryParse(gdHemChinhRow.get_Value(_fcName.FC_GIA_DAT_HEM.GetIndex(_fcName.FC_GIA_DAT_HEM.GIA_DAT)).ToString(), out giaHemChinh); if (!result) { giaHemChinh = 0; } maduong=gdHemChinhRow.get_Value(_fcName.FC_GIA_DAT_HEM.GetIndex(_fcName.FC_GIA_DAT_HEM.MA_DUONG)); //MessageBox.Show("line 1259 CalcLandprice, giahemchinh=" + giaHemChinh.ToString()); } } catch (COMException comExc) { } finally { Marshal.ReleaseComObject(gdHemChinhCur); } #endregion if (mahem != null) { #region lay thong tin hem if (mahem.ToString() != "0" && mahem.ToString() != "") { qrf.WhereClause = string.Format("{0}='{1}'", _fcName.FC_HEM.MA_HEM, mahem); ICursor hemFcur = tblHemChinh.Search(qrf, false); IRow hemRow = null; try { if ((hemRow = hemFcur.NextRow()) != null) { object dorong = hemRow.get_Value(hemRow.Fields.FindField(_fcName.FC_HEM.DO_RONG)); result = int.TryParse(dorong.ToString(), out dorongHem); if (!result) { dorongHem = 0; } tenHem = hemRow.get_Value(hemRow.Fields.FindField(_fcName.FC_HEM.TEN_HEM)); } } catch (Exception ex) { } finally { Marshal.ReleaseComObject(hemFcur); } } #endregion } #region lay ten duong qrf.WhereClause = string.Format("{0}='{1}'", _tblName.TEN_DUONG.MA_DUONG, maduong); ICursor tenDuongCur = null; tenDuongCur = tblTenDuong.Search(qrf, false); IRow tenDuongRow = null; object tenduong = ""; object batdau = ""; object ketthuc = ""; try { if ((tenDuongRow = tenDuongCur.NextRow()) != null) { tenduong = tenDuongRow.get_Value(_tblName.TEN_DUONG.GetIndex(_tblName.TEN_DUONG.TEN_DUONG)); batdau = tenDuongRow.get_Value(_tblName.TEN_DUONG.GetIndex(_tblName.TEN_DUONG.BAT_DAU)); ketthuc = tenDuongRow.get_Value(_tblName.TEN_DUONG.GetIndex(_tblName.TEN_DUONG.KET_THUC)); } } catch (COMException comExc) { giaHemChinh = 0; } finally { Marshal.ReleaseComObject(tenDuongCur); } #endregion object giaMoiTinh = 0; double hesorong = 1; double hesosau = 1; #region chon chieu rong if (dorongHem < 3.5) { hesorong = _currentConfig.PHemChinhRongDuoi3_5m; } else if (dorongHem < 6) { hesorong = _currentConfig.PHemChinhRongTren3_5m; } else { hesorong = _currentConfig.PHemChinhRongTren6m; } #endregion #region chon chieu sau if (hesovitriNew == 1) //chieu sau <100m { hesosau = _currentConfig.PHemSauDuoi100m; } else if (hesovitriNew == 2) { hesosau = _currentConfig.PHemSauDuoi200m; } else { hesosau = _currentConfig.PHemSauTren200m; } #endregion giaMoiTinh = giaHemChinh * hesorong * hesosau; //MessageBox.Show("line 868 CalcLandprice giamoitinh=" + giaMoiTinh); pairColValTgd.Add(new object[,] { { _fcName.FC_GIA_DAT_HEM_PHU.GetIndex(_fcName.FC_GIA_DAT_HEM_PHU.GIA_DAT), giaMoiTinh } }); sdeTblGdhEditor.CacheData(o, 0, pairColValTgd, EnumTypeOfEdit.UPDATE); pairColValTgd.Clear(); } #endregion #region luu thong tin vao bang gia dat if (!sdeTblGdhEditor.IsEditing()) { sdeTblGdhEditor.StartEditing(true); sdeTblGdhEditor.StartEditOperation(); } else { try { sdeTblGdhEditor.SaveEdit(); sdeTblGdhEditor.StopEditOperation(); sdeTblGdhEditor.StopEditing(true); } catch { sdeTblGdhEditor.StopEditOperation(); sdeTblGdhEditor.StopEditing(false); } sdeTblGdhEditor.StartEditing(esriMultiuserEditSessionMode.esriMESMVersioned); sdeTblGdhEditor.StartEditOperation(); } #region ----log if (_caller != null) { evt.Log = string.Format("\n----||| Đang lưu vị trí các thửa vào bảng {0} |||---- ", gdHemPhu); _caller.onCalculating(evt); } #endregion try { sdeTblGdhEditor.SaveEdit(); sdeTblGdhEditor.StopEditOperation(); sdeTblGdhEditor.StopEditing(true); } catch (Exception ex) { MessageBox.Show("line 1405 CalcGiaHemChinh ex=" + ex.ToString()); sdeTblGdhEditor.StopEditOperation(); sdeTblGdhEditor.StopEditing(false); } #region ----log if (_caller != null) { evt.Log = string.Format("\n----||| Đã lưu vị trí các thửa vào bảng {0} |||---- ", gdHemPhu); _caller.onCalculating(evt); } #endregion #endregion }
private static void setFeatureSpatialReference(IFeatureLayer ifl_active, IName name, out IFeatureWorkspace workspace, out IWorkspaceEdit iwe, out IFields flds) { IGeoDataset igd_dest = (IGeoDataset)ifl_active.FeatureClass; // Open the workspace through the name object. workspace = (IFeatureWorkspace)name.Open(); iwe = (IWorkspaceEdit)workspace; ESRI.ArcGIS.Geodatabase.IObjectClassDescription objectClassDescription = new ESRI.ArcGIS.Geodatabase.FeatureClassDescriptionClass(); flds = objectClassDescription.RequiredFields; IFieldEdit fld_Edit = (IFieldEdit)flds.get_Field(flds.FindField("Shape")); IGeometryDefEdit pGeoDef = (IGeometryDefEdit)fld_Edit.GeometryDef; pGeoDef.SpatialReference_2 = igd_dest.SpatialReference; }