此 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> | 字典形式的已添加基准面变换的定义。 字典具有以下键:From、To 和 Steps。 From 和 To 键具有表示坐标系的字符串值。 Steps 键的值是坐标系变换步骤的字典集合。 每个变换步骤字典都有 Step 和 Direction 键。 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 函数用于在当前工程图中设置基准面变换。