ICoordinateSystemAuthorityFactory.cs
上传用户:sex100000
上传日期:2013-11-09
资源大小:1377k
文件大小:6k
源码类别:

GIS编程

开发平台:

C#

  1. // Copyright 2005, 2006 - Morten Nielsen (www.iter.dk)
  2. //
  3. // This file is part of SharpMap.
  4. // SharpMap is free software; you can redistribute it and/or modify
  5. // it under the terms of the GNU Lesser General Public License as published by
  6. // the Free Software Foundation; either version 2 of the License, or
  7. // (at your option) any later version.
  8. // 
  9. // SharpMap is distributed in the hope that it will be useful,
  10. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12. // GNU Lesser General Public License for more details.
  13. // You should have received a copy of the GNU Lesser General Public License
  14. // along with SharpMap; if not, write to the Free Software
  15. // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA 
  16. using System;
  17. using System.Collections.Generic;
  18. using System.Text;
  19. namespace SharpMap.CoordinateSystems
  20. {
  21. /// <summary>
  22. /// Creates spatial reference objects using codes.
  23. /// </summary>
  24. /// <remarks>
  25. ///  The codes are maintained by an external authority. A commonly used authority is EPSG, which is also used in the GeoTIFF standard and in SharpMap.
  26. /// </remarks>
  27. public interface ICoordinateSystemAuthorityFactory
  28. {
  29. /// <summary>
  30. /// Returns the authority name for this factory (e.g., "EPSG" or "POSC").
  31. /// </summary>
  32. string Authority { get; }
  33. /// <summary>
  34. /// Returns a projected coordinate system object corresponding to the given code.
  35. /// </summary>
  36. /// <param name="code">The identification code.</param>
  37. /// <returns>The projected coordinate system object with the given code.</returns>
  38. IProjectedCoordinateSystem CreateProjectedCoordinateSystem(long code);
  39. /// <summary>
  40. /// Returns a geographic coordinate system object corresponding to the given code.
  41. /// </summary>
  42. /// <param name="code">The identification code.</param>
  43. /// <returns>The geographic coordinate system object with the given code.</returns>
  44. IGeographicCoordinateSystem CreateGeographicCoordinateSystem(long code);
  45. /// <summary>
  46. /// Returns a horizontal datum object corresponding to the given code.
  47. /// </summary>
  48. /// <param name="code">The identification code.</param>
  49. /// <returns>The horizontal datum object with the given code.</returns>
  50. IHorizontalDatum CreateHorizontalDatum(long code);
  51. /// <summary>
  52. /// Returns an ellipsoid object corresponding to the given code.
  53. /// </summary>
  54. /// <param name="code">The identification code.</param>
  55. /// <returns>The ellipsoid object with the given code.</returns>
  56. IEllipsoid CreateEllipsoid(long code);
  57. /// <summary>
  58. /// Returns a prime meridian object corresponding to the given code.
  59. /// </summary>
  60. /// <param name="code">The identification code.</param>
  61. /// <returns>The prime meridian object with the given code.</returns>
  62. IPrimeMeridian CreatePrimeMeridian(long code);
  63. /// <summary>
  64. /// Returns a linear unit object corresponding to the given code.
  65. /// </summary>
  66. /// <param name="code">The identification code.</param>
  67. /// <returns>The linear unit object with the given code.</returns>
  68. ILinearUnit CreateLinearUnit(long code);
  69. /// <summary>
  70. /// Returns an <see cref="IAngularUnit">angular unit</see> object corresponding to the given code.
  71. /// </summary>
  72. /// <param name="code">The identification code.</param>
  73. /// <returns>The angular unit object for the given code.</returns>
  74. IAngularUnit CreateAngularUnit(long code);
  75. /// <summary>
  76. /// Creates a <see cref="IVerticalDatum"/> from a code.
  77. /// </summary>
  78. /// <param name="code">Authority code</param>
  79. /// <returns>Vertical datum for the given code</returns>
  80. IVerticalDatum CreateVerticalDatum(long code);
  81. /// <summary>
  82. /// Create a <see cref="IVerticalCoordinateSystem">vertical coordinate system</see> from a code.
  83. /// </summary>
  84. /// <param name="code">Authority code</param>
  85. /// <returns></returns>
  86. IVerticalCoordinateSystem CreateVerticalCoordinateSystem(long code);
  87. /// <summary>
  88. /// Creates a 3D coordinate system from a code.
  89. /// </summary>
  90. /// <param name="code">Authority code</param>
  91. /// <returns>Compound coordinate system for the given code</returns>
  92. ICompoundCoordinateSystem CreateCompoundCoordinateSystem(long code);
  93. /// <summary>
  94. /// Creates a <see cref="IHorizontalCoordinateSystem">horizontal co-ordinate system</see> from a code.
  95. /// The horizontal coordinate system could be geographic or projected.
  96. /// </summary>
  97. /// <param name="code">Authority code</param>
  98. /// <returns>Horizontal coordinate system for the given code</returns>
  99. IHorizontalCoordinateSystem CreateHorizontalCoordinateSystem(long code);
  100. /// <summary>
  101. /// Gets a description of the object corresponding to a code.
  102. /// </summary>
  103. string DescriptionText { get; }
  104. /// <summary>
  105. /// Gets the Geoid code from a WKT name.
  106. /// </summary>
  107. /// <remarks>
  108. ///  In the OGC definition of WKT horizontal datums, the geoid is referenced 
  109. /// by a quoted string, which is used as a key value. This method converts 
  110. /// the key value string into a code recognized by this authority.
  111. /// </remarks>
  112. /// <param name="wkt"></param>
  113. /// <returns></returns>
  114. string GeoidFromWktName(string wkt);
  115. /// <summary>
  116. /// Gets the WKT name of a Geoid.
  117. /// </summary>
  118. /// <remarks>
  119. ///  In the OGC definition of WKT horizontal datums, the geoid is referenced by 
  120. /// a quoted string, which is used as a key value. This method gets the OGC WKT 
  121. /// key value from a geoid code.
  122. /// </remarks>
  123. /// <param name="geoid"></param>
  124. /// <returns></returns>
  125. string WktGeoidName(string geoid);
  126. }
  127. }