AO实现通过控制点校正矢量数据
分享
实现通过AO调用ITransformationMethodGEN接口完成矢量数据的控制点校正过程。
代码如下:
使用过程需要注意被校正数据的范围(extent),AO的调用方式等问题
文章来源:http://blog.csdn.net/sydbc/article/details/17436221
代码如下:
private void button1_Click(object sender, EventArgs e)
{
List<IPoint> fromPoints = new List<IPoint>();
fromPoints.Add(CreatePoint(42430970.709720, 4850893.615587));
fromPoints.Add(CreatePoint(42431498.100028, 4850849.282629));
fromPoints.Add(CreatePoint(42431354.325240, 4851767.808883));
fromPoints.Add(CreatePoint(42431733.654275, 4850625.697095));
fromPoints.Add(CreatePoint(42432361.835894, 4850728.827894));
IPoint[]fromPointsArray = fromPoints.ToArray();
List<IPoint> toPoints = new List<IPoint>();
toPoints.Add(CreatePoint(-15873.806091, -8103.440430));
toPoints.Add(CreatePoint(-15346.064880, -8143.366577));
toPoints.Add(CreatePoint(-15497.498108, -7226.063110));
toPoints.Add(CreatePoint(-15108.653687, -8364.979126));
toPoints.Add(CreatePoint(-14481.355103, -8256.602905));
IPoint[]toPointsArray = toPoints.ToArray();
//Define control points.
ITransformationMethodGEN transformMethod = null;
try
{
transformMethod = new AffineTransformationMethodClass();
}
catch(Exception ex)
{
MessageBox.Show(ex.Message, “错误!”);
}
try
{
transformMethod.DefineFromControlPoints(ref fromPointsArray, ref toPointsArray,
null, axMapControl1.ActiveView.FullExtent);
}
catch(Exception ex)
{
System.Windows.Forms.MessageBox.Show(“Define Control Points failed.”);
return;
}
//Create a feature cursor based on the predefined query.
IFeatureLayer featureLayer = axMapControl1.Map.get_Layer(0) as IFeatureLayer;
if(featureLayer == null)
{
System.Windows.Forms.MessageBox.Show(
“Please load a feature layer as the first layer in TOC.”);
return;
}
IFeatureClass featureClass = featureLayer.FeatureClass;
//IQueryFilter queryFilter = new QueryFilterClass();
//queryFilter.WhereClause = “”;
IFeatureCursor featureCursor = featureClass.Search(null, false);
IFeatureDataset pFeatureDataset = featureClass.FeatureDataset;
IDatasetpDataset = pFeatureDataset as IDataset;
//Transform.features.
//IWorkspaceFactory pwsf=new FileGDBWorkspaceFactory();
IWorkspacepws = null;//pwsf.OpenFromFile(@”C:UsersyaoDocumentsArcGISDefault.gdb”, 0);
pws =pDataset.Workspace;
IWorkspaceEdit workspaceEdit = pws as IWorkspaceEdit;
workspaceEdit.StartEditOperation();
workspaceEdit.StartEditing(true);
transformMethod.Transform(featureCursor, null);
workspaceEdit.StopEditing(true);
workspaceEdit.StopEditOperation();
axMapControl1.ActiveView.Refresh();
MessageBox.Show(“完成!”);
}
private IPoint CreatePoint(doublexVal, double yVal)
{
//Thisfunction creates a point.
IPoint point= new PointClass();
point.X =xVal;
point.Y =yVal;
returnpoint;
}
使用过程需要注意被校正数据的范围(extent),AO的调用方式等问题
文章来源:http://blog.csdn.net/sydbc/article/details/17436221
0 个评论
相关问题
- 作为Desktop用户对数据的获取比较乏力,可能缺了哪些知识?
- 有谁知道哪里可以免费获取各省市地图数据呢,包括详细的shape文件数据
- 有栅格数据a(大数据),小数据b,怎么从a中扣掉b,得到a数据剩下的部分?栅格能裁剪取反吗?
- 在Visual studio 2015 中使用 Arcgis API for JavaScript v3.16 如何实现代码智能提示?
- 在windows server2008 R2 64位中安装了portal 10.5 设置好托管arcgis server站点,并用data store为托管数据库,发布数据出错
- cityengine怎么导入arcgis的shp数据,对shp数据有什么要求
- ArcGIS数据库数据逐图幅裁剪
- ArcEngine 复制镶嵌数据集
- 镶嵌数据集 Add Rasters
- ArcGis打开图层后显示unknown units,想要define一个投影坐标系,但数据大小似乎不一致
- arcgis api for javascript 4.0版本中找不到draw工具,如何实现拉框查询、几何查询?