/// <summary> /// Converts an object into its XML representation. /// </summary> /// <param name="writer">The <see cref="T:System.Xml.XmlWriter"/> stream to which the object is serialized.</param> 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.GML_XML_PREFIX, "Ellipsoid", Xml.GML_XML_NAMESPACE); writer.WriteElementString(Xml.GML_XML_PREFIX, "ellipsoidName", Xml.GML_XML_NAMESPACE, _name); writer.WriteStartElement(Xml.GML_XML_PREFIX, "ellipsoidID", Xml.GML_XML_NAMESPACE); writer.WriteString(_epsgNumber.ToString()); writer.WriteEndElement(); writer.WriteStartElement(Xml.GML_XML_PREFIX, "semiMajorAxis", Xml.GML_XML_NAMESPACE); writer.WriteString(SemiMajorAxis.ToMeters().Value.ToString("G17")); writer.WriteEndElement(); writer.WriteStartElement(Xml.GML_XML_PREFIX, "semiMinorAxis", Xml.GML_XML_NAMESPACE); writer.WriteString(SemiMinorAxis.ToMeters().Value.ToString("G17")); writer.WriteEndElement(); writer.WriteStartElement(Xml.GML_XML_PREFIX, "secondDefiningParameter", Xml.GML_XML_NAMESPACE); writer.WriteElementString(Xml.GML_XML_PREFIX, "inverseFlattening", Xml.GML_XML_NAMESPACE, InverseFlattening.ToString("G17")); writer.WriteEndElement(); writer.WriteEndElement(); SanityCheck(); Calculate(); }
/// <summary> /// 返回哈希代码。 /// </summary> /// <returns></returns> public override int GetHashCode() { return(SemiMajorAxis.GetHashCode() * 13 + SemiMinorAxis.GetHashCode() * 5); }