def generateFeature (self): featureMember = Element('gml:featureMember') feature = SubElement(featureMember, 'ogr:' + self.featuretag) # set the fid. for node in self.nodes: if node['name'] == 'fid': feature.attrib['fid'] = node['text'].strip() # generate the id node. SubElement(feature, "ogr:id").text = self.featureid # generate the child nodes. for node in self.nodes: newElement = SubElement(feature, 'ogr:' + node['name']) newElement.text = node['text'].strip() if node['type'] in {'gml:CurvePropertyType', 'gml:DiscreteCoverageType', 'gml:PointPropertyType', 'gml:SurfacePropertyType'}: geomElement = SubElement(newElement, 'ogr:geometryProperty') geomElement.text = node['text'].strip() for n in node['node']: self.rebuildElement(geomElement, n) # set the 'srsName' in child node. iter = geomElement.iter("*") gmlElement = next(islice(iter, 1, None), None) gmlElement.attrib['srsName'] = 'EPSG:4612' elif node['type'] == 'gml:TimeInstantType': lastElement = deque(node['node'], maxlen=1).pop() newElement.text = lastElement['text'].strip() ElementTree(featureMember).write(self.fh, 'utf-8') self.fh.write("\n")
def generateFeature(self): featureMember = Element('gml:featureMember') feature = SubElement(featureMember, 'ogr:' + self.featuretag) # set the fid. for node in self.nodes: if node['name'] == 'fid': feature.attrib['fid'] = node['text'].strip() # generate the id node. SubElement(feature, "ogr:id").text = self.featureid # generate the child nodes. for node in self.nodes: newElement = SubElement(feature, 'ogr:' + node['name']) newElement.text = node['text'].strip() if node['type'] in { 'gml:CurvePropertyType', 'gml:DiscreteCoverageType', 'gml:PointPropertyType', 'gml:SurfacePropertyType' }: geomElement = SubElement(newElement, 'ogr:geometryProperty') geomElement.text = node['text'].strip() for n in node['node']: self.rebuildElement(geomElement, n) # set the 'srsName' in child node. iter = geomElement.iter("*") gmlElement = next(islice(iter, 1, None), None) gmlElement.attrib['srsName'] = 'EPSG:4612' elif node['type'] == 'gml:TimeInstantType': lastElement = deque(node['node'], maxlen=1).pop() newElement.text = lastElement['text'].strip() ElementTree(featureMember).write(self.fh, 'utf-8') self.fh.write("\n")