Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
print(" -> " + ogr.GetDriver(iDriver).GetName())
return False
#/* -------------------------------------------------------------------- */
#/* Try opening the output datasource as an existing, writable */
#/* -------------------------------------------------------------------- */
poODS = None
poDriver = None
if bUpdate:
poODS = ogr.Open(pszDestDataSource, True)
if poODS is None:
if bOverwrite or bAppend:
poODS = ogr.Open(pszDestDataSource, False)
if poODS is None:
# /* ok the datasource doesn't exist at all */
bUpdate = False
else:
poODS.delete()
poODS = None
if bUpdate:
print("FAILURE:\n" +
"Unable to open existing output datasource `%s'." % pszDestDataSource)
return False
elif len(papszDSCO) > 0:
print("WARNING: Datasource creation options ignored since an existing datasource\n" + \
" being updated.")
elif poOutputSRS is not None:
poDstGeometry.AssignSpatialReference(poOutputSRS)
if poClipDst is not None:
poClipped = poDstGeometry.Intersection(poClipDst)
if poClipped is None or poClipped.IsEmpty():
continue
poDstFeature.SetGeometryDirectly(poClipped)
poDstGeometry = poClipped
if bForceToPolygon:
poDstFeature.SetGeometryDirectly(ogr.ForceToPolygon(poDstGeometry))
elif bForceToMultiPolygon or \
(bPromoteToMulti and wkbFlatten(poDstGeometry.GetGeometryType()) == ogr.wkbPolygon):
poDstFeature.SetGeometryDirectly(ogr.ForceToMultiPolygon(poDstGeometry))
elif bForceToMultiLineString or \
(bPromoteToMulti and wkbFlatten(poDstGeometry.GetGeometryType()) == ogr.wkbLineString):
poDstFeature.SetGeometryDirectly(ogr.ForceToMultiLineString(poDstGeometry))
gdal.ErrorReset()
if poDstLayer.CreateFeature( poDstFeature ) != 0 and not bSkipFailures:
if nGroupTransactions > 0:
poDstLayer.RollbackTransaction()
return False
#/* Report progress */
nCount = nCount + 1
if pfnProgress is not None:
poDstLayer = None
#/* -------------------------------------------------------------------- */
#/* If the layer does not exist, then create it. */
#/* -------------------------------------------------------------------- */
if poDstLayer is None:
if eGType == -2:
eGType = poSrcFDefn.GetGeomType()
if bExplodeCollections:
n25DBit = eGType & ogr.wkb25DBit
if wkbFlatten(eGType) == ogr.wkbMultiPoint:
eGType = ogr.wkbPoint | n25DBit
elif wkbFlatten(eGType) == ogr.wkbMultiLineString:
eGType = ogr.wkbLineString | n25DBit
elif wkbFlatten(eGType) == ogr.wkbMultiPolygon:
eGType = ogr.wkbPolygon | n25DBit
elif wkbFlatten(eGType) == ogr.wkbGeometryCollection:
eGType = ogr.wkbUnknown | n25DBit
if pszZField is not None:
eGType = eGType | ogr.wkb25DBit
if poDstDS.TestCapability(ogr.ODsCCreateLayer) == False:
print("Layer " + pszNewLayerName + "not found, and CreateLayer not supported by driver.")
return False
gdal.ErrorReset()
poDstLayer = poDstDS.CreateLayer(pszNewLayerName, poOutputSRS, \
eGType, papszLCO)
if poDstDS.DeleteLayer(iLayer) != 0:
print("DeleteLayer() failed when overwrite requested.")
return None
poDstLayer = None
#/* -------------------------------------------------------------------- */
#/* If the layer does not exist, then create it. */
#/* -------------------------------------------------------------------- */
if poDstLayer is None:
if eGType == -2:
eGType = poSrcFDefn.GetGeomType()
n25DBit = eGType & ogr.wkb25DBit
if bPromoteToMulti:
if wkbFlatten(eGType) == ogr.wkbLineString:
eGType = ogr.wkbMultiLineString | n25DBit
elif wkbFlatten(eGType) == ogr.wkbPolygon:
eGType = ogr.wkbMultiPolygon | n25DBit
if bExplodeCollections:
if wkbFlatten(eGType) == ogr.wkbMultiPoint:
eGType = ogr.wkbPoint | n25DBit
elif wkbFlatten(eGType) == ogr.wkbMultiLineString:
eGType = ogr.wkbLineString | n25DBit
elif wkbFlatten(eGType) == ogr.wkbMultiPolygon:
eGType = ogr.wkbPolygon | n25DBit
elif wkbFlatten(eGType) == ogr.wkbGeometryCollection:
eGType = ogr.wkbUnknown | n25DBit
if pszZField is not None:
eGType = eGType | ogr.wkb25DBit
bForceToPolygon = False
bForceToMultiPolygon = False
bForceToMultiLineString = False
poDstLayer = psInfo.poDstLayer
#papszTransformOptions = psInfo.papszTransformOptions
poCT = psInfo.poCT
panMap = psInfo.panMap
iSrcZField = psInfo.iSrcZField
if poOutputSRS is None and not bNullifyOutputSRS:
poOutputSRS = poSrcLayer.GetSpatialRef()
if wkbFlatten(eGType) == ogr.wkbPolygon:
bForceToPolygon = True
elif wkbFlatten(eGType) == ogr.wkbMultiPolygon:
bForceToMultiPolygon = True
elif wkbFlatten(eGType) == ogr.wkbMultiLineString:
bForceToMultiLineString = True
#/* -------------------------------------------------------------------- */
#/* Transfer features. */
#/* -------------------------------------------------------------------- */
nFeaturesInTransaction = 0
nCount = 0
if nGroupTransactions > 0:
poDstLayer.StartTransaction()
while True:
poDstFeature = None
#/* Open data source. */
#/* -------------------------------------------------------------------- */
if isinstance(pszDataSource, basestring):
poDS = ogr.Open(pszDataSource, False)
else:
poDS = pszDataSource
#/* -------------------------------------------------------------------- */
#/* Report failure */
#/* -------------------------------------------------------------------- */
if poDS is None:
print("FAILURE:\n" +
"Unable to open datasource `%s' with the following drivers." % pszDataSource)
for iDriver in range(ogr.GetDriverCount()):
print(" -> " + ogr.GetDriver(iDriver).GetName())
return False
#/* -------------------------------------------------------------------- */
#/* Try opening the output datasource as an existing, writable */
#/* -------------------------------------------------------------------- */
poODS = None
poDriver = None
if bUpdate:
poODS = ogr.Open(pszDestDataSource, True)
if poODS is None:
if bOverwrite or bAppend:
poODS = ogr.Open(pszDestDataSource, False)
if poODS is None:
print( "Usage: ogr2ogr [--help-general] [-skipfailures] [-append] [-update] [-gt n]\n" + \
" [-select field_list] [-where restricted_where] \n" + \
" [-progress] [-sql ] \n" + \
" [-spat xmin ymin xmax ymax] [-preserve_fid] [-fid FID]\n" + \
" [-a_srs srs_def] [-t_srs srs_def] [-s_srs srs_def]\n" + \
" [-f format_name] [-overwrite] [[-dsco NAME=VALUE] ...]\n" + \
" [-simplify tolerance]\n" + \
#// " [-segmentize max_dist] [-fieldTypeToString All|(type1[,type2]*)]\n" + \
" [-fieldTypeToString All|(type1[,type2]*)] [-explodecollections] \n" + \
" dst_datasource_name src_datasource_name\n" + \
" [-lco NAME=VALUE] [-nln name] [-nlt type] [-dim 2|3] [layer [layer ...]]\n" + \
"\n" + \
" -f format_name: output file format name, possible values are:")
for iDriver in range(ogr.GetDriverCount()):
poDriver = ogr.GetDriver(iDriver)
if poDriver.TestCapability( ogr.ODrCCreateDataSource ):
print( " -f \"" + poDriver.GetName() + "\"" )
print( " -append: Append to existing layer instead of creating new if it exists\n" + \
" -overwrite: delete the output layer and recreate it empty\n" + \
" -update: Open existing output datasource in update mode\n" + \
" -progress: Display progress on terminal. Only works if input layers have the \"fast feature count\" capability\n" + \
" -select field_list: Comma-delimited list of fields from input layer to\n" + \
" copy to the new layer (defaults to all)\n" + \
" -where restricted_where: Attribute query (like SQL WHERE)\n" + \
" -sql statement: Execute given SQL statement and save result.\n" + \
" -skipfailures: skip features or layers that fail to convert\n" + \
" -gt n: group n features per transaction (default 200)\n" + \
" -spat xmin ymin xmax ymax: spatial query extents\n" + \
" -simplify tolerance: distance tolerance for simplification.\n" + \
print("Usage: ogr2ogr [--help-general] [-skipfailures] [-append] [-update] [-gt n]\n" +
" [-select field_list] [-where restricted_where] \n" +
" [-progress] [-sql ] \n" +
" [-spat xmin ymin xmax ymax] [-preserve_fid] [-fid FID]\n" +
" [-a_srs srs_def] [-t_srs srs_def] [-s_srs srs_def]\n" +
" [-f format_name] [-overwrite] [[-dsco NAME=VALUE] ...]\n" +
" [-simplify tolerance]\n" +
#// " [-segmentize max_dist] [-fieldTypeToString All|(type1[,type2]*)]\n" +
" [-fieldTypeToString All|(type1[,type2]*)] [-explodecollections] \n" +
" dst_datasource_name src_datasource_name\n" +
" [-lco NAME=VALUE] [-nln name] [-nlt type] [-dim 2|3] [layer [layer ...]]\n" +
"\n" +
" -f format_name: output file format name, possible values are:")
for iDriver in range(ogr.GetDriverCount()):
poDriver = ogr.GetDriver(iDriver)
if poDriver.TestCapability(ogr.ODrCCreateDataSource):
print(" -f \"" + poDriver.GetName() + "\"")
print(" -append: Append to existing layer instead of creating new if it exists\n" +
" -overwrite: delete the output layer and recreate it empty\n" +
" -update: Open existing output datasource in update mode\n" +
" -progress: Display progress on terminal. Only works if input layers have the \"fast feature count\" capability\n" +
" -select field_list: Comma-delimited list of fields from input layer to\n" +
" copy to the new layer (defaults to all)\n" +
" -where restricted_where: Attribute query (like SQL WHERE)\n" +
" -sql statement: Execute given SQL statement and save result.\n" +
" -skipfailures: skip features or layers that fail to convert\n" +
" -gt n: group n features per transaction (default 20000)\n" +
" -spat xmin ymin xmax ymax: spatial query extents\n" +
" -simplify tolerance: distance tolerance for simplification.\n" +
" being updated.")
if poODS is not None:
poDriver = poODS.GetDriver()
#/* -------------------------------------------------------------------- */
#/* Find the output driver. */
#/* -------------------------------------------------------------------- */
if not bUpdate:
poDriver = ogr.GetDriverByName(pszFormat)
if poDriver is None:
print("Unable to find driver `%s'." % pszFormat)
print("The following drivers are available:")
for iDriver in range(ogr.GetDriverCount()):
print(" -> %s" % ogr.GetDriver(iDriver).GetName())
return False
if poDriver.TestCapability(ogr.ODrCCreateDataSource) == False:
print("%s driver does not support data source creation." % pszFormat)
return False
#/* -------------------------------------------------------------------- */
#/* Special case to improve user experience when translating */
#/* a datasource with multiple layers into a shapefile. If the */
#/* user gives a target datasource with .shp and it does not exist, */
#/* the shapefile driver will try to create a file, but this is not */
#/* appropriate because here we have several layers, so create */
#/* a directory instead. */
#/* -------------------------------------------------------------------- */
if EQUAL(poDriver.GetName(), "ESRI Shapefile") and \
print("Usage: ogr2ogr [--help-general] [-skipfailures] [-append] [-update] [-gt n]\n" + \
" [-select field_list] [-where restricted_where] \n" + \
" [-progress] [-sql ] \n" + \
" [-spat xmin ymin xmax ymax] [-preserve_fid] [-fid FID]\n" + \
" [-a_srs srs_def] [-t_srs srs_def] [-s_srs srs_def]\n" + \
" [-f format_name] [-overwrite] [[-dsco NAME=VALUE] ...]\n" + \
" [-simplify tolerance]\n" + \
#// " [-segmentize max_dist] [-fieldTypeToString All|(type1[,type2]*)]\n" + \
" [-fieldTypeToString All|(type1[,type2]*)] [-explodecollections] \n" + \
" dst_datasource_name src_datasource_name\n" + \
" [-lco NAME=VALUE] [-nln name] [-nlt type] [layer [layer ...]]\n" + \
"\n" + \
" -f format_name: output file format name, possible values are:")
for iDriver in range(ogr.GetDriverCount()):
poDriver = ogr.GetDriver(iDriver)
if poDriver.TestCapability(ogr.ODrCCreateDataSource):
print(" -f \"" + poDriver.GetName() + "\"")
print(" -append: Append to existing layer instead of creating new if it exists\n" + \
" -overwrite: delete the output layer and recreate it empty\n" + \
" -update: Open existing output datasource in update mode\n" + \
" -progress: Display progress on terminal. Only works if input layers have the \"fast feature count\" capability\n" + \
" -select field_list: Comma-delimited list of fields from input layer to\n" + \
" copy to the new layer (defaults to all)\n" + \
" -where restricted_where: Attribute query (like SQL WHERE)\n" + \
" -sql statement: Execute given SQL statement and save result.\n" + \
" -skipfailures: skip features or layers that fail to convert\n" + \
" -gt n: group n features per transaction (default 200)\n" + \
" -spat xmin ymin xmax ymax: spatial query extents\n" + \
" -simplify tolerance: distance tolerance for simplification.\n" + \