由坐标数据生成点SHP文件,并由多组点生成线SHP文件(上)

本文介绍了如何使用C#编程从Excel表格中的坐标数据生成点和线的SHP文件。作者首先连接Excel,将数据转换为DataTable,然后通过坐标对创建点和线的SHP文件,涉及ArcGIS接口的使用。
摘要由CSDN通过智能技术生成

由坐标数据生成点SHP文件,并由多组点生成线SHP文件(上)

在最近的公司项目中,老板要求将外业采集的管线连接点坐标表格数据生成线状的shp文件,上网查了下都是生成点状shp文件的例子,作为一个小白根据例子苦逼摸索了半个星期终于搞定了,放上来和大家分享一下。


实现思路

  • 连接Excel表格,将表格中需要的数据生成DataTable
  • 获取DataTable中的坐标数据,根据要求获取坐标对
  • 创建空的点shp文件,设置属性信息,加载空的点layer
  • 编辑点layer的属性信息,添加点要素
  • 获取DataTable中的坐标数据,根据要求获取点对
  • 创建空的线shp文件,设置属性信息,加载空的线layer
  • 编辑线layer的属性信息,添加线要素

实现步骤

1.连接Excel表格,将表格中需要的数据生成DataTable
本项目是基于.NET平台的AE开发,使用的语言为C#。C#读取Excel表格有三种经典的方法,具体大家可以自行百度,这里不再详细介绍,我采用的是通过OleDB读取Excel文件的方法。实例方法如下:

public DataTable ExcelToDataTable(string strExcelFileName, string strSheetName)
{
    string strConn="Provider=Microsoft.ACE.OLEDB.12.0;"+"Data Source="+strExcelFileName+";"+"Extended Properties='Excel 8.0;HDR=NO;IMEX=1';";
    String strExcel="select * from ["+strSheetName+"$]";
    DataSet ds=new DataSet();
    OleDbConnection conn=new OleDbConnection(strConn);
    conn.Open();
    OleDbDataAdapter adapter=new OleDbDataAdapter(strExcel,strConn);
    adapter.Fill(ds,strSheetName);

    conn.Close();
    return ds.Tables[strSheetName];
}

这里有个小地方需要注意一下,Excel的版本不同,源语句的定义也不同,我用的是07以后的版本,如果是97-03的版本应该将部分代码换成

Provider=Microsoft.Jet.OLEDB.4.0;

2.获取DataTable中的坐标数据,根据要求获取坐标对
步骤1中得到的DataTable实质上就是一张二维表,它的格式和Excel表是一样的,我这里的表格数据中一共包含了七项数据,分别是管线起始点的ID,管线起始点代号,管线连接点代号,管线起始点X坐标,管线起始点Y坐标,管线起始点高程,管线起始点埋深,如图:

### 回答1: 如果你想在 Python 中生成 SHP 文件,可以使用以下库之一: 1. GDAL/OGR:这是一个开源的地理空间数据处理库,支持多种地理空间数据格式,包括 SHP 文件。你可以使用 `ogr` 模块来创建 SHP 文件。 2. pyshp:这是一个轻量级的 Python 库,可以轻松读写 SHP 文件。 3. Fiona:这是一个 Python 库,用于读写地理空间数据文件。它使用 GDAL 库来处理地理空间数据,因此也可以用来创建 SHP 文件。 你可以根据自己的需要来选择使用哪个库。 ### 回答2: 要使用Python生成shp文件,可以使用`Geopandas`库来处理空间数据。为了生成shp文件,首先需要创建一个空的geopandas数据框,并定义其列。 ```python import geopandas as gpd from shapely.geometry import Point # 创建一个空的geopandas数据框 gdf = gpd.GeoDataFrame(columns=['X坐标', 'Y坐标', '几何对象']) # 假设你已经有一组坐标数据,存储在x_coords和y_coords列表中 x_coords = [30, 40, 50] y_coords = [20, 25, 35] # 使用这些坐标数据创建Point对象,并将它们添加到geopandas数据框中 for x, y in zip(x_coords, y_coords): point = Point(x, y) gdf = gdf.append({'X坐标': x, 'Y坐标': y, '几何对象': point}, ignore_index=True) # 将数据框保存为shp文件 gdf.to_file('output.shp') ``` 上述代码中,首先导入必要的库,包括`geopandas`和`shapely`。然后,创建一个空的geopandas数据框`gdf`,定义了`X坐标`、`Y坐标`和`几何对象`三列。 接下来,假设你已经有一组x坐标和y坐标数据,存储在`x_coords`和`y_coords`列表中。使用这些坐标数据,在循环中创建Point对象,并将其添加到geopandas数据框中。 最后,使用`to_file`函数将数据框保存为shp文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值