使用python实现渔网创建

使用python实现渔网创建

from shapely.geometry import Polygon
import geopandas as gpd

def Fishnet(boundary,cell_height,cell_width) -> None:
    # 渔网多边形
    # boundary = gpd.read_file("boundary.shp")
    xmin, ymin, xmax, ymax = boundary.total_bounds
    rows = int((ymax - ymin) / cell_height)
    cols = int((xmax - xmin) / cell_width)
    polygons = []
    for x in range(cols):
        for y in range(rows):
            polygons.append(Polygon([(xmin + x * cell_width, ymin + y * cell_height),
                                    (xmin + (x + 1) * cell_width, ymin + y * cell_height),
                                    (xmin + (x + 1) * cell_width, ymin + (y + 1) * cell_height),
                                    (xmin + x * cell_width, ymin + (y + 1) * cell_height)]))
    fishnet = gpd.GeoDataFrame(geometry=polygons, crs=boundary.crs)

    # 计算渔网中心点
    fishnet["center"] = fishnet.centroid
    fishnet = fishnet.set_geometry("center")
    # 设置新的crs为4326
    fishnet = fishnet.to_crs(epsg=4326)
    fishnet = fishnet.drop('geometry',axis =1)

    return fishnet

注意: boundary需要投影。

posted @   sheyueyu  阅读(156)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· 易语言 —— 开山篇
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 【全网最全教程】使用最强DeepSeekR1+联网的火山引擎,没有生成长度限制,DeepSeek本体
点击右上角即可分享
微信分享提示