欢迎访问宙启技术站
智能推送

如何使用Python将GeoJSON数据导出为Shapefile格式

发布时间:2024-01-08 22:01:45

要将GeoJSON数据导出为Shapefile格式,可以使用Python中的GDAL库。GDAL是一个开源的地理空间数据抽象库,它提供了处理各种地理空间数据格式的功能。

首先,确保已经安装了GDAL库。可以使用pip来安装GDAL库,命令如下:

pip install gdal

接下来,可以使用以下代码示例将GeoJSON数据导出为Shapefile格式:

from osgeo import ogr

def geojson_to_shapefile(geojson_file, shapefile_name):
    # 打开GeoJSON文件
    geojson_data = ogr.Open(geojson_file)

    # 获取GeoJSON的      个图层
    layer = geojson_data.GetLayer(0)

    # 创建一个Shapefile的驱动器
    driver = ogr.GetDriverByName('ESRI Shapefile')

    # 创建一个新的Shapefile
    shapefile = driver.CreateDataSource(shapefile_name)

    # 克隆GeoJSON图层结构到Shapefile中
    layer_defn = layer.GetLayerDefn()
    new_layer = shapefile.CreateLayer(layer_defn.GetName(), layer.GetSpatialRef(), geom_type=layer_defn.GetGeomType())

    # 获取图层的字段定义并添加到Shapefile中
    for i in range(layer_defn.GetFieldCount()):
        new_layer.CreateField(layer_defn.GetFieldDefn(i))

    # 遍历GeoJSON图层中的要素并写入Shapefile中
    feature = layer.GetNextFeature()
    while feature:
        new_layer.CreateFeature(feature)
        feature = layer.GetNextFeature()

    # 关闭文件
    geojson_data = None
    shapefile = None

# 使用示例
if __name__ == '__main__':
    geojson_file = 'input.geojson'
    shapefile_name = 'output.shp'
    geojson_to_shapefile(geojson_file, shapefile_name)

在上述代码示例中,首先打开GeoJSON文件,然后获取GeoJSON的 个图层。然后,创建一个Shapefile的驱动器,并使用驱动器创建一个新的Shapefile。

接下来,克隆GeoJSON图层的结构到Shapefile中,并添加图层的字段定义。然后,遍历GeoJSON图层中的要素,将其写入Shapefile中。

最后,关闭打开的文件。

要使用代码示例,将GeoJSON文件的路径和Shapefile的路径提供给 geojson_to_shapefile 函数,并运行代码即可。

请注意,导出后的Shapefile文件将具有与GeoJSON文件相同的几何类型和属性字段。