Hi, I've worked on a script to merge several OGR datasources into a single one. Nothing that can't be done with ogr2ogr with some loops around, but I think this can be convenient.
There are basically 2 modes : - Default one: each layer of each source datasource is written as a separate layer in the target datasource. - 'Single' mode: all layers from all source datasources are written into a single layer in the target datasource. This assumes that the schemas of those source layers are more or less compatible. I've not yet committed the script. You can grab it from https://gist.github.com/rouault/3b49bffd67fb18e23cd4c5bcc10d3103 Short usage: ogrmerge.py -o out_dsname src_dsname [src_dsname]* [-f format] [-single] [-nln layer_name_template] [-update | -overwrite_ds] [-append | -overwrite_lyr] [-src_geom_type geom_type_name[,geom_type_name]*] [-dsco NAME=VALUE]* [-lco NAME=VALUE]* [-s_srs srs_def] [-t_srs srs_def | -a_srs srs_def] [-progress] [-skip] [--help-general] Options specific to -single: [-field_strategy FirstLayer|Union|Intersection] [-src_layer_field_name name] [-src_layer_field_content layer_name_template] * layer_name_template can contain the following substituable variables: {AUTO_NAME} : {DS_BASENAME}_{LAYER_NAME} if they are different or {LAYER_NAME} if they are identical {DS_NAME} : name of the source dataset {DS_BASENAME}: base name of the source dataset {DS_INDEX} : index of the source dataset {LAYER_NAME} : name of the source layer {LAYER_IDX} : index of the source layer Examples: * ogrmerge.py -f VRT -o merged.vrt *.shp Creates a VRT with a layer for each input shapefiles * ogrmerge.py -f GPKG -o merged.gpkg *.shp Same, but creates a GeoPackage file * ogrmerge.py -single -o merged.shp france.shp germany.shp -src_layer_field_name country Concatenate the content of france.shp and germany.shp in merged.shp, and adds a 'country' field to each feature whose value is 'france' or 'germany' depending where it comes from Internally this generates a VRT file, and if the output format is not VRT, final translation is done with ogr2ogr / gdal.VectorTranslate. So for advanced uses, output to VRT, potential manual editing of it and ogr2ogr can be done. Opinions on script naming (I also tought to ogrcat.py to reflect the similarity with the Unix cat utility used to concatenate files), option naming, etc.. are welcome Even -- Spatialys - Geospatial professional services http://www.spatialys.com
_______________________________________________ gdal-dev mailing list [email protected] https://lists.osgeo.org/mailman/listinfo/gdal-dev
