public TopoCollection(string type, TopoObject[] geometries) : base(type) { if (geometries == null) throw new ArgumentNullException("geometries"); _geometries = geometries; }
public FeatureCollection Create(TopoObject data) { if (data == null) throw new ArgumentNullException("data"); string type = data.Type; if (String.IsNullOrEmpty(type)) throw new ArgumentException("type undefined", "data"); if (String.Equals("GeometryCollection", type)) { // a TopoJSON "GeometryCollection" actually is an IFeature array // so we handle this stuff as a special case TopoCollection coll = (TopoCollection)data; return CreateCollection(coll.Geometries); } IGeometry geometry; switch (type) { case "Point": TopoPoint point = (TopoPoint)data; geometry = CreatePoint(point.Coordinates); break; case "MultiPoint": TopoMultiPoint mpoint = (TopoMultiPoint)data; geometry = CreateMultiPoint(mpoint.Coordinates); break; case "LineString": TopoLineString lstring = (TopoLineString)data; geometry = CreateLineString(lstring.Arcs); break; case "MultiLineString": TopoMultiLineString mlstring = (TopoMultiLineString)data; geometry = CreateMultiLineString(mlstring.Arcs); break; case "Polygon": TopoPolygon poly = (TopoPolygon)data; geometry = CreatePolygon(poly.Arcs); break; case "MultiPolygon": TopoMultiPolygon mpoly = (TopoMultiPolygon)data; geometry = CreateMultiPolygon(mpoly.Arcs); break; default: string s = string.Format("type unsupported: {0}", type); throw new NotSupportedException(s); } IAttributesTable properties = data.Properties; Feature feature = new Feature(geometry, properties); Collection<IFeature> collection = new Collection<IFeature> { feature }; return new FeatureCollection(collection); }
public TopoBuilder(string type, long id, IAttributesTable properties, double[][] coordinates, int[][][] arcs, TopoObject[] geometries) { if (String.IsNullOrEmpty(type)) throw new ArgumentNullException("type", "type null"); _type = type; _id = id; _properties = properties ?? new AttributesTable(); _coordinates = coordinates; _arcs = arcs; _geometries = geometries; }
private FeatureCollection CreateCollection(TopoObject[] data) { IFeature[] features = new IFeature[data.Length]; for (int i = 0; i < data.Length; i++) { TopoObject component = data[i]; FeatureCollection coll = Create(component); features[i] = coll[0]; } FeatureCollection collection = new FeatureCollection(); foreach (IFeature feature in features) collection.Add(feature); return collection; }