def test_ogr_index_11(): ds = ogr.GetDriverByName('ESRI Shapefile').CreateDataSource( 'tmp/ogr_index_11.dbf') lyr = ds.CreateLayer('ogr_index_11', geom_type=ogr.wkbNone) lyr.CreateField(ogr.FieldDefn('intfield', ogr.OFTInteger)) lyr.CreateField(ogr.FieldDefn('strfield', ogr.OFTString)) ogrtest.quick_create_feature(lyr, [1, "foo"], None) ogrtest.quick_create_feature(lyr, [1, "bar"], None) ogrtest.quick_create_feature(lyr, [2, "foo"], None) ogrtest.quick_create_feature(lyr, [2, "bar"], None) ogrtest.quick_create_feature(lyr, [3, "bar"], None) ds.ExecuteSQL('CREATE INDEX ON ogr_index_11 USING intfield') ds.ExecuteSQL('CREATE INDEX ON ogr_index_11 USING strfield') lyr.SetAttributeFilter("intfield = 1 OR strfield = 'bar'") ogr_index_11_check(lyr, [0, 1, 3]) lyr.SetAttributeFilter("intfield = 1 AND strfield = 'bar'") ogr_index_11_check(lyr, [1]) lyr.SetAttributeFilter("intfield = 1 AND strfield = 'foo'") ogr_index_11_check(lyr, [0]) lyr.SetAttributeFilter("intfield = 3 AND strfield = 'foo'") ogr_index_11_check(lyr, []) lyr.SetAttributeFilter("intfield IN (1, 2, 3)") ogr_index_11_check(lyr, [0, 1, 2, 3, 4]) ds = None
def ogr_index_2(): drv = ogr.GetDriverByName('ESRI Shapefile') gdaltest.s_ds = drv.CreateDataSource('join_t.dbf') gdaltest.s_lyr = gdaltest.s_ds.CreateLayer('join_t', geom_type=ogr.wkbNone) ogrtest.quick_create_layer_def(gdaltest.s_lyr, [('SKEY', ogr.OFTInteger), ('VALUE', ogr.OFTString, 16)]) for i in range(20): ogrtest.quick_create_feature(gdaltest.s_lyr, [i, 'Value ' + str(i)], None) if gdaltest.s_lyr.GetFeatureCount() != 20: gdaltest.post_reason('FeatureCount wrong') return 'fail' gdaltest.s_ds.Release() gdaltest.s_lyr = None gdaltest.s_ds = None gdaltest.s_ds = ogr.OpenShared('join_t.dbf', update=1) gdaltest.s_lyr = gdaltest.s_ds.GetLayerByName('join_t') return 'success'
def ogr_join_22(): ds = ogr.GetDriverByName('Memory').CreateDataSource('') lyr = ds.CreateLayer('first') ogrtest.quick_create_layer_def(lyr, [['id.1'], ['id2']]) ogrtest.quick_create_feature(lyr, ['key1', 'key2'], None) lyr = ds.CreateLayer('second') ogrtest.quick_create_layer_def(lyr, [['id.1'], ['id2'], ['val']]) ogrtest.quick_create_feature(lyr, ['key1', 'keyX', '1'], None) ogrtest.quick_create_feature(lyr, ['key1', 'key2', '2'], None) ogrtest.quick_create_feature(lyr, ['key1', 'keyY', '3'], None) sql_lyr = ds.ExecuteSQL( "SELECT val FROM first JOIN second ON first.\"id.1\" = second.\"id.1\" AND first.id2 = second.id2" ) feat = sql_lyr.GetNextFeature() val = feat.GetFieldAsString(0) ds.ReleaseResultSet(sql_lyr) ds = None if val != '2': gdaltest.post_reason('fail') print(val) return 'fail' return 'success'
def test_ogr_join_23(): ds = ogr.GetDriverByName('Memory').CreateDataSource('') lyr = ds.CreateLayer('first') ogrtest.quick_create_layer_def(lyr, [['f']]) ogrtest.quick_create_feature(lyr, [None], None) ogrtest.quick_create_feature(lyr, ['key1'], None) lyr = ds.CreateLayer('second') ogrtest.quick_create_layer_def(lyr, [['f']]) ogrtest.quick_create_feature(lyr, ['key1'], None) ogrtest.quick_create_feature(lyr, [None], None) sql_lyr = ds.ExecuteSQL( "SELECT * FROM first JOIN second ON first.f = second.f") feat = sql_lyr.GetNextFeature() if feat.IsFieldSetAndNotNull('second.f'): feat.DumpReadable() pytest.fail() feat = sql_lyr.GetNextFeature() if feat['f'] != 'key1' or feat['second.f'] != 'key1': feat.DumpReadable() pytest.fail() ds.ReleaseResultSet(sql_lyr) ds = None
def ogr_join_22(): ds = ogr.GetDriverByName('Memory').CreateDataSource('') lyr = ds.CreateLayer('first') ogrtest.quick_create_layer_def(lyr, [['id.1'], ['id2']]) ogrtest.quick_create_feature(lyr, [ 'key1', 'key2' ], None) lyr = ds.CreateLayer('second') ogrtest.quick_create_layer_def(lyr, [['id.1'], ['id2'], ['val']]) ogrtest.quick_create_feature(lyr, [ 'key1', 'keyX', '1' ], None) ogrtest.quick_create_feature(lyr, [ 'key1', 'key2', '2' ], None) ogrtest.quick_create_feature(lyr, [ 'key1', 'keyY', '3' ], None) sql_lyr = ds.ExecuteSQL("SELECT val FROM first JOIN second ON first.\"id.1\" = second.\"id.1\" AND first.id2 = second.id2") feat = sql_lyr.GetNextFeature() val = feat.GetFieldAsString(0) ds.ReleaseResultSet(sql_lyr) ds = None if val != '2': gdaltest.post_reason('fail') print(val) return 'fail' return 'success'
def ogr_join_22(): ds = ogr.GetDriverByName("Memory").CreateDataSource("") lyr = ds.CreateLayer("first") ogrtest.quick_create_layer_def(lyr, [["id.1"], ["id2"]]) ogrtest.quick_create_feature(lyr, ["key1", "key2"], None) lyr = ds.CreateLayer("second") ogrtest.quick_create_layer_def(lyr, [["id.1"], ["id2"], ["val"]]) ogrtest.quick_create_feature(lyr, ["key1", "keyX", "1"], None) ogrtest.quick_create_feature(lyr, ["key1", "key2", "2"], None) ogrtest.quick_create_feature(lyr, ["key1", "keyY", "3"], None) sql_lyr = ds.ExecuteSQL( 'SELECT val FROM first JOIN second ON first."id.1" = second."id.1" AND first.id2 = second.id2' ) feat = sql_lyr.GetNextFeature() val = feat.GetFieldAsString(0) ds.ReleaseResultSet(sql_lyr) ds = None if val != "2": gdaltest.post_reason("fail") print(val) return "fail" return "success"
def ogr_join_23(): ds = ogr.GetDriverByName('Memory').CreateDataSource('') lyr = ds.CreateLayer('first') ogrtest.quick_create_layer_def(lyr, [['f']]) ogrtest.quick_create_feature(lyr, [None], None) ogrtest.quick_create_feature(lyr, ['key1'], None) lyr = ds.CreateLayer('second') ogrtest.quick_create_layer_def(lyr, [['f']]) ogrtest.quick_create_feature(lyr, ['key1'], None) ogrtest.quick_create_feature(lyr, [None], None) sql_lyr = ds.ExecuteSQL("SELECT * FROM first JOIN second ON first.f = second.f") feat = sql_lyr.GetNextFeature() if feat.IsFieldSetAndNotNull('second.f'): gdaltest.post_reason('fail') feat.DumpReadable() return 'fail' feat = sql_lyr.GetNextFeature() if feat['f'] != 'key1' or feat['second.f'] != 'key1': gdaltest.post_reason('fail') feat.DumpReadable() return 'fail' ds.ReleaseResultSet(sql_lyr) ds = None return 'success'
def ogr_index_11(): ds = ogr.GetDriverByName('ESRI Shapefile').CreateDataSource('tmp/ogr_index_11.dbf') lyr = ds.CreateLayer('ogr_index_11', geom_type=ogr.wkbNone) lyr.CreateField(ogr.FieldDefn('intfield', ogr.OFTInteger)) lyr.CreateField(ogr.FieldDefn('strfield', ogr.OFTString)) ogrtest.quick_create_feature(lyr, [1, "foo"], None) ogrtest.quick_create_feature(lyr, [1, "bar"], None) ogrtest.quick_create_feature(lyr, [2, "foo"], None) ogrtest.quick_create_feature(lyr, [2, "bar"], None) ogrtest.quick_create_feature(lyr, [3, "bar"], None) ds.ExecuteSQL('CREATE INDEX ON ogr_index_11 USING intfield') ds.ExecuteSQL('CREATE INDEX ON ogr_index_11 USING strfield') lyr.SetAttributeFilter("intfield = 1 OR strfield = 'bar'") ret = ogr_index_11_check(lyr, [0, 1, 3]) if ret != 'success': return ret lyr.SetAttributeFilter("intfield = 1 AND strfield = 'bar'") ret = ogr_index_11_check(lyr, [1]) if ret != 'success': return ret lyr.SetAttributeFilter("intfield = 1 AND strfield = 'foo'") ret = ogr_index_11_check(lyr, [0]) if ret != 'success': return ret lyr.SetAttributeFilter("intfield = 3 AND strfield = 'foo'") ret = ogr_index_11_check(lyr, []) if ret != 'success': return ret lyr.SetAttributeFilter("intfield IN (1, 2, 3)") ret = ogr_index_11_check(lyr, [0, 1, 2, 3, 4]) if ret != 'success': return ret ds = None return 'success'
def create_join_t_test_file(create_index=False): drv = ogr.GetDriverByName('ESRI Shapefile') s_ds = drv.CreateDataSource('join_t.dbf') s_lyr = s_ds.CreateLayer('join_t', geom_type=ogr.wkbNone) ogrtest.quick_create_layer_def(s_lyr, [('SKEY', ogr.OFTInteger), ('VALUE', ogr.OFTString, 16)]) for i in range(20): ogrtest.quick_create_feature(s_lyr, [i, 'Value ' + str(i)], None) if create_index: s_ds.ExecuteSQL('CREATE INDEX ON join_t USING value') s_ds.ExecuteSQL('CREATE INDEX ON join_t USING skey') s_ds.Release() yield ogr.GetDriverByName('ESRI Shapefile').DeleteDataSource('join_t.dbf')
def test_ogr_join_15(): ds = ogr.GetDriverByName('CSV').CreateDataSource('/vsimem/ogr_join_14') lyr = ds.CreateLayer('first') ogrtest.quick_create_layer_def(lyr, [['id']]) ogrtest.quick_create_feature(lyr, ['key'], None) lyr = ds.CreateLayer('second') ogrtest.quick_create_layer_def(lyr, [['col1_2'], ['id'], ['col3_2']]) ogrtest.quick_create_feature(lyr, ['a2', 'key', 'c2'], None) lyr = ds.CreateLayer('third') ogrtest.quick_create_layer_def(lyr, [['col1_3'], ['id'], ['col3_3']]) ogrtest.quick_create_feature(lyr, ['a3', 'key', 'c3'], None) sql_lyr = ds.ExecuteSQL( "SELECT concat(col3_2, ''), col3_2 FROM first JOIN second ON first.id = second.id JOIN third ON first.id = third.id" ) feat = sql_lyr.GetNextFeature() val1 = feat.GetFieldAsString(0) val2 = feat.GetFieldAsString(1) ds.ReleaseResultSet(sql_lyr) ds = None gdal.Unlink('/vsimem/ogr_join_14/first.csv') gdal.Unlink('/vsimem/ogr_join_14/second.csv') gdal.Unlink('/vsimem/ogr_join_14/third.csv') gdal.Unlink('/vsimem/ogr_join_14') assert val1 == 'c2' assert val2 == 'c2'
def test_ogr_join_15(): ds = ogr.GetDriverByName('CSV').CreateDataSource('/vsimem/ogr_join_14') lyr = ds.CreateLayer('first') ogrtest.quick_create_layer_def(lyr, [['id']]) ogrtest.quick_create_feature(lyr, ['key'], None) lyr = ds.CreateLayer('second') ogrtest.quick_create_layer_def(lyr, [['col1_2'], ['id'], ['col3_2']]) ogrtest.quick_create_feature(lyr, ['a2', 'key', 'c2'], None) lyr = ds.CreateLayer('third') ogrtest.quick_create_layer_def(lyr, [['col1_3'], ['id'], ['col3_3']]) ogrtest.quick_create_feature(lyr, ['a3', 'key', 'c3'], None) sql_lyr = ds.ExecuteSQL("SELECT concat(col3_2, ''), col3_2 FROM first JOIN second ON first.id = second.id JOIN third ON first.id = third.id") feat = sql_lyr.GetNextFeature() val1 = feat.GetFieldAsString(0) val2 = feat.GetFieldAsString(1) ds.ReleaseResultSet(sql_lyr) ds = None gdal.Unlink('/vsimem/ogr_join_14/first.csv') gdal.Unlink('/vsimem/ogr_join_14/second.csv') gdal.Unlink('/vsimem/ogr_join_14/third.csv') gdal.Unlink('/vsimem/ogr_join_14') assert val1 == 'c2' assert val2 == 'c2'
def ogr_join_15(): ds = ogr.GetDriverByName("CSV").CreateDataSource("/vsimem/ogr_join_14") lyr = ds.CreateLayer("first") ogrtest.quick_create_layer_def(lyr, [["id"]]) ogrtest.quick_create_feature(lyr, ["key"], None) lyr = ds.CreateLayer("second") ogrtest.quick_create_layer_def(lyr, [["col1_2"], ["id"], ["col3_2"]]) ogrtest.quick_create_feature(lyr, ["a2", "key", "c2"], None) lyr = ds.CreateLayer("third") ogrtest.quick_create_layer_def(lyr, [["col1_3"], ["id"], ["col3_3"]]) ogrtest.quick_create_feature(lyr, ["a3", "key", "c3"], None) sql_lyr = ds.ExecuteSQL( "SELECT concat(col3_2, ''), col3_2 FROM first JOIN second ON first.id = second.id JOIN third ON first.id = third.id" ) feat = sql_lyr.GetNextFeature() val1 = feat.GetFieldAsString(0) val2 = feat.GetFieldAsString(1) ds.ReleaseResultSet(sql_lyr) ds = None from osgeo import gdal gdal.Unlink("/vsimem/ogr_join_14/first.csv") gdal.Unlink("/vsimem/ogr_join_14/second.csv") gdal.Unlink("/vsimem/ogr_join_14/third.csv") gdal.Unlink("/vsimem/ogr_join_14") if val1 != "c2": gdaltest.post_reason("fail") print(val1) return "fail" if val2 != "c2": gdaltest.post_reason("fail") print(val2) return "fail" return "success"
def ogr_join_15(): ds = ogr.GetDriverByName('CSV').CreateDataSource('/vsimem/ogr_join_14') lyr = ds.CreateLayer('first') ogrtest.quick_create_layer_def(lyr, [['id']]) ogrtest.quick_create_feature(lyr, ['key'], None) lyr = ds.CreateLayer('second') ogrtest.quick_create_layer_def(lyr, [['col1_2'], ['id'], ['col3_2']]) ogrtest.quick_create_feature(lyr, ['a2', 'key', 'c2'], None) lyr = ds.CreateLayer('third') ogrtest.quick_create_layer_def(lyr, [['col1_3'], ['id'], ['col3_3']]) ogrtest.quick_create_feature(lyr, ['a3', 'key', 'c3'], None) sql_lyr = ds.ExecuteSQL( "SELECT concat(col3_2, ''), col3_2 FROM first JOIN second ON first.id = second.id JOIN third ON first.id = third.id" ) feat = sql_lyr.GetNextFeature() val1 = feat.GetFieldAsString(0) val2 = feat.GetFieldAsString(1) ds.ReleaseResultSet(sql_lyr) ds = None from osgeo import gdal gdal.Unlink('/vsimem/ogr_join_14/first.csv') gdal.Unlink('/vsimem/ogr_join_14/second.csv') gdal.Unlink('/vsimem/ogr_join_14/third.csv') gdal.Unlink('/vsimem/ogr_join_14') if val1 != 'c2': gdaltest.post_reason('fail') print(val1) return 'fail' if val2 != 'c2': gdaltest.post_reason('fail') print(val2) return 'fail' return 'success'
def ogr_join_15(): ds = ogr.GetDriverByName('CSV').CreateDataSource('/vsimem/ogr_join_14') lyr = ds.CreateLayer('first') ogrtest.quick_create_layer_def(lyr, [['id']]) ogrtest.quick_create_feature(lyr, [ 'key' ], None) lyr = ds.CreateLayer('second') ogrtest.quick_create_layer_def(lyr, [['col1_2'],['id'],['col3_2']]) ogrtest.quick_create_feature(lyr, [ 'a2', 'key', 'c2' ], None) lyr = ds.CreateLayer('third') ogrtest.quick_create_layer_def(lyr, [['col1_3'],['id'],['col3_3']]) ogrtest.quick_create_feature(lyr, [ 'a3', 'key', 'c3' ], None) sql_lyr = ds.ExecuteSQL("SELECT concat(col3_2, ''), col3_2 FROM first JOIN second ON first.id = second.id JOIN third ON first.id = third.id") feat = sql_lyr.GetNextFeature() val1 = feat.GetFieldAsString(0) val2 = feat.GetFieldAsString(1) ds.ReleaseResultSet(sql_lyr) ds = None from osgeo import gdal gdal.Unlink('/vsimem/ogr_join_14/first.csv') gdal.Unlink('/vsimem/ogr_join_14/second.csv') gdal.Unlink('/vsimem/ogr_join_14/third.csv') gdal.Unlink('/vsimem/ogr_join_14') if val1 != 'c2': gdaltest.post_reason('fail') print(val1) return 'fail' if val2 != 'c2': gdaltest.post_reason('fail') print(val2) return 'fail' return 'success'
def ogr_index_1(): from osgeo import gdal gdal.PushErrorHandler('CPLQuietErrorHandler') try: ogr.GetDriverByName('MapInfo File').DeleteDataSource('index_p.mif') except: pass try: ogr.GetDriverByName('ESRI Shapefile').DeleteDataSource('join_t.dbf') except: pass gdal.PopErrorHandler() drv = ogr.GetDriverByName('MapInfo File') gdaltest.p_ds = drv.CreateDataSource('index_p.mif') gdaltest.p_lyr = gdaltest.p_ds.CreateLayer('index_p') ogrtest.quick_create_layer_def(gdaltest.p_lyr, [('PKEY', ogr.OFTInteger)]) ogrtest.quick_create_feature(gdaltest.p_lyr, [5], None) ogrtest.quick_create_feature(gdaltest.p_lyr, [10], None) ogrtest.quick_create_feature(gdaltest.p_lyr, [9], None) ogrtest.quick_create_feature(gdaltest.p_lyr, [4], None) ogrtest.quick_create_feature(gdaltest.p_lyr, [3], None) ogrtest.quick_create_feature(gdaltest.p_lyr, [1], None) # It turns out mapinfo format doesn't allow GetFeatureCount() calls while # writing ... it just blows an assert! # if gdaltest.p_lyr.GetFeatureCount() != 7: # gdaltest.post_reason( 'FeatureCount wrong' ) # return 'fail' # Close and reopen, since it seems the .mif driver does not allow reading # from a newly created (updatable) file. gdaltest.p_ds = None gdaltest.p_ds = ogr.OpenShared('index_p.mif', update=0) gdaltest.p_lyr = gdaltest.p_ds.GetLayerByName('index_p') return 'success'
def ogr_index_1(): from osgeo import gdal gdal.PushErrorHandler('CPLQuietErrorHandler') try: ogr.GetDriverByName('MapInfo File').DeleteDataSource('index_p.mif') except AttributeError: pass try: ogr.GetDriverByName('ESRI Shapefile').DeleteDataSource('join_t.dbf') except AttributeError: pass gdal.PopErrorHandler() drv = ogr.GetDriverByName('MapInfo File') gdaltest.p_ds = drv.CreateDataSource('index_p.mif') gdaltest.p_lyr = gdaltest.p_ds.CreateLayer('index_p') ogrtest.quick_create_layer_def(gdaltest.p_lyr, [('PKEY', ogr.OFTInteger)]) ogrtest.quick_create_feature(gdaltest.p_lyr, [5], None) ogrtest.quick_create_feature(gdaltest.p_lyr, [10], None) ogrtest.quick_create_feature(gdaltest.p_lyr, [9], None) ogrtest.quick_create_feature(gdaltest.p_lyr, [4], None) ogrtest.quick_create_feature(gdaltest.p_lyr, [3], None) ogrtest.quick_create_feature(gdaltest.p_lyr, [1], None) # It turns out mapinfo format doesn't allow GetFeatureCount() calls while # writing ... it just blows an assert! # if gdaltest.p_lyr.GetFeatureCount() != 7: # gdaltest.post_reason( 'FeatureCount wrong' ) # return 'fail' # Close and reopen, since it seems the .mif driver does not allow reading # from a newly created (updatable) file. gdaltest.p_ds = None gdaltest.p_ds = ogr.OpenShared('index_p.mif', update=0) gdaltest.p_lyr = gdaltest.p_ds.GetLayerByName('index_p') return 'success'
def create_index_p_test_file(): drv = ogr.GetDriverByName('MapInfo File') p_ds = drv.CreateDataSource('index_p.mif') p_lyr = p_ds.CreateLayer('index_p') ogrtest.quick_create_layer_def(p_lyr, [('PKEY', ogr.OFTInteger)]) ogrtest.quick_create_feature(p_lyr, [5], None) ogrtest.quick_create_feature(p_lyr, [10], None) ogrtest.quick_create_feature(p_lyr, [9], None) ogrtest.quick_create_feature(p_lyr, [4], None) ogrtest.quick_create_feature(p_lyr, [3], None) ogrtest.quick_create_feature(p_lyr, [1], None) p_ds.Release() yield ogr.GetDriverByName('MapInfo File').DeleteDataSource('index_p.mif')