Skip To Content

CoordinateSystem.DatumTransformationAdd (.NET)

Метод 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, которая задает преобразование датума в текущем чертеже.