2016-08-02 44 views

回答

0

提供TextBox输入投影名称是一个坏主意,因为它可以让用户输入任何值,而这些值可能不是您想要的格式。即“WGS84_UTM_zone_37N”或“WGS 1984 UTM Zone 37N”等都是有效值,但是,您将很难确定哪个Spatial Reference用户正在查找。

我建议您提供一个下拉列表,并使用投影系统的其中一个像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; 
    } 
} 

此方法仅适用于投影坐标系,您必须对地理坐标系执行类似操作。