Как получить пространственную привязку по имени с помощью дугообразных объектов?

Я использую текстовое поле для ввода имени проекции (например: WGS_1984_UTM_Zone_37N) и хочу получить эту пространственную привязку с помощью arcobjects (vb.net/C#). Как это сделать? Пожалуйста, уточните.


person user2408848    schedule 02.08.2016    source источник


Ответы (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;
    }
}

Этот метод работает только для системы координат проекции, вам нужно будет сделать то же самое для системы географических координат.

person T Kambi    schedule 02.08.2016