コード例 #1
0
    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
コード例 #2
0
    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            
コード例 #3
0
ファイル: POI.py プロジェクト: codingforfun/pymagellan
    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()
コード例 #4
0
ファイル: POI.py プロジェクト: codingforfun/pymagellan
    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()