/// <summary>
/// AO实现通过控制点校正矢量数据
/// </summary>
/// <param name="fromDisplacementPoints">源控制点</param>
/// <param name="toDisplacementPoints">目标控制点</param>
/// <param name="identifyLinks"></param>
/// <param name="extent"></param>
public static void AffineTransformation(IPoint[] fromDisplacementPoints, IPoint[] toDisplacementPoints, IEnumGeometry identifyLinks, IEnvelope extent, IFeatureClass featureClass)
{
try
{
ITransformationMethodGEN transformMethod = new AffineTransformationMethodClass();
transformMethod.DefineFromControlPoints(ref fromDisplacementPoints, ref toDisplacementPoints,
identifyLinks, extent);
IQueryFilter queryFilter = new QueryFilterClass();
IFeatureCursor featureCursor = featureClass.Search(null, false);
IDataset dataset = (IDataset)featureClass;
IWorkspace workspace = dataset.Workspace;
IWorkspaceEdit workspaceEdit = (IWorkspaceEdit)workspace;
/// AO实现通过控制点校正矢量数据
/// </summary>
/// <param name="fromDisplacementPoints">源控制点</param>
/// <param name="toDisplacementPoints">目标控制点</param>
/// <param name="identifyLinks"></param>
/// <param name="extent"></param>
public static void AffineTransformation(IPoint[] fromDisplacementPoints, IPoint[] toDisplacementPoints, IEnumGeometry identifyLinks, IEnvelope extent, IFeatureClass featureClass)
{
try
{
ITransformationMethodGEN transformMethod = new AffineTransformationMethodClass();
transformMethod.DefineFromControlPoints(ref fromDisplacementPoints, ref toDisplacementPoints,
identifyLinks, extent);
IQueryFilter queryFilter = new QueryFilterClass();
IFeatureCursor featureCursor = featureClass.Search(null, false);
IDataset dataset = (IDataset)featureClass;
IWorkspace workspace = dataset.Workspace;
IWorkspaceEdit workspaceEdit = (IWorkspaceEdit)workspace;
// Start an edit session and edit operation.
workspaceEdit.StartEditing(false);
workspaceEdit.StartEditOperation();
transformMethod.Transform(featureCursor, null);
workspaceEdit.StopEditOperation();
workspaceEdit.StopEditing(true);
workspaceEdit.StartEditing(false);
workspaceEdit.StartEditOperation();
transformMethod.Transform(featureCursor, null);
workspaceEdit.StopEditOperation();
workspaceEdit.StopEditing(true);
}
catch (Exception ex)
{
string sss = ex.Message;
}
}
/// <summary>
/// AO实现通过控制点校正矢量数据
/// </summary>
/// <param name="fromDisplacementPoints">源控制点</param>
/// <param name="toDisplacementPoints">目标控制点</param>
/// <param name="identifyLinks"></param>
/// <param name="extent"></param>
public static void AffineTransformation2(IPoint[] fromDisplacementPoints, IPoint[] toDisplacementPoints, IEnumGeometry identifyLinks, IEnvelope extent, IGeometry pGeo)
{
try
{
ITransformationMethodGEN transformMethod = new AffineTransformationMethodClass();
transformMethod.DefineFromControlPoints(ref fromDisplacementPoints, ref toDisplacementPoints,
identifyLinks, pGeo.Envelope);
transformMethod.TransformShape(pGeo);
catch (Exception ex)
{
string sss = ex.Message;
}
}
/// <summary>
/// AO实现通过控制点校正矢量数据
/// </summary>
/// <param name="fromDisplacementPoints">源控制点</param>
/// <param name="toDisplacementPoints">目标控制点</param>
/// <param name="identifyLinks"></param>
/// <param name="extent"></param>
public static void AffineTransformation2(IPoint[] fromDisplacementPoints, IPoint[] toDisplacementPoints, IEnumGeometry identifyLinks, IEnvelope extent, IGeometry pGeo)
{
try
{
ITransformationMethodGEN transformMethod = new AffineTransformationMethodClass();
transformMethod.DefineFromControlPoints(ref fromDisplacementPoints, ref toDisplacementPoints,
identifyLinks, pGeo.Envelope);
transformMethod.TransformShape(pGeo);
}
catch (Exception ex)
{
string sss = ex.Message;
}
catch (Exception ex)
{
string sss = ex.Message;
}
}
注意点:以上代码并不一定正确,主要是想说明坐标转换需要用到的API,搞AE开发的人能明白