Estoy tratando de copiar una selección de características de un shapefile a un shapefile separado, pero estoy atascado al tratar de establecer los atributos del shapefile separado para que sean los mismos que los del shapefile original. Primero pensé en crear una lista de atributos con el 'Nombre', 'Tipo', 'Ancho' y 'Precisión' de cada atributo y luego usar esa lista para definir los atributos del nuevo shapefile. Pero no estoy seguro de cómo hacer esto.
Mi código hasta ahora sólo construye una lista de atributos existentes y crea un nuevo shapefile:
attributes = []
for i in range(layerDef.GetFieldCount()):
fieldName = layerDef.GetFieldDefn(i).GetName()
fieldTypeCode = layerDef.GetFieldDefn(i).GetType()
fieldType = layerDef.GetFieldDefn(i).GetFieldTypeName(fieldTypeCode)
fieldWidth = layerDef.GetFieldDefn(i).GetWidth()
GetPrecision = layerDef.GetFieldDefn(i).GetPrecision()
attributesList = fieldName, fieldType, fieldWidth, GetPrecision
attributes.append(attributesList)
newShapefile = driver.CreateDataSource("BuildingsFilter.shp")
srs = osr.SpatialReference()
srs.ImportFromWkt(DataSrsWkt)
newLayer = newShapefile.CreateLayer("BuildingsFilter, srs, geom_type = layer.GetLayerDefn().GetGeomType())