In [1]:
import shapely.wkt
import os
from osgeo import ogr
GFT_REFRESH_TOKEN = os.environ['GFT_REFRESH_TOKEN']
from osgeo import gdal
ogr.UseExceptions()
# gdal.SetConfigOption('CPL_DEBUG', 'ON')
gdal.SetConfigOption('CPL_DEBUG', 'OFF')
In [2]:
def convert2ft(input_path, output_path, append=False, fix_geometry=False, simplify_geometry=False, start_index=0):
filename = input_path
src_ds = ogr.Open(input_path)
src_lyr = src_ds.GetLayerByIndex(0)
f = src_lyr.GetFeature(0)
# create feature table
dst_ds = ogr.GetDriverByName('GFT').Open('GFT:' + GFT_REFRESH_TOKEN, True)
if append:
dst_lyr = dst_ds.GetLayerByName(output_path)
else:
dst_lyr = dst_ds.CreateLayer(output_path)
# create fields using OGR
[dst_lyr.CreateField(f.GetFieldDefnRef(i)) for i in range(f.GetFieldCount())]
index = 0
batch_size = 15
index_batch = 0
for feat in src_lyr:
if index < start_index:
index = index + 1
continue
try:
geom = shapely.wkt.loads(feat.GetGeometryRef().ExportToWkt())
except Exception as e:
print('Error({0}), skipping geometry.'.format(e))
continue
if fix_geometry and not geom.is_valid:
geom = geom.buffer(0.0)
if simplify_geometry:
geom = geom.simplify(0.004)
f = ogr.Feature(dst_lyr.GetLayerDefn())
# set field values
for i in range(feat.GetFieldCount()):
fd = feat.GetFieldDefnRef(i)
f.SetField(fd.GetName(), feat.GetField(fd.GetName()))
#print(fd.GetName())
#print(feat.GetField(fd.GetName()))
# set geometry
f.SetGeometry(ogr.CreateGeometryFromWkt(geom.to_wkt()))
if index_batch == 0:
dst_lyr.StartTransaction()
index_batch = index_batch + 1
# create feature
feature = dst_lyr.CreateFeature(f)
f.Destroy()
index = index + 1
if index_batch > batch_size:
dst_lyr.CommitTransaction()
index_batch = 0
src_ds.Destroy()
dst_ds.Destroy()
In [ ]:
input_file = '/home/gennadiy_donchyts/src/GlobalHAND30/all.shp'
output_table = 'max4_2'
append = False
fix_geometry = True
simplify_geometry = False
# gdal.SetConfigOption('CPL_DEBUG', 'OFF')
# convert2ft(input_file, output_table, append, fix_geometry, simplify_geometry)
convert2ft(input_file, output_table, append, fix_geometry, simplify_geometry, 10617) # append
In [ ]:
input_file = '/home/gennadiy_donchyts/src/GlobalHAND30/all.shp'
output_table = 'max4_2'
append = False
fix_geometry = True
simplify_geometry = False
# gdal.SetConfigOption('CPL_DEBUG', 'OFF')
# convert2ft(input_file, output_table, append, fix_geometry, simplify_geometry)
convert2ft(input_file, output_table, append, fix_geometry, simplify_geometry, 10617) # append
In [6]:
ds = ogr.Open(input_file)
l = ds.GetLayerByIndex(0)
f = l.GetFeature(0)
In [7]:
print(l.GetFeatureCount())
In [ ]:
driver = ogr.GetDriverByName('GFT')
dataSource = driver.Open('GFT:' + GFT_REFRESH_TOKEN, True)
print(dataSource)
layerCount = dataSource.GetLayerCount()
print('Layer count: {0}'.format(layerCount))
for i in range(layerCount):
layer = dataSource.GetLayer(i)
print('{0}: {1}'.format(i, layer.GetName()))