public void WriteXml(XmlWriter writer) { /* The GML specification defines an ellipsoid as follows: * * <gml:Ellipsoid gml:id="ogrcrs44"> * <gml:ellipsoidName>GRS 1980</gml:ellipsoidName> * <gml:ellipsoidID> * <gml:name gml:codeSpace="urn:ogc:def:ellipsoid:EPSG::">7019</gml:name> * </gml:ellipsoidID> * <gml:semiMajorAxis gml:uom="urn:ogc:def:uom:EPSG::9001">6378137</gml:semiMajorAxis> * <gml:secondDefiningParameter> * <gml:inverseFlattening gml:uom="urn:ogc:def:uom:EPSG::9201">298.257222101</gml:inverseFlattening> * </gml:secondDefiningParameter> * </gml:Ellipsoid> * */ writer.WriteStartElement(Xml.GmlXmlPrefix, "Ellipsoid", Xml.GmlXmlNamespace); writer.WriteElementString(Xml.GmlXmlPrefix, "ellipsoidName", Xml.GmlXmlNamespace, _Name); writer.WriteStartElement(Xml.GmlXmlPrefix, "ellipsoidID", Xml.GmlXmlNamespace); writer.WriteString(_EPSGNumber.ToString()); writer.WriteEndElement(); writer.WriteStartElement(Xml.GmlXmlPrefix, "semiMajorAxis", Xml.GmlXmlNamespace); writer.WriteString(SemiMajorAxis.ToMeters().Value.ToString("G17")); writer.WriteEndElement(); writer.WriteStartElement(Xml.GmlXmlPrefix, "secondDefiningParameter", Xml.GmlXmlNamespace); writer.WriteElementString(Xml.GmlXmlPrefix, "inverseFlattening", Xml.GmlXmlNamespace, InverseFlattening.ToString("G17")); writer.WriteEndElement(); writer.WriteEndElement(); SanityCheck(); Calculate(); }