XY To Line工具是Arc ToolBox中的一个工具,根据输入表格中的起点和终点坐标生成直线。在工具箱中的位置如下图:
该工具的图形界面如下:
各项输入参数都比较直观,官方给出了如下的描述:
XYToLine_management (in_table,out_featureclass, startx_field, starty_field, endx_field, endy_field,{line_type}, {id_field}, {spatial_reference})
参数 |
说明 |
数据类型 |
in_table |
输入表,可以是文本文件、CSV文件、Excel 文件、dBASE 表或地理数据库表。 |
Table View |
out_featureclass |
包含增密测地线的输出要素类。 |
Feature Class |
startx_field |
输入表中的数值字段,其中包含在空间参考参数所指定的输出坐标系中进行定位的线的起点 x坐标(或经度)。 |
Field |
starty_field |
输入表中的数值字段,其中包含在空间参考参数所指定的输出坐标系中进行定位的线的起点 y坐标(或纬度)。 |
Field |
endx_field |
输入表中的数值字段,其中包含在 spatial_reference 参数所指定的输出坐标系中进行定位的线的终点 x 坐标(或经度)。 |
Field |
endy_field |
输入表中的数值字段,其中包含在 spatial_reference 参数所指定的输出坐标系中进行定位的线的终点 y 坐标(或纬度)。 |
Field |
line_type (可选) |
要构造的测地线的类型。 · GEODESIC — 测地线类型,可以最准确地表示地球表面任意两点之间的最短距离。测地线的数学定义十分复杂冗长,因此此处略去该定义。这种线类型是默认类型。 · GREAT_CIRCLE —测地线类型,可以表示地球表面与通过地心的平面的相交线上任意两点之间的路径。根据“空间参考”参数所指定的输出坐标系,在基于椭球体的坐标系中,该线表示大椭圆;在基于球体的坐标系中,该线表示唯一的大圆(球面上最大半径的圆)。 · RHUMB_LINE —测地线类型,又称为等角航线 (loxodrome line),可以表示通过以极点为起点的等方位角所定义的椭球体表面上的任意两点之间的路径。等角航线在墨卡托投影中显示为直线。 · NORMAL_SECTION —测地线类型,可以表示由椭球体表面与通过椭球体表面上两点并垂直于两点起点处椭球面的平面相交而定义的椭球面上任意两点之间的路径。因此,从 A 点到 B 点与从 B 点到 A点的法向截面线不同。 |
String |
id_field (可选) |
输入表中的字段;此字段和值均包含在输出中,可用于连接输出要素和输入表中的记录。 |
Field |
spatial_reference (可选) |
输出要素类的空间参考。可通过多种方式指定空间参考: · 输入 .prj 文件的路径,例如 C:/workspace/watershed.prj。 · 引用包含要应用的空间参考的要素类或要素数据集,例如C:/workspace/myproject.gdb/landuse/grassland。 · 在使用此工具之前定义空间参考对象,例如之后要用作空间参考参数的 sr = arcpy.SpatialReference("C:/data/Africa/Carthage.prj")。 |
Spatial Reference |
有了以上基础,下面介绍在ArcObject10+VS2010的环境中怎么使用该工具:
在VS2010中可新建一个基于ArcObjects的工程
新建完成后要添加相关的引用
在以上界面上还需要添加另一个关键引用
在代码中也要声明:
using ESRI.ArcGIS.Geoprocessor;
using ESRI.ArcGIS.DataManagementTools;
具体的代码片段如下所示:
public void StartXYToLineTool(string inputtable,string outputfile)
{
Geoprocessor gp = new Geoprocessor();//新建一个Geoprocessor对象,用于调用下面的工具对象执行操作
XYToLine xytolineTool = new XYToLine();//实例化一个XYToLine对象,负责接收参数并执行操作
xytolineTool.in_table = inputtable;//设置输入的表格
//xytolineTool.spatial_reference = @"D:\\GISProject\\燃气.prj";
xytolineTool.spatial_reference = "C:\\Program Files\\ArcGIS\\Desktop10.0\\Coordinate Systems\\Projected Coordinate Systems\\Gauss Kruger\\Beijing 1954\\Beijing 1954 3 Degree GK CM 108E.prj";//指定输出图层的空间参考
xytolineTool.startx_field = "X1";//指定输入表格的起点X坐标
xytolineTool.starty_field = "Y1";//指定生成要素时所依据的起点Y坐标
xytolineTool.endx_field = "X2";//指定生成操作中的终点X坐标
xytolineTool.endy_field = "Y2";//设置生成要素时所依据的终点Y坐标
xytolineTool.id_field = "ID";//指定id字段的参数,是可选参数,可不设置
xytolineTool.out_featureclass = outputfile;//输出要素的路径和名称
gp.OverwriteOutput = true;
try
{
gp.Execute(xytolineTool, null);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
可以在某个按钮的事件处理代码中调用该代码段:
private voidbutton1_Click(object sender, EventArgs e)
{
string inputtable = @"D:\XYToLine\Rain.xls\雨水$";
string outputfile=@"D:\XYToLine\Rain.shp";
StartXYToLineTool(inputtable,outputfile);
MessageBox.Show("Excel生成线成功");
}
至此,XY To Line工具介绍完毕,Geoprocessor调用ArcToolBox的模式很常用,最关键的还是参数的设置。