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

如何获取美国大陆1km网格交点的经纬度?

解决美国大陆1km边长网格交点经纬度提取问题

核心误区纠正

你之前用0.01度网格的思路存在本质问题:经纬度是地理坐标系,其单位长度随纬度变化(赤道上1度≈111km,美国北部经度方向1度距离会大幅缩小),所以0.01度网格无法保证美国范围内都是1km边长的正方形,这也是你提取坐标无效的原因之一。

QGIS 正确操作流程

要生成严格1km边长的网格并提取交点,必须使用投影坐标系(而非WGS84地理坐标系),以下是具体步骤:

1. 选择适配的投影坐标系

美国本土推荐使用 USA Contiguous Albers Equal Area Conic(EPSG:102003),这是专门为美国大陆设计的等面积投影,能确保网格在整个区域内保持1km边长。

  • 导入Census.gov的美国大陆shapefile后,将项目CRS设置为EPSG:102003。

2. 生成1km边长网格

打开「Processing Toolbox」→ 「Vector creation」→ 「Create Grid」,配置参数:

  • 网格类型:选择「矩形(多边形)」
  • 网格范围:点击「从图层范围选择」,选中美国大陆shapefile
  • 水平间隔/垂直间隔:均设置为1000(单位为米,因投影坐标系以米为单位)
  • 输出图层命名为US_1km_Grid

3. 提取交点并转换为经纬度

  1. 提取网格顶点:使用「Processing Toolbox」→ 「Vector geometry」→ 「Extract Vertices」,输入US_1km_Grid生成顶点图层。
  2. 去重处理:相邻网格共享顶点,用「Processing Toolbox」→ 「Vector general」→ 「Delete Duplicate Geometries」去除重复点,得到唯一的网格交点。
  3. 转换为WGS84经纬度:右键顶点图层 → 「导出」→「保存要素为」:
    • 格式选择CSV(方便导出坐标)
    • CRS设置为EPSG:4326(WGS84地理坐标系)
    • 在「图层选项」中勾选「添加几何字段」,选择「X(经度)」和「Y(纬度)」,导出后CSV文件会直接包含每个交点的经纬度对。

替代方案:Python脚本自动化生成

如果需要批量处理或脚本化操作,用GeoPandas+Shapely实现更高效:

import geopandas as gpd
from shapely.geometry import Point
import numpy as np

# 读取美国大陆shapefile并转换为Albers投影
us_mainland = gpd.read_file("你的美国shapefile路径").to_crs("EPSG:102003")
bounds = us_mainland.total_bounds  # 获取边界:minx, miny, maxx, maxy

# 生成1km间隔的坐标序列
x_coords = np.arange(bounds[0], bounds[2], 1000)
y_coords = np.arange(bounds[1], bounds[3], 1000)

# 生成所有网格交点
points = [Point(x, y) for x in x_coords for y in y_coords]
# 补充边界极值点,避免遗漏边缘网格
points.extend([Point(bounds[2], bounds[3]), Point(bounds[0], bounds[3]), Point(bounds[2], bounds[1])])

# 筛选美国大陆范围内的点
gdf_points = gpd.GeoDataFrame(geometry=points, crs="EPSG:102003")
gdf_points = gpd.sjoin(gdf_points, us_mainland, predicate="within")

# 转换为WGS84经纬度并导出
gdf_points_wgs84 = gdf_points.to_crs("EPSG:4326")
gdf_points_wgs84["longitude"] = gdf_points_wgs84.geometry.x
gdf_points_wgs84["latitude"] = gdf_points_wgs84.geometry.y
gdf_points_wgs84[["longitude", "latitude"]].to_csv("us_1km_grid_points.csv", index=False)

常见问题排查

  • 若提取的坐标无效,先检查是否在投影坐标系下生成网格:地理坐标系下的网格无法保证等边长,且坐标是经纬度,直接提取会混淆单位。
  • 确认导出时已转换为EPSG:4326:若未转换,导出的是投影坐标系的米制坐标,不是经纬度。
  • 检查「提取顶点」工具的输出:若顶点图层为空,可能是网格图层未正确生成,需重新检查网格范围和间隔参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 20:35:00