GECP高程控制点数据集进行展示
✅ 总结:
这段代码的功能就是——
在一堆高程控制点数据中,找出落在指定多边形(矩形)区域内的点,并把它们导出为 KML 文件,以便在 Google Earth 上查看。
代码流程解析
- 初始化环境
fclose all
clear all
clc
关闭所有文件、清除变量、清空命令行。
- 加载数据
lidar_dem=load('C:\Users\lizijia\GECP_E120E180_N030N060.mat');
加载一个 .mat
文件,里面存有激光雷达(或高程控制点)数据。
- 提取控制点经纬度
point_lon=lidar_dem.EleControlPoint.Lon;
point_lat=lidar_dem.EleControlPoint.Lat;
从结构体里取出所有点的经度和纬度。
- 定义一个多边形区域
polygon_lon = [120.5 121 121 120.5 ];
polygon_lat = [ 51 51 50.5 50.5 ];
这里人为定义了一个矩形区域(四个角点的经纬度)。
- 判断哪些点落在多边形内
[in, ~] = inpolygon(point_lon, point_lat, polygon_lon, polygon_lat);
indices_inside_polygon = find(in);
inpolygon
会返回逻辑数组in
,表示每个点是否在多边形内。indices_inside_polygon
就是这些点的索引。
- 打印结果
disp(indices_inside_polygon);
在命令行显示所有落在多边形内部点的索引。
- 把这些点写成 KML 文件
LAT=point_lat(indices_inside_polygon);
LON=point_lon(indices_inside_polygon);
filename = 'D:\dxal_point.kml';
shape = geoshape(LAT,LON);
shape.Geometry = 'point';
kmlwrite(filename,shape,'Color','red');
- 取出多边形内的点的经纬度。
- 用
geoshape
创建一个点几何对象。 - 设置几何类型为点(
point
)。 - 用
kmlwrite
导出为 Google Earth 可直接打开的.kml
文件,红色标注。
main_process
fclose all
clear all
clclidar_dem=load('C:\Users\lizijia\GECP_E120E180_N030N060.mat');point_lon=lidar_dem.EleControlPoint.Lon;
point_lat=lidar_dem.EleControlPoint.Lat;% 多边形的经纬度角点坐标
polygon_lon = [120.5 121 121 120.5 ]; % 多边形的经度
polygon_lat = [ 51 51 50.5 50.5 ]; % 多边形的纬度% 使用 inpolygon 函数找到多边形内部的点
[in, ~] = inpolygon(point_lon, point_lat, polygon_lon, polygon_lat);% 找出在多边形内的点的索引
indices_inside_polygon = find(in);% 显示多边形内的点索引
disp(indices_inside_polygon);%------------------------写为kml文件----------------------------
LAT=point_lat(indices_inside_polygon);
LON=point_lon(indices_inside_polygon);
filename = 'D:\dxal_point.kml';
shape = geoshape(LAT,LON);
shape.Geometry = 'point';
kmlwrite(filename,shape,'Color','red');
高程控制点数据集 GECP
https://data.tpdc.ac.cn/zh-hans/data/2c2b895d-ded5-4e08-9cfa-bc39a9a1af1d