- 积分
- 40668
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2019-5-13
- 最后登录
- 1970-1-1
|

楼主 |
发表于 2025-7-31 09:52:30
|
显示全部楼层
本帖最后由 一大碗年糕 于 2025-7-31 09:54 编辑
自己定义区域,然后用rixarray的clip截取- import rioxarray as rio
- def get_rotated_rectangle_polygon(center_lon, center_lat, width_deg, height_deg, angle_deg):
- angle_rad = math.radians(angle_deg)
- dx, dy = width_deg / 2, height_deg / 2
- offsets = [(-dx, -dy), (dx, -dy), (dx, dy), (-dx, dy)]
- corners = []
- for ox, oy in offsets:
- x_rot = ox * math.cos(angle_rad) - oy * math.sin(angle_rad) + center_lon
- y_rot = ox * math.sin(angle_rad) + oy * math.cos(angle_rad) + center_lat
- corners.append((x_rot, y_rot))
- return Polygon(corners)
- AR = AR.rio.write_crs("EPSG:4326") # 明确是地理坐标
- polygon_B = get_rotated_rectangle_polygon(127, 38, 4, 8, 25) # 朝鲜半岛区域
- gdf_B = gpd.GeoDataFrame({"geometry": [polygon_B]}, crs="EPSG:4326")
- AR_B = AR.rio.clip(gdf_B.geometry, gdf_B.crs, drop=True)
- AR_B = mo.AreaWeightMean(AR_B)
- AR_B = mo.Standardization(AR_B)
- AR_B.plot(label=region[re])
复制代码
|
|