fix: 修复叠加分析 centroid CRS 警告(使用投影坐标系)
- 改用 EPSG:3857 投影坐标系计算中心点 - 消除 geographic CRS centroid warning
This commit is contained in:
@@ -30,8 +30,10 @@ def main():
|
||||
sys.exit(1)
|
||||
|
||||
# 确保坐标系一致
|
||||
target_crs = province.crs or "EPSG:4326"
|
||||
province = province.to_crs(target_crs)
|
||||
source_crs = province.crs or "EPSG:4326"
|
||||
# 使用投影坐标系(墨卡托)计算中心点以避免 geographic CRS 警告
|
||||
projected_crs = "EPSG:3857"
|
||||
province_proj = province.to_crs(projected_crs)
|
||||
|
||||
# 查找所有城市 SHP
|
||||
city_shp_files = glob.glob(os.path.join(cities_dir, "*.shp"))
|
||||
@@ -54,14 +56,14 @@ def main():
|
||||
"reason": "数据为空", "status": "跳过"})
|
||||
continue
|
||||
|
||||
city = city.to_crs(target_crs)
|
||||
city = city.to_crs(projected_crs)
|
||||
|
||||
# 空间判断:城市中心点是否在省界内
|
||||
# 空间判断:城市中心点是否在省界内(使用投影坐标系避免 CRS 警告)
|
||||
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 作为辅助判断
|
||||
intersects = province.geometry.intersects(city.geometry).any()
|
||||
intersects = province_proj.geometry.intersects(city.geometry).any()
|
||||
|
||||
status = "通过 ✅" if in_province else "不通过 ❌"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user