Метод CoordinateSystem.DatumTransformationAdd добавляет преобразование датума к текущему чертежу. Если преобразование датума (системы координат from и to) уже существует, оно перезаписывается. Этот метод вернет определение добавленного преобразования датума.
Примечание:
Преобразования датума нельзя добавить, если чертеж содержит векторные веб-слои.
Декларация
public Dictionary<string, object> Esri.ArcGISForAutoCAD.CoordinateSystem.DatumTransformationAdd(Document doc, string fromCS, string toCS, IEnumerable<(string Direction, string Step)> transformationSteps)
Параметры
| Тип | Имя | Описание | Обязательный |
|---|---|---|---|
Документ | doc | Документ AutoCAD, на основании которого следует действовать. | required |
string | fromCS | Корректный общепринятый идентификатор системы координат (WKID) или общепринятый текст (WKT) системы координат Esri в виде строки. | required |
string | toCS | Корректный WKID или WKT системы координат Esri в виде строки. | required |
IEnumerable<(string Direction, string Step)> | transformationSteps | Коллекция именованных кортежей, в котором первое значение является значением Direction, а второе — значением Step. Значение Direction - это направление шага, либо "Forward", либо "Reverse", в котором шаг преобразования будет применен. Значение Step - это WKID или WKT шага преобразования как строка. | required |
Возвращаемые значения
| Тип | Описание |
|---|---|
Dictionary<string, object> | Определение добавленного преобразования датума в виде словаря. Словарь имеет следующие ключи: From, To и Steps. Ключи From и To имеют строковые значения, представляющие системы координат. Значение ключа Steps представляет коллекцию словарей шагов преобразования системы координат. Каждый словарь преобразования имеет ключи Step и Direction. Ключ Step имеет значение шага в виде строки, а ключ Direction указывает порядок применения шага преобразования: "Forward" или "Reverse". |
Замечания по условиям возникновения ошибок
Этот метод может выдать исключение или вернуть 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, которая задает преобразование датума в текущем чертеже.