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
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