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

咨询:如何用QGIS或其他工具实现点位半径匹配并导出结果

QGIS新手友好方案:点位空间关联与导出

一、QGIS操作步骤

1. 导入CSV数据

  • 打开QGIS,点击「图层」→「添加图层」→「添加分隔文本图层」
  • 分别导入Site List A和Site List B:
    • 选中对应CSV文件,确认**Lat(纬度)和Long(经度)**字段被正确识别,坐标系选择EPSG:4326(WGS84,通用经纬度坐标系)
    • 点击「添加」完成加载

2. 转换坐标系(关键:球面转平面,支持英里距离计算)

  • 右键Site List A图层→「导出」→「保存要素为」
  • 保存格式选「内存图层」(临时用,不占硬盘),坐标系搜索EPSG:3857(Web墨卡托,适配全球范围),点击「确定」
  • 对Site List B重复上述转换操作

3. 空间连接(匹配范围内点位)

  • 点击「处理」→「工具箱」,搜索「空间连接」工具打开
  • 设置核心参数:
    • 目标图层:选转换后的Site List A(要关联的主体)
    • 连接图层:选转换后的Site List B(匹配源)
    • 连接类型:选「保留所有目标要素并匹配所有连接要素」(保留A中未匹配的点,方便后续筛选)
    • 匹配条件:选「在距离内」,输入对应米数:
      • 1/4英里 = 402.336米,1/2英里 = 804.672米(QGIS默认用米计算,直接输入更准确)
    • 输出图层:选「保存到文件」,格式选CSV或Excel(.xlsx),设置保存路径
  • 点击「运行」,等待处理完成(3000+10000的量级,几秒就能搞定)

4. 导出结果

  • 处理完成后,新生成的关联图层会自动加载,右键→「导出」→「保存要素为」,选择你需要的格式即可

二、替代方案:Python脚本(无需QGIS)

如果不想折腾QGIS,用Python写个脚本也能实现,步骤如下:

  1. 先安装依赖:打开命令行输入 pip install pandas geopy
  2. 复制以下代码(替换文件路径和距离参数):
import pandas as pd
from geopy.distance import geodesic

# 替换成你的文件路径
df_a = pd.read_csv("site_list_a.csv")
df_b = pd.read_csv("site_list_b.csv")

# 设置匹配距离,0.25是1/4英里,0.5是1/2英里
match_distance = 0.25

results = []
# 遍历A的每个点位,匹配B中符合距离条件的点
for _, row_a in df_a.iterrows():
    point_a = (row_a['Lat'], row_a['Long'])
    for _, row_b in df_b.iterrows():
        point_b = (row_b['Lat'], row_b['Long'])
        dist = geodesic(point_a, point_b).miles
        if dist <= match_distance:
            # 合并A和B的字段,加上距离值
            combined = {**row_a.to_dict(), **row_b.to_dict(), 'distance_miles': round(dist, 4)}
            results.append(combined)

# 导出结果到CSV
pd.DataFrame(results).to_csv("matched_sites.csv", index=False)
# 要导出Excel的话,替换成:pd.DataFrame(results).to_excel("matched_sites.xlsx", index=False)

注:10000个B点的话,双重循环大概需要几分钟,普通电脑完全能扛住。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 15:52:51