/// <summary>
 /// Converts the specified GeoJSON <paramref name="geometry"/> into an instance of <see cref="IGeometry"/>.
 /// </summary>
 /// <param name="geometry">The GeoJSON geometry to be converted.</param>
 /// <returns>An instance of <see cref="IGeometry"/>.</returns>
 public static IGeometry Convert(IGeoJsonGeometry geometry)
 {
     if (geometry == null)
     {
         throw new ArgumentNullException(nameof(geometry));
     }
     return(geometry.ToGeometry());
 }
 public static GeoJsonFeatureSet AsFeatureSet(this IGeoJsonGeometry geometry)
 {
     return(new GeoJsonFeatureSet()
     {
         Features = new List <GeoJsonFeature>()
         {
             geometry.AsFeature()
         }, TotalFeatures = 1
     });
 }
 public static GeoJsonFeature Create(IGeoJsonGeometry geometry, Dictionary <string, object> attributes = null)
 {
     return(new GeoJsonFeature()
     {
         Geometry = geometry,
         Geometry_name = string.Empty,
         Id = "0",
         Properties = attributes ?? new Dictionary <string, object>(),
     });
 }
예제 #4
0
        //public static ShapefileFormat.EsriType.IShape ParseToSqlGeometry(this IGeoJsonGeometry geometry, bool isLongitudeFirst = true, int srid = 0)
        //{

        //}

        #region SqlGeometry

        public static SqlGeometry AsSqlGeometry(this IGeoJsonGeometry geometry, bool isLongitudeFirst = true, int srid = 0)
        {
            var type = geometry.GeometryType;

            if (geometry.IsNullOrEmpty())
            {
                return(SqlSpatialHelper.CreateEmptySqlGeometry(type, srid));
            }

            SqlGeometryBuilder builder = new SqlGeometryBuilder();

            builder.SetSrid(srid);

            switch (type)
            {
            case GeometryType.Point:
                AddPoint(builder, (GeoJsonPoint)geometry, isLongitudeFirst);
                break;

            case GeometryType.MultiPoint:
                AddMultiPoint(builder, (GeoJsonMultiPoint)geometry, isLongitudeFirst);
                break;

            case GeometryType.LineString:
                AddLineString(builder, (GeoJsonLineString)geometry, isLongitudeFirst);
                break;

            case GeometryType.MultiLineString:
                AddMultiLineString(builder, (GeoJsonMultiLineString)geometry, isLongitudeFirst);
                break;

            case GeometryType.MultiPolygon:
                AddMultiPolygon(builder, (GeoJsonMultiPolygon)geometry, isLongitudeFirst);
                break;

            case GeometryType.Polygon:
                AddPolygon(builder, (GeoJsonPolygon)geometry, isLongitudeFirst);
                break;


            case GeometryType.GeometryCollection:
            case GeometryType.CircularString:
            case GeometryType.CompoundCurve:
            case GeometryType.CurvePolygon:
            default:
                throw new NotImplementedException();
            }

            return(builder.ConstructedGeometry.MakeValid());
        }
        public static IEsriShape AsEsriShape(this IGeoJsonGeometry geometry, bool isLongitudeFirst = true, int srid = 0, Func <IPoint, IPoint> mapFunction = null)
        {
            //var type = geometry.GeometryType;
            //if (geometry.IsNullOrEmpty())
            //{
            //    return SqlSpatialHelper.CreateEmptySqlGeometry(type, srid);
            //}

            if (geometry.IsNullOrEmpty())
            {
                return(null);
            }

            var type = geometry.GeometryType;

            switch (type)
            {
            case GeometryType.GeometryCollection:
            case GeometryType.CircularString:
            case GeometryType.CompoundCurve:
            case GeometryType.CurvePolygon:
            default:
                throw new NotImplementedException();

            case GeometryType.Point:
                return(ToEsriPoint((GeoJsonPoint)geometry, isLongitudeFirst, srid, mapFunction));

            case GeometryType.MultiPoint:
                return(ToEsriMultiPoint((GeoJsonMultiPoint)geometry, isLongitudeFirst, srid, mapFunction));

            case GeometryType.LineString:
                return(ToEsriPolyline((GeoJsonLineString)geometry, isLongitudeFirst, srid, mapFunction));

            case GeometryType.MultiLineString:
                return(ToEsriPolyline((GeoJsonMultiLineString)geometry, isLongitudeFirst, srid, mapFunction));

            case GeometryType.Polygon:
                return(ToEsriPolygon((GeoJsonPolygon)geometry, isLongitudeFirst, srid, mapFunction));

            case GeometryType.MultiPolygon:
                return(ToEsriPolygon((GeoJsonMultiPolygon)geometry, isLongitudeFirst, srid, mapFunction));
            }
        }
 public static GeoJsonFeature AsFeature(this IGeoJsonGeometry geometry)
 {
     return(GeoJsonFeature.Create(geometry));
 }
예제 #7
0
        internal static string Serialize(IGeoJsonGeometry geoJson, bool indented, bool removeSpaces = false)
        {
            var result = JsonConvert.SerializeObject(geoJson, indented ? Formatting.Indented : Formatting.None);

            return(removeSpaces ? result.Replace(" ", string.Empty) : result);
        }
예제 #8
0
 public string Write(IGeoJsonGeometry geometry)
 {
     return(SimpleJson.SerializeObject(WriteGeometry(geometry)));
 }
예제 #9
0
 public string Write(IGeoJsonGeometry geometry)
 {
     return SimpleJson.SerializeObject(WriteGeometry(geometry));
 }
예제 #10
0
파일: Feature.cs 프로젝트: spadger/Geo
 public Feature(IGeoJsonGeometry geometry, Dictionary<string, object> properties = null)
 {
     Geometry = geometry;
     Properties = properties ?? new Dictionary<string, object>();
 }
예제 #11
0
 public Feature(IGeoJsonGeometry geometry, Dictionary <string, object> properties = null)
 {
     Geometry   = geometry;
     Properties = properties ?? new Dictionary <string, object>();
 }