Exemplo n.º 1
0
        ///<summary>
        ///  Returns the boundary, or the empty geometry if this Geometry  is empty.
        ///</summary>
        ///<remarks>For a discussion
        ///  of this function, see the OpenGIS Simple Features Specification. As stated in SFS
        ///  Section 2.1.13.1, "the boundary  of a Geometry is a set of Geometries of the next lower dimension."</remarks>
        ///<returns>Returns the closure of the combinatorial boundary of this Geometry</returns>
        public override Geometry GetBoundary()
        {
            if (IsEmpty())
            {
                return(_geometryFactory.CreateGeometryCollection(null));
            }
            //LineString[] allRings =  new LineString[_geometries.Length];
            ArrayList allRings = new ArrayList();

            for (int i = 0; i < _geometries.Length; i++)
            {
                Polygon            polygon = (Polygon)_geometries[i];
                GeometryCollection rings   = (GeometryCollection)polygon.GetBoundary();
                for (int j = 0; j < rings.GetNumGeometries(); j++)
                {
                    //allRings[j] = rings[j-i] as LineString;
                    allRings.Add(rings.GetGeometryN(j));
                }
            }
            return(_geometryFactory.CreateMultiLineString(GeometryFactory.ToLineStringArray(allRings)));
        }
Exemplo n.º 2
0
		/// <summary>
		/// Converts a GeometryCollection to &lt;GeometryCollection Text &gt; format, then Appends it to the writer.
		/// </summary>
		/// <param name="geometryCollection">The GeometryCollection to process.</param>
		/// <param name="writer">The output stream writer to Append to.</param>
		protected void AppendGeometryCollectionText(GeometryCollection geometryCollection, TextWriter writer)
		{	
			if (geometryCollection.IsEmpty()) 
			{
			}
			else 
			{
				for (int i = 0; i < geometryCollection.GetNumGeometries(); i++) 
				{
					AppendGeometryTaggedText(geometryCollection.GetGeometryN(i),  writer);
				}
			}			
		}
Exemplo n.º 3
0
		/// <summary>
		/// Converts a GeometryCollection to &lt;GeometryCollection Text &gt; format, then Appends it to the writer.
		/// </summary>
		/// <param name="geometryCollection">The GeometryCollection to process.</param>
		/// <param name="level"></param>
		/// <param name="writer">The output stream writer to Append to.</param>
		protected void AppendGeometryCollectionText(GeometryCollection geometryCollection, int level,
													StringWriter writer)
		{
			
			if ( geometryCollection.IsEmpty() ) 
			{
				writer.Write("EMPTY");
			}
			else 
			{
				int level2 = level;
				writer.Write("(");
				for (int i = 0; i < geometryCollection.GetNumGeometries(); i++) 
				{
					if (i > 0) 
					{
						writer.Write(", ");
						level2 = level + 1;
					}
					//AppendGeometryTaggedText(geometryCollection.GetGeometryN(i), level2, writer);
					AppendGeometryTaggedText(geometryCollection.GetGeometryN(i), level2, writer);
				}
				writer.Write(")");
			}
			
		}
		private bool HasRepeatedPoint(GeometryCollection gc)
		{	
			for (int i = 0; i < gc.GetNumGeometries(); i++) 
			{

				Geometry g = (Geometry)gc.GetGeometryN(i);
				if (HasRepeatedPoint(g)) return true;
			}
			return false;
		}
Exemplo n.º 5
0
		private void AddCollection(GeometryCollection gc)
		{
			
			for (int i = 0; i < gc.GetNumGeometries(); i++) 
			{
				Geometry g = (Geometry)gc.GetGeometryN(i);
				Add(g);
			}
			
		}
Exemplo n.º 6
0
		private void CheckValid(GeometryCollection gc)
		{
			for (int i = 0; i < gc.GetNumGeometries(); i++) 
			{
				Geometry g = gc.GetGeometryN(i);
				CheckValid(g);
				if (_validErr != null) return;
			}
		}