Я использую текстовое поле для ввода имени проекции (например: WGS_1984_UTM_Zone_37N) и хочу получить эту пространственную привязку с помощью arcobjects (vb.net/C#). Как это сделать? Пожалуйста, уточните.
Как получить пространственную привязку по имени с помощью дугообразных объектов?
Ответы (1)
Предоставление TextBox для ввода имени проекции — плохая идея, так как это позволит пользователю ввести любое значение, которое может быть не в том формате, который вам нужен. т. е. "WGS84_UTM_zone_37N" или "WGS 1984 UTM Zone 37N" и т. д. являются допустимыми значениями, но у вас будет много проблем с определением того, какой пользователь пространственной привязки ищет.
Вместо этого я предлагаю вам предоставить раскрывающийся список и использовать один из системных параметров Projection, например esriSRProjCSType
и/или esriSRGeoCSType
, и заполнить раскрывающийся список.
Если вы все еще этого хотите, вам придется создать экземпляр всей пространственной привязки, пока вы не найдете совпадение со значением, введенным в текстовое поле.
private ISpatialReference GetSpatialReference(string srName){
var srProjCSArray = Enum.GetValues(typeof(esriSRProjCSType));
var srEnvirnonment = new SpatialReferenceEnvironment();
foreach (var item in srProjCSArray)
{
var sr = srEnvirnonment.CreateProjectedCoordinateSystem((int)item);
if(sr.Name == srName)
return sr;
}
}
Этот метод работает только для системы координат проекции, вам нужно будет сделать то же самое для системы географических координат.