ArcEngine将含有坐标的Excel表导出成shp

ArcEngine将含有点坐标的Excel表导出成线(Line)要素

转行做GIS二次开发的第一个需求,不算特别复杂的需求,但是对于新手的我来说也用了半天的时间,但是对于理解GIS中的图形的原理很有帮助,废话不多说,直接上干货。
需求:将excel中的点数据连接成线并导出,excel中的记录如图所示:
Excel中的数据示例
Excel中的“townfrom”列和“townto”列分别表示出发点编号和到达点编号,“PF”表示权重,这三列对于这个需求并不是特别重要,因此可以忽略,“LONFROM”和“LATFROM”表示起始点的经度和纬度,“LONTO”和“LATTO”分别表示终点的经度和纬度。我们要做的就是将每一个记录连接成线,以便下游人员分析。
这个需求总的说来可以分两步实现,首先需要将Excel中的数据导入,再将起始点和终点的经纬度值生成线并保存。
导入Excel需要引用“Aspose.Cells.dll”动态链接库,下载链接:链接:https://pan.baidu.com/s/1UeMJeHJ1Rt5DnJuofh8DIQ 提取码:2i43 。

1、读取Excel

//读取excel
        private void ReadExcel(string path)
        {
            Workbook workbook = new Workbook(path);
            cells = workbook.Worksheets[0].Cells;
            for (int i = 1; i < cells.MaxDataRow + 1; i++)
            {
                Data2Line(cells[i, 3].DoubleValue, cells[i, 4].DoubleValue,
                cells[i, 5].DoubleValue, cells[i, 6].DoubleValue);
            }
        }

2、各行的点坐标生成线:

//各行数据生成线
        private void Data2Line(double lonF, double latF, double lonT, double latT)
        {
            IPoint point_From = new PointClass();
            IPoint point_To = new PointClass();
            IPolyline pPolyline = new PolylineClass();
            point_From.PutCoords(lonF, latF);
            point_To.PutCoords(lonT, latT);
            pPolyline.FromPoint = point_From;
            pPolyline.ToPoint = point_To;
            ILayer layer =  this.axMapControl1.Map.Layer[0];
            IFeatureLayer featureLayer = (IFeatureLayer)layer;
            IFeature feature = featureLayer.FeatureClass.CreateFeature();
            feature.Shape = pPolyline;
            feature.Store();
        }

源代码已上传至github:https://github.com/ranhongwu/190618ExcelToLine
(注:为了方便我直接是创建的一个新的shp文件和axMapControl关联,如果有其他的用途可以自行修改)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值