def close(self): if self.isopen: if self.mode in ['w', 'a']: self.maintable.setMode('w') self.addtable.setMode('w') self.auxtable.setMode('w') aux = AuxTableManager(self.auxtable) # Write features to database addrow = 0 for f in self.xfeatures: textslot = aux.appendText(f.name, self.maintable.getRowCount() + 1) # Update cell elements for ref, e in zip(f.cellelementrefs, f.getCellElements(self.map)): e.textslot = textslot layer = self.map.getLayerByIndex(f.layerindex) layer.updateCellElement(ref, e) row = Row(self.maintable) row.setColumnUInt( self.maintable.getColumnIndex("NAME_REF"), textslot) row.setColumnUInt( self.maintable.getColumnIndex("OBJ_TYPE"), f.getObjtypeIndex(self)) cellelementrefs = f.getCellElementRefs() if len(cellelementrefs) == 1: row.setColumnUInt( self.maintable.getColumnIndex("CELL_NUM"), cellelementrefs[0][0]) row.setColumnUInt( self.maintable.getColumnIndex("N_IN_C"), cellelementrefs[0][1] + 1) else: row.setColumnUInt( self.maintable.getColumnIndex("CELL_NUM"), 0x80000000 | (addrow + 1)) row.setColumnUInt( self.maintable.getColumnIndex("N_IN_C"), len(cellelementrefs)) for cref in cellelementrefs: rowrc = Row(self.addtable) rowrc.setColumnUInt( self.addtable.getColumnIndex("CELL_NUM"), cref[0]) rowrc.setColumnUInt( self.addtable.getColumnIndex("N_IN_C"), cref[1] + 1) self.addtable.writeRow(rowrc) addrow += 1 self.maintable.writeRow(row) self.isopen = False
def close(self): if self.isopen: if self.mode in ['w','a']: self.maintable.setMode('w') self.addtable.setMode('w') self.auxtable.setMode('w') aux = AuxTableManager(self.auxtable) # Write features to database addrow = 0 for f in self.xfeatures: textslot = aux.appendText(f.name, self.maintable.getRowCount()+1) # Update cell elements for ref, e in zip(f.cellelementrefs, f.getCellElements(self.map)): e.textslot = textslot layer = self.map.getLayerByIndex(f.layerindex) layer.updateCellElement(ref, e) row = Row(self.maintable) row.setColumnUInt(self.maintable.getColumnIndex("NAME_REF"), textslot) row.setColumnUInt(self.maintable.getColumnIndex("OBJ_TYPE"), f.getObjtypeIndex(self)) cellelementrefs = f.getCellElementRefs() if len(cellelementrefs) == 1: row.setColumnUInt(self.maintable.getColumnIndex("CELL_NUM"), cellelementrefs[0][0]) row.setColumnUInt(self.maintable.getColumnIndex("N_IN_C"), cellelementrefs[0][1]+1) else: row.setColumnUInt(self.maintable.getColumnIndex("CELL_NUM"), 0x80000000|(addrow+1) ) row.setColumnUInt(self.maintable.getColumnIndex("N_IN_C"), len(cellelementrefs)) for cref in cellelementrefs: rowrc = Row(self.addtable) rowrc.setColumnUInt(self.addtable.getColumnIndex("CELL_NUM"), cref[0]) rowrc.setColumnUInt(self.addtable.getColumnIndex("N_IN_C"), cref[1]+1) self.addtable.writeRow(rowrc) addrow+=1 self.maintable.writeRow(row) self.isopen = False
def close(self): if self.mode in ['w','a']: self.maintable.clear() self.auxtable.clear() aux = AuxTableManager(self.auxtable, endchar=chr(7), searchindex=False) # sort categories, note that this will create new category ids # and the features have to be updated if self.sortcategories: cattrans, subcattrans = self.catman.sortCategories() # translate categories for f in self.features: oldcatid = f.getCategoryId() oldsubcatid = f.getSubCategoryId() f.setCategoryId(cattrans[oldcatid]) f.setSubCategoryId(subcattrans[(oldcatid, oldsubcatid)]) # Sort features on ids self.features.sort(lambda x,y: cmp((x.getCategoryId(), x.getSubCategoryId(), x.name.upper()), (y.getCategoryId(), y.getSubCategoryId(), y.name.upper()))) # Clear category statistics for cat in self.catman.getCategories(): cat.clearStatistics() for subcat in cat.getSubCategories(): subcat.clearStatistics() # Write features to database slot = 1 for f in self.features: # Update category statistics cat=self.catman.getCategory(f.getCategoryId()) subcat=cat.getSubCategory(f.getSubCategoryId()) cat.updateFromPOI(slot,f.getAux()[0]) subcat.updateFromPOI(slot,f.getAux()[0]) textslot = aux.appendText('\t'.join(f.getAux())+'\t') # Update cell elements for ref, e in zip(f.cellelementrefs, f.getCellElements(self.map)): e.textslot = textslot e.setCategoryId(f.getCategoryId()) e.setSubCategoryId(f.getSubCategoryId()) layer = self.map.getPOILayers()[0] layer.updateCellElement(ref, e) row = Row(self.maintable) row.setColumnUInt(self.maintable.getColumnIndex("TEXT_SLOT"), textslot) row.setColumnUInt(self.maintable.getColumnIndex("CATG_ID"), f.getCategoryId()) row.setColumnUInt(self.maintable.getColumnIndex("SUBCAT_ID"), f.getSubCategoryId()) cellelementrefs = f.getCellElementRefs() row.setColumnUInt(self.maintable.getColumnIndex("CELL_NUMBER"), cellelementrefs[0][0]) row.setColumnUInt(self.maintable.getColumnIndex("NUMBER_IN_CELL"), cellelementrefs[0][1]+1) self.maintable.writeRow(row) slot+=1 self.catman.close()
def close(self): if self.mode in ['w', 'a']: self.maintable.clear() self.auxtable.clear() aux = AuxTableManager(self.auxtable, endchar=chr(7), searchindex=False) # sort categories, note that this will create new category ids # and the features have to be updated if self.sortcategories: cattrans, subcattrans = self.catman.sortCategories() # translate categories for f in self.features: oldcatid = f.getCategoryId() oldsubcatid = f.getSubCategoryId() f.setCategoryId(cattrans[oldcatid]) f.setSubCategoryId(subcattrans[(oldcatid, oldsubcatid)]) # Sort features on ids self.features.sort(lambda x, y: cmp( (x.getCategoryId(), x.getSubCategoryId(), x.name.upper()), (y.getCategoryId(), y.getSubCategoryId(), y.name.upper()))) # Clear category statistics for cat in self.catman.getCategories(): cat.clearStatistics() for subcat in cat.getSubCategories(): subcat.clearStatistics() # Write features to database slot = 1 for f in self.features: # Update category statistics cat = self.catman.getCategory(f.getCategoryId()) subcat = cat.getSubCategory(f.getSubCategoryId()) cat.updateFromPOI(slot, f.getAux()[0]) subcat.updateFromPOI(slot, f.getAux()[0]) textslot = aux.appendText('\t'.join(f.getAux()) + '\t') # Update cell elements for ref, e in zip(f.cellelementrefs, f.getCellElements(self.map)): e.textslot = textslot e.setCategoryId(f.getCategoryId()) e.setSubCategoryId(f.getSubCategoryId()) layer = self.map.getPOILayers()[0] layer.updateCellElement(ref, e) row = Row(self.maintable) row.setColumnUInt(self.maintable.getColumnIndex("TEXT_SLOT"), textslot) row.setColumnUInt(self.maintable.getColumnIndex("CATG_ID"), f.getCategoryId()) row.setColumnUInt(self.maintable.getColumnIndex("SUBCAT_ID"), f.getSubCategoryId()) cellelementrefs = f.getCellElementRefs() row.setColumnUInt(self.maintable.getColumnIndex("CELL_NUMBER"), cellelementrefs[0][0]) row.setColumnUInt( self.maintable.getColumnIndex("NUMBER_IN_CELL"), cellelementrefs[0][1] + 1) self.maintable.writeRow(row) slot += 1 self.catman.close()