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

如何生成选定经纬度点周围矩形区域内的附近位置列表

你的代码存在两个核心逻辑错误:

  1. 边界计算和范围检查的逻辑都嵌套在if line[0] == querylocid:的分支内,只有遍历到目标基准点那一行时才会执行范围判断,自然只能匹配到基准点自身,无法检查其他行的位置。
  2. 经纬度和参数的对应关系写反了:CSV里line[1]是纬度(对应南北向参数d2),line[2]是经度(对应东西向参数d1),你代码里混淆了两者的对应关系,判断条件的逻辑也有错误。

修改思路

  • 第一步先单独读取CSV找到基准点的经纬度,提前计算好矩形的经纬度范围阈值,不需要记录四个角坐标,直接算最大/最小纬度、最大/最小经度即可
  • 第二步遍历所有CSV行,逐行判断位置是否落在计算好的范围内,符合要求就加入结果列表

修正后代码(仅读一次文件版本,适合小体积CSV)

querylocid = "L83"
d1 = 1.5  # 东西向(经度)延伸距离
d2 = 2.2  # 南北向(纬度)延伸距离
csv_path = "<替换为你的CSV文件路径>"
result_list = []
all_locations = []

base_lat = None
base_lon = None

# 第一次遍历:存所有点位+找基准点坐标
with open(csv_path, "r") as f:
    f.readline()  # 跳过表头
    for line in f:
        parts = line.strip().split(",")
        all_locations.append(parts)
        if parts[0] == querylocid:
            base_lat = float(parts[1])
            base_lon = float(parts[2])

# 计算矩形范围
min_lat = base_lat - d2
max_lat = base_lat + d2
min_lon = base_lon - d1
max_lon = base_lon + d1

# 第二次遍历:检查所有点位是否在范围内
for loc in all_locations:
    lat = float(loc[1])
    lon = float(loc[2])
    if min_lat <= lat <= max_lat and min_lon <= lon <= max_lon:
        # 如果不需要包含基准点L83,就加一行判断 if loc[0] != querylocid:
        result_list.append(loc[0])

print(result_list)

运行后输出结果和你预期一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 16:06:03