Skip To Content

CoordinateSystem.DatumTransformationAdd (.NET)

CoordinateSystem.DatumTransformationAdd 方法用于在当前工程图中添加基准面变换。 如果基准面变换(from 坐标系和 to 坐标系)已存在,则将覆盖该基准面变换。 此方法将返回添加的基准变换定义。

注:

当工程图包含 web 要素图层时,将无法添加基准面变换。

声明

public Dictionary<string, object> Esri.ArcGISForAutoCAD.CoordinateSystem.DatumTransformationAdd(Document doc, string fromCS, string toCS, IEnumerable<(string Direction, string Step)> transformationSteps)

参数

类型名称描述必填

文档

doc

要进行操作的 AutoCAD 文档。

必填

string

fromCS

字符串形式的 Esri 坐标系的有效熟知坐标系 ID (WKID) 或熟知文本 (WKT)。

必填

string

toCS

字符串形式的 Esri 坐标系的有效 WKID 或 WKT。

必填

IEnumerable<(string Direction, string Step)>

transformationSteps

命名元组的集合,其中第一个值为 Direction 值,第二个值为 Step 值。 Direction 值是步骤的方向("Forward""Reverse"),是将应用变换步骤的方向。 Step 值是字符串形式的变换步骤的 WKID 或 WKT。

必填

返回

类型描述

Dictionary<string, object>

字典形式的已添加基准面变换的定义。 字典具有以下键:FromToStepsFromTo 键具有表示坐标系的字符串值。 Steps 键的值是坐标系变换步骤的字典集合。 每个变换步骤字典都有 StepDirection 键。 Step 键具有字符串形式的步骤值,而 Direction 键指示应用变换步骤的顺序,可以是 "Forward""Reverse"

错误条件备注

如果参数无效或工程图中存在 Web 要素图层,则此方法可能会抛出异常或者返回 null

用法

当创建复合基准面变换时,每个步骤的顺序必须正确。 对于以下示例 2,108355 为第一步,108282 为第二步和最后一步。 方向必须使用 "Forward""Reverse" 提供。

ArcGIS for AutoCAD 不会验证提供的变换步骤。 如果设置方法的任何部分无效或者应用顺序错误,则 ArcGIS for AutoCAD 可能会错误地绘制图层。

示例 1

将单步基准面变换添加到由 WKID 表示的起始坐标系和目标坐标系之间的当前工程图中,以正向顺序应用并打印其基准面变换定义。

// Initialize
var doc = Application.DocumentManager.MdiActiveDocument;

// Add the datum transformation
var transformationSteps = new List<(string, string)> { ("Forward", "1580") };
var newDT = Esri.ArcGISForAutoCAD.CoordinateSystem.DatumTransformationAdd(doc, "2882", "3857", transformationSteps);

// Print the datum transformation definition
doc.Editor.WriteMessage("\nFrom {0}: To {1}", newDT["From"], newDT["To"]);
doc.Editor.WriteMessage("\n");
foreach (var dict in newDT["Steps"] as List<Dictionary<string, object>>)
{
  foreach (var kvp in dict)
  {
    doc.Editor.WriteMessage("\t{0}: {1}\n", kvp.Key, kvp.Value.ToString());
  }
}

/* Example output 
From 2882: To 3857
 Direction: Forward
 Step: 1580
*/

示例 2

将复合基准面变换添加到由 WKID 表示的起始坐标系和目标坐标系之间的当前工程图中,以反向顺序应用步骤并打印其基准面变换定义。

// Initialize
var doc = Application.DocumentManager.MdiActiveDocument;

// Add the datum transformation
var transformationSteps = new List<(string, string)> { ("Reverse", "108355"), ("Reverse", "108282") };
var newDT = Esri.ArcGISForAutoCAD.CoordinateSystem.DatumTransformationAdd(doc, "6425", "3857", transformationSteps);

// Print the datum transformation definition
doc.Editor.WriteMessage("\nFrom {0}: To {1}", newDT["From"], newDT["To"]);
doc.Editor.WriteMessage("\n");
foreach (var dict in newDT["Steps"] as List<Dictionary<string, object>>)
{
  foreach (var kvp in dict)
  {
    doc.Editor.WriteMessage("\t{0}: {1}\n", kvp.Key, kvp.Value.ToString());
  }
}

/* Example output 
From 6425: To 3857
 Direction: Reverse
 Step: 108355
 Direction: Reverse
 Step: 108282
*/

另请参阅

esri_coordsys_DatumTransformations_set - 此 AutoLISP 函数用于在当前工程图中设置基准面变换。