You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Sheets中如何用4个GPS点划定区域筛选数据集内的点位?

Google Sheets 筛选指定GPS区域内的点位ID方案

一、公式方案(适合矩形区域,无需代码)

如果你的四个GPS点是矩形区域的对角点(比如D1、E1是西南角纬度/经度,F1、G1是东北角纬度/经度),可直接用FILTER函数实现,同时兼容经度跨180°的特殊情况:

在空白单元格(如H1)输入以下公式:

=FILTER(A1:A1000,
 B1:B1000 >= MIN(D1, F1),
 B1:B1000 <= MAX(D1, F1),
 IF(MAX(E1, G1) > MIN(E1, G1),
  AND(C1:C1000 >= MIN(E1, G1), C1:C1000 <= MAX(E1, G1)),
  OR(C1:C1000 >= MIN(E1, G1), C1:C1000 <= MAX(E1, G1))
 )
)

公式说明:

  • 纬度判断:自动取D1、F1中的最小/最大值,不管输入的是南北哪个端点,都能正确锁定纬度范围
  • 经度判断:
    • 若最大经度大于最小经度(常规非跨180°区域),筛选经度在两者之间的点
    • 若最大经度小于最小经度(跨180°经线区域),筛选经度大于等于最小值或小于等于最大值的点

二、脚本方案(适合任意四边形区域)

如果需要用任意四个GPS点组成的不规则四边形筛选,可通过自定义函数实现:

步骤1:添加脚本

  1. 打开你的Google表格,点击顶部菜单栏「扩展程序」→「Apps脚本」
  2. 删除默认代码,粘贴以下代码:
function IN_POLYGON(pointLats, pointLons, polyLats, polyLons) {
  const isSingle = typeof pointLats !== 'object';
  const lats = isSingle ? [pointLats] : pointLats.flat();
  const lons = isSingle ? [pointLons] : pointLons.flat();
  
  const poly = polyLats.map((lat, i) => [lat, polyLons[i]]);
  if (poly[0][0] !== poly[poly.length-1][0] || poly[0][1] !== poly[poly.length-1][1]) {
    poly.push(poly[0]);
  }
  
  const results = [];
  for (let i = 0; i < lats.length; i++) {
    const lat = lats[i];
    const lon = lons[i];
    let inside = false;
    
    for (let j = 0; j < poly.length - 1; j++) {
      const [lat1, lon1] = poly[j];
      const [lat2, lon2] = poly[j+1];
      
      if (isPointOnLine(lat, lon, lat1, lon1, lat2, lon2)) {
        inside = true;
        break;
      }
      
      const intersect = ((lat1 > lat) !== (lat2 > lat)) && 
                       (lon < (lon2 - lon1) * (lat - lat1) / (lat2 - lat1) + lon1);
      if (intersect) inside = !inside;
    }
    
    results.push(inside);
  }
  
  return isSingle ? results[0] : results;
}

function isPointOnLine(px, py, x1, y1, x2, y2) {
  if (Math.min(x1, x2) <= px && px <= Math.max(x1, x2) &&
      Math.min(y1, y2) <= py && py <= Math.max(y1, y2)) {
    const cross = (px - x1) * (y2 - y1) - (py - y1) * (x2 - x1);
    return Math.abs(cross) < 1e-9;
  }
  return false;
}
  1. 点击「保存」,给脚本命名(比如GPSAreaFilter)

步骤2:使用自定义函数

  1. 将四个四边形顶点的纬度依次输入D1、D2、D3、D4,经度依次输入E1、E2、E3、E4
  2. 在空白单元格(如H1)输入公式:
=FILTER(A1:A1000, IN_POLYGON(B1:B1000, C1:C1000, D1:D4, E1:E4))
  1. 按下回车后,即可自动筛选出所有在四边形区域内的点位ID

内容的提问来源于stack exchange,提问作者Nathanael Phillips

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 03:10:00