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

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. using SharpMap.Geometries;
  20. namespace SharpMap.Layers
  21. {
  22. /// <summary>
  23. /// Abstract class for common layer properties
  24. /// Implement this class instead of the ILayer interface to save a lot of common code.
  25. /// </summary>
  26. public abstract class Layer : ILayer, ICloneable
  27. {
  28. #region Events
  29. /// <summary>
  30. /// EventHandler for event fired when the layer has been rendered
  31. /// </summary>
  32. /// <param name="layer">Layer rendered</param>
  33. /// <param name="g">Reference to graphics object used for rendering</param>
  34. public delegate void LayerRenderedEventHandler(SharpMap.Layers.Layer layer, System.Drawing.Graphics g);
  35. /// <summary>
  36. /// Event fired when the layer has been rendered
  37. /// </summary>
  38. public event LayerRenderedEventHandler LayerRendered;
  39. #endregion
  40. /// <summary>
  41. /// Returns the name of the layer.
  42. /// </summary>
  43. /// <returns></returns>
  44. public override string ToString()
  45. {
  46. return this.LayerName;
  47. }
  48. private SharpMap.CoordinateSystems.Transformations.ICoordinateTransformation _CoordinateTransform;
  49. /// <summary>
  50. /// Gets or sets the <see cref="SharpMap.CoordinateSystems.Transformations.ICoordinateTransformation"/> applied 
  51. /// to this vectorlayer prior to rendering
  52. /// </summary>
  53. public virtual SharpMap.CoordinateSystems.Transformations.ICoordinateTransformation CoordinateTransformation
  54. {
  55. get { return _CoordinateTransform; }
  56. set { _CoordinateTransform = value; }
  57. }
  58. #region ILayer Members
  59. private string _LayerName;
  60. /// <summary>
  61. /// Gets or sets the name of the layer
  62. /// </summary>
  63. public string LayerName
  64. {
  65. get { return _LayerName; }
  66. set { _LayerName = value; }
  67. }
  68. private int _SRID = -1;
  69. /// <summary>
  70. /// The spatial reference ID (CRS)
  71. /// </summary>
  72. public virtual int SRID
  73. {
  74. get { return _SRID; }
  75. set { _SRID = value; }
  76. }
  77. //public abstract SharpMap.CoordinateSystems.CoordinateSystem CoordinateSystem { get; set; }
  78. /// <summary>
  79. /// Renders the layer
  80. /// </summary>
  81. /// <param name="g">Graphics object reference</param>
  82. /// <param name="map">Map which is rendered</param>
  83. public virtual void Render(System.Drawing.Graphics g, Map map)
  84. {
  85. if(LayerRendered!=null) LayerRendered(this, g); //Fire event
  86. }
  87. /// <summary>
  88. /// Returns the extent of the layer
  89. /// </summary>
  90. /// <returns>Bounding box corresponding to the extent of the features in the layer</returns>
  91. public abstract SharpMap.Geometries.BoundingBox Envelope { get; }
  92. #region Properties
  93. private double _MinVisible = 0;
  94. /// <summary>
  95. /// Minimum visibility zoom, including this value
  96. /// </summary>
  97. public double MinVisible
  98. {
  99. get { return _MinVisible; }
  100. set { _MinVisible = value; }
  101. }
  102. private double _MaxVisible = double.MaxValue;
  103. /// <summary>
  104. /// Maximum visibility zoom, excluding this value
  105. /// </summary>
  106. public double MaxVisible
  107. {
  108. get { return _MaxVisible; }
  109. set { _MaxVisible = value; }
  110. }
  111. private bool _Enabled = true;
  112. /// <summary>
  113. /// Specified whether the layer is rendered or not
  114. /// </summary>
  115. public bool Enabled
  116. {
  117. get { return _Enabled; }
  118. set { _Enabled = value; }
  119. }
  120. #endregion
  121. #endregion
  122. #region ICloneable Members
  123. /// <summary>
  124. /// Clones the layer
  125. /// </summary>
  126. /// <returns>cloned object</returns>
  127. public abstract object Clone();
  128. #endregion
  129. }
  130. }