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

如何基于经纬度点、投影及英里距离创建边界框筛选GeoDataFrame数据

准确生成英里范围正方形边界框并筛选GeoDataFrame点数据

核心思路

摒弃近似值方案,通过坐标投影转换+精准单位计算生成边界框:先将WGS84经纬度点转换到以英里(或可转英里的线性单位)为基准的投影坐标系,在投影空间内扩展指定英里数得到正方形边界,再用该投影后的边界框筛选同投影下的GeoDataFrame数据,最后按需转回WGS84坐标系。

具体实现代码

import geopandas as gpd
from shapely.geometry import Point, box
from pyproj import CRS, Transformer

# ---------------------- 配置参数 ----------------------
# 目标经纬度点
target_lat, target_lng = 34.0522, -118.2437  # 示例:洛杉矶坐标
# 搜索半径(英里)
search_radius = 10
# 目标投影CRS(以加州平面坐标系EPSG:2230为例,单位为英尺,需转英里)
target_crs = CRS.from_epsg(2230)
# WGS84坐标系(原始经纬度默认用这个)
wgs84_crs = CRS.from_epsg(4326)

# ---------------------- 坐标转换与边界框生成 ----------------------
# 1. 将原始经纬度点转换到目标投影坐标系
# always_xy=True 确保输入顺序为(lng, lat),符合GIS标准
to_proj_transformer = Transformer.from_crs(wgs84_crs, target_crs, always_xy=True)
proj_x, proj_y = to_proj_transformer.transform(target_lng, target_lat)

# 2. 转换单位并计算边界框(EPSG:2230为英尺单位,转英里需除以5280)
proj_x_miles = proj_x / 5280
proj_y_miles = proj_y / 5280

# 正方形边界:上下左右各扩展10英里
min_x = proj_x_miles - search_radius
max_x = proj_x_miles + search_radius
min_y = proj_y_miles - search_radius
max_y = proj_y_miles + search_radius

# 将英里单位的边界转回目标投影的原始单位(英尺)
min_x_proj = min_x * 5280
max_x_proj = max_x * 5280
min_y_proj = min_y * 5280
max_y_proj = max_y * 5280

# 创建投影坐标系下的边界框几何对象
bbox_proj = box(min_x_proj, min_y_proj, max_x_proj, max_y_proj)

# ---------------------- 筛选GeoDataFrame数据 ----------------------
# 将原始GeoDataFrame转换到目标投影
gdf_proj = gdf.to_crs(target_crs)

# 筛选落在边界框内的点
filtered_gdf_proj = gdf_proj[gdf_proj.geometry.within(bbox_proj)]

# 按需转回WGS84经纬度坐标系
filtered_gdf = filtered_gdf_proj.to_crs(wgs84_crs)

关键注意事项

  • 投影CRS选择:优先选用覆盖目标区域的本地投影(如UTM分带、州平面坐标系),确保线性单位准确。若使用米单位CRS,直接将英里转米(1英里=1609.34米)计算即可,无需转英尺。
  • 坐标顺序:Transformer.transform默认要求输入为(lng, lat),必须添加always_xy=True避免顺序错误。
  • 统一投影筛选:必须将GeoDataFrame与边界框统一到同一投影坐标系后再筛选,否则会出现计算误差。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 00:37:39