MATLAB 裁剪全国建成区 TIFF 为省市级:基于 Shapefile 的方法
您可以使用MATLAB中的Spatial Statistics Toolbox来实现这个任务。以下是一个可能的解决方案:\n\n1. 首先,加载全国的建成区tiff,可以使用imread函数:\n\nmatlab\nbuilding_tiff = imread('全国建成区.tif');\n\n\n2. 加载省市的shp文件,可以使用shaperead函数:\n\nmatlab\nprovinces = shaperead('全国省市.shp');\n\n\n3. 创建一个与建成区tiff相同大小的矩阵,用于存储裁剪后的结果:\n\nmatlab\ncroped_tiff = zeros(size(building_tiff));\n\n\n4. 对每个省市进行循环,裁剪建成区tiff并将结果存储到cropped_tiff中:\n\nmatlab\nfor i = 1:numel(provinces)\n % 获取当前省市的边界框\n bbox = provinces(i).BoundingBox;\n \n % 裁剪建成区tiff\n cropped_building = imcrop(building_tiff, bbox);\n \n % 将裁剪的结果存储到cropped_tiff中\n cropped_tiff(bbox(2):bbox(2)+bbox(4), bbox(1):bbox(1)+bbox(3)) = cropped_building;\nend\n\n\n5. 对于上海市的shp,可以使用同样的方法裁剪建成区tiff,并将结果标记为2:\n\nmatlab\n% 假设上海市的shp在provinces中的索引为sh_index\nsh_bbox = provinces(sh_index).BoundingBox;\nsh_cropped_building = imcrop(building_tiff, sh_bbox);\ncroped_tiff(sh_bbox(2):sh_bbox(2)+sh_bbox(4), sh_bbox(1):sh_bbox(1)+sh_bbox(3)) = 2;\n\n\n6. 最后,根据裁剪后的结果,将0值标记为不在上海市shp内的建成区,将1值标记为不在上海市shp内的非建成区:\n\nmatlab\ncroped_tiff(cropped_tiff == 0) = 1;\n\n\n现在,cropped_tiff中的值为0表示在上海市shp内但不属于建成区,1表示不在上海市shp内,2表示在上海市shp内且为建成区。\n\n请注意,上述代码仅为示例,您需要根据实际情况进行调整和修改。
原文地址: https://www.cveoy.top/t/topic/qDCD 著作权归作者所有。请勿转载和采集!