【代码】多个shapefile面合并

什么是GIS面合并

GIS(地理信息系统)中的面合并是一个处理地理空间数据的常见操作。它涉及到将两个或者更多的相邻或者重叠的多边形(也被称为“面”)合并为一个单一的多边形。这个操作通常在处理地理数据时用来简化数据集,例如将多个相邻的行政区域合并为一个更大的区域,或者将多个重叠的地理特征合并为一个连续的特征。

在arcgis中很容易实现这个功能。但是怎么用代码实现呢?

代码

把指定文件夹下的 所有shapefile进行面合并

#!/usr/bin/env python
# -*- coding: utf-8 -*- 
import geopandas as gpd
import glob

# 指定文件夹路径
folder_path = '/path/to/your/folder/'

# 查找文件夹下的所有shapefile
shapefiles = glob.glob(folder_path + '*.shp')

# 读取并合并所有shapefile
gdf = gpd.GeoDataFrame(pd.concat([gpd.read_file(shp) for shp in shapefiles], ignore_index=True))

# 进行面合并
merged = gdf.dissolve()

# 保存合并后的shapefile
merged.to_file("/path/to/output/merged.shp")

结果展示

animated

代码解释

这是一个使用Python的GDAL/OGR库来创建渔网格(fishnet)的脚本。

这个脚本的主要功能是读取一个输入的矢量文件(如shapefile),并在该文件的空间范围内创建一个规则的网格。每个网格都是一个多边形,包含四个顶点,代表了网格的四个角。每个网格都有一个唯一的ID,这个ID是在创建网格的过程中自动生成的。

这个脚本的主要步骤如下:

  1. 打开输入的矢量文件,并获取其空间参考和范围。
  2. 根据输入的网格大小,计算每个网格的大小。
  3. 创建输出的矢量文件,该文件的空间参考与输入的矢量文件相同。
  4. 在输出的矢量文件中创建一个新的图层,并在该图层中添加一个ID字段。
  5. 在输入的矢量文件的范围内,创建规则的网格。每个网格都是一个多边形,包含四个顶点。每个网格都有一个唯一的ID。
  6. 将创建的网格添加到输出的矢量文件中。

这个脚本可以作为一个独立的Python脚本运行,也可以作为一个函数在其他的Python脚本中调用。

收获

使用Python的GDAL/OGR库来创建渔网格是一个非常有效和灵活的方法,特别适合需要大量或定期创建渔网格的场景。

通过编写Python脚本,实现了渔网格的自动化创建和批处理,不仅提高了工作效率,也帮助能解决了一些复杂和重复的任务。