public override void Visit(GeoWalkContext<LineString> ls)
 {
     // Line strings are used as items in polygons, but in an isolated context
     // they also neeed to be introduced with BeginGeography
     if (!ls.HasParentCorrespondingTo<Polygon>())
         _bld.BeginGeography(OpenGisGeographyType.LineString);
     AddAsBeginFigure(ls.Item.Coordinates[0]);
     foreach (var position in ls.Item.Coordinates.Skip(1))
     {
         AddAsLine(position);
     }
     _bld.EndFigure();
     if (!ls.HasParentCorrespondingTo<Polygon>())
         _bld.EndGeography();
 }
 public override void Visit(GeoWalkContext<FeatureCollection> fcl)
 {
     _bld.BeginGeography(OpenGisGeographyType.GeometryCollection);
     fcl.SetExitActivity(() => _bld.EndGeography());
 }
 public override void Visit(GeoWalkContext<Polygon> pl)
 {
     _bld.BeginGeography(OpenGisGeographyType.Polygon);
     pl.SetExitActivity(() => _bld.EndGeography());
 }
 public override void Visit(GeoWalkContext<MultiPoint> mp)
 {
     _bld.BeginGeography(OpenGisGeographyType.MultiPoint);
     mp.SetExitActivity(() => _bld.EndGeography());
 }
 public override void Visit(GeoWalkContext<Feature> f)
 {
     var feature = f.Item;
     if (FeatureRepresentsCircle(feature))
     {
         var coords = (GeographicPosition)((Point) feature.Geometry).Coordinates;
         var p = SqlGeography.Point(coords.Latitude, coords.Longitude, GeoToSql.ReferenceId);
         var radius = Convert.ToDouble(feature.Properties["radius"]);
         var circle = p.BufferWithCurves(radius);
         _pendingCircles.Add(circle);
     }
 }
 public override void Visit(GeoWalkContext<MultiLineString> mls)
 {
     _bld.BeginGeography(OpenGisGeographyType.MultiLineString);
     mls.SetExitActivity(() => _bld.EndGeography());
 }
 public override void Visit(GeoWalkContext<Point> p)
 {
     if (p.HasParentCorrespondingTo<Feature>() && FeatureRepresentsCircle((Feature) p.Parent.Item))
         return;
     _bld.BeginGeography(OpenGisGeographyType.Point);
     PointFigure(p.Item);
     _bld.EndGeography();
 }
 public void Visit(GeoWalkContext <Feature> f)
 {
     _visitedObjects.Add(f);
 }
 public void Visit(GeoWalkContext <FeatureCollection> fcl)
 {
     _visitedObjects.Add(fcl);
 }
 void IGeoJsonObjectVisitor.Visit(GeoWalkContext <MultiPolygon> mpl)
 {
     _visitedObjects.Add(mpl);
 }
 void IGeoJsonObjectVisitor.Visit(GeoWalkContext <GeometryCollection> gcl)
 {
     _visitedObjects.Add(gcl);
 }
 void IGeoJsonObjectVisitor.Visit(GeoWalkContext <Polygon> pl)
 {
     _visitedObjects.Add(pl);
 }
 void IGeoJsonObjectVisitor.Visit(GeoWalkContext <MultiLineString> mls)
 {
     _visitedObjects.Add(mls);
 }
 void IGeoJsonObjectVisitor.Visit(GeoWalkContext <LineString> ls)
 {
     _visitedObjects.Add(ls);
 }
 void IGeoJsonObjectVisitor.Visit(GeoWalkContext <MultiPoint> mp)
 {
     _visitedObjects.Add(mp);
 }
 void IGeoJsonObjectVisitor.Visit(GeoWalkContext <Point> p)
 {
     _visitedObjects.Add(p);
 }