コード例 #1
0
    def create(dom_document):
        """
        Create an instance of the 'SpatialFieldsConfiguration' object from a DOM document.
        Returns None if the dom_document is invalid.
        """
        from stdm.ui.composer import SpatialFieldMapping

        dataSourceElem = dom_document.documentElement().firstChildElement(
            "DataSource")

        if dataSourceElem == None:
            return None

        spatialFieldsConfigElement = dataSourceElem.firstChildElement(
            "SpatialFields")
        spFieldsConfig = SpatialFieldsConfiguration()

        #Get spatial field mappings
        spatialFieldMappingList = spatialFieldsConfigElement.elementsByTagName(
            "SpatialField")
        numItems = spatialFieldMappingList.length()

        for i in range(numItems):
            spatialFieldMappingElement = spatialFieldMappingList.item(
                i).toElement()
            labelField = spatialFieldMappingElement.attribute("labelField")
            spatialField = spatialFieldMappingElement.attribute("name")
            itemId = spatialFieldMappingElement.attribute("itemid")
            srid = int(spatialFieldMappingElement.attribute("srid"))
            geomType = spatialFieldMappingElement.attribute("geomType")
            zoom = float(spatialFieldMappingElement.attribute("zoom"))
            zoom_type = spatialFieldMappingElement.attribute(
                'zoomType', 'RELATIVE')

            #Create spatial field mapping
            spFieldMapping = SpatialFieldMapping(spatialField, labelField)
            spFieldMapping.setItemId(itemId)
            spFieldMapping.setSRID(srid)
            spFieldMapping.setGeometryType(geomType)
            spFieldMapping.setZoomLevel(zoom)
            spFieldMapping.zoom_type = zoom_type

            symbolElement = spatialFieldMappingElement.firstChildElement(
                "Symbol")
            if not symbolElement is None:
                layerType = symbolElement.attribute("layerType")
                layerProps = QgsSymbolLayerV2Utils.parseProperties(
                    symbolElement)
                symbolLayer = QgsSymbolLayerV2Registry.instance(
                ).createSymbolLayer(layerType, layerProps)
                spFieldMapping.setSymbolLayer(symbolLayer)

            spFieldsConfig.addSpatialFieldMapping(spFieldMapping)

        return spFieldsConfig
コード例 #2
0
ファイル: spatial_fields_config.py プロジェクト: gltn/stdm
    def create(dom_document):
        """
        Create an instance of the 'SpatialFieldsConfiguration' object from a DOM document.
        Returns None if the dom_document is invalid.
        """
        from stdm.ui.composer import SpatialFieldMapping
        
        dataSourceElem = dom_document.documentElement().firstChildElement("DataSource")
        
        if dataSourceElem == None:
            return None
        
        spatialFieldsConfigElement = dataSourceElem.firstChildElement("SpatialFields") 
        spFieldsConfig = SpatialFieldsConfiguration()
        
        #Get spatial field mappings
        spatialFieldMappingList = spatialFieldsConfigElement.elementsByTagName("SpatialField")
        numItems = spatialFieldMappingList.length()
        
        for i in range(numItems):
            spatialFieldMappingElement = spatialFieldMappingList.item(i).toElement()
            labelField = spatialFieldMappingElement.attribute("labelField")
            spatialField = spatialFieldMappingElement.attribute("name")
            itemId = spatialFieldMappingElement.attribute("itemid") 
            srid = int(spatialFieldMappingElement.attribute("srid"))
            geomType = spatialFieldMappingElement.attribute("geomType") 
            zoom = float(spatialFieldMappingElement.attribute("zoom"))
            zoom_type = spatialFieldMappingElement.attribute('zoomType', 'RELATIVE')
            
            #Create spatial field mapping
            spFieldMapping = SpatialFieldMapping(spatialField,labelField) 
            spFieldMapping.setItemId(itemId)
            spFieldMapping.setSRID(srid)
            spFieldMapping.setGeometryType(geomType)
            spFieldMapping.setZoomLevel(zoom)
            spFieldMapping.zoom_type = zoom_type

            symbolElement = spatialFieldMappingElement.firstChildElement("Symbol")
            if not symbolElement is None:
                layerType = symbolElement.attribute("layerType")
                layerProps = QgsSymbolLayerV2Utils.parseProperties(symbolElement)
                symbolLayer =  QgsSymbolLayerV2Registry.instance().createSymbolLayer(layerType,layerProps)
                spFieldMapping.setSymbolLayer(symbolLayer)
            
            spFieldsConfig.addSpatialFieldMapping(spFieldMapping)
            
        return spFieldsConfig