fix: 修复叠加分析 centroid CRS 警告(使用投影坐标系)

- 改用 EPSG:3857 投影坐标系计算中心点
- 消除 geographic CRS centroid warning
This commit is contained in:
SuiteForge
2026-07-21 00:12:28 +08:00
parent 967fa0f59c
commit d460bcd449
+8 -6
View File
@@ -30,8 +30,10 @@ def main():
sys.exit(1) sys.exit(1)
# 确保坐标系一致 # 确保坐标系一致
target_crs = province.crs or "EPSG:4326" source_crs = province.crs or "EPSG:4326"
province = province.to_crs(target_crs) # 使用投影坐标系(墨卡托)计算中心点以避免 geographic CRS 警告
projected_crs = "EPSG:3857"
province_proj = province.to_crs(projected_crs)
# 查找所有城市 SHP # 查找所有城市 SHP
city_shp_files = glob.glob(os.path.join(cities_dir, "*.shp")) city_shp_files = glob.glob(os.path.join(cities_dir, "*.shp"))
@@ -54,14 +56,14 @@ def main():
"reason": "数据为空", "status": "跳过"}) "reason": "数据为空", "status": "跳过"})
continue continue
city = city.to_crs(target_crs) city = city.to_crs(projected_crs)
# 空间判断:城市中心点是否在省界内 # 空间判断:城市中心点是否在省界内(使用投影坐标系避免 CRS 警告)
city_centroid = city.geometry.centroid.iloc[0] city_centroid = city.geometry.centroid.iloc[0]
in_province = province.geometry.contains(city_centroid).any() in_province = province_proj.geometry.contains(city_centroid).any()
# 也检查 intersect 作为辅助判断 # 也检查 intersect 作为辅助判断
intersects = province.geometry.intersects(city.geometry).any() intersects = province_proj.geometry.intersects(city.geometry).any()
status = "通过 ✅" if in_province else "不通过 ❌" status = "通过 ✅" if in_province else "不通过 ❌"