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")
예제 #2
0
    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")