叶状图上的方格

2024-10-01 15:41:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我有从kml文件的区域,我需要生成500x500m的正方形,涵盖该区域。我试过:https://www.jpytr.com/post/analysinggeographicdatawithfolium/但我只能添加或减去不能设置正方形确切大小的行和列。有人能帮我吗

gdf = gpd.read_file('doc.kml', driver = 'KML')

def get_geojson_grid(upper_right, lower_left,step):
    all_boxex = []

    lat_step = np.linspace(lower_left[0], upper_right[0],3)
    lon_step = np.linspace(lower_left[1], upper_right[1],3)

    lat_stride = lat_step[1] - lat_step[0]
    lon_stride = lon_step[1] - lon_step[0]

    for lat in lat_step[:-1]:
        for lon in lon_step[:-1]:

            upper_left = [lon, lat + lat_stride]
            upper_right = [lon + lon_stride, lat + lat_stride]
            lower_right = [lon + lon_stride, lat]
            lower_left = [lon, lat]

            coordinates = [
                upper_left,
                upper_right,
                lower_right,
                lower_left,
                upper_left
            ]

            geo_json = {'type': 'FeatureCollection',
                        'properties':{
                            'lower_left': lower_left,
                            'upper_right': upper_right,
                        },
                        'features':[]}
            grid_feature = {
                'type':'Feature',
                'geometry':{
                    'type':'Polygon',
                    'coordinates': [coordinates],
                }
            }

            geo_json['features'].append(grid_feature)
            all_boxex.append(geo_json)
    return all_boxex

p0 = gdf.centroid #central point for view location in folium map

ymin, xmin, ymax, xmax  = gdf.total_bounds
lower_left, upper_right  = [xmin, ymin], [xmax, ymax]

m = folium.Map(location=[p0.y, p0.x], zoom_start=14, tiles='CartoDB positron')
grid = get_geojson_grid(upper_right, lower_left)


Tags: inrightforstepallleftupperlower

热门问题