将ShapeFile 读取为 FeatureCollection:
public bool ShpToFeatureCollection1(string filename,out FeatureCollection collection) { collection = null; try { var featureCollection = new Collection<DotSpatial.NetTopologySuite.Features.IFeature>(); if (!File.Exists(filename + ".dbf")) { return false; } var streamreader = new ShapefileStreamProviderRegistry(filename); var dataReader = new ShapefileDataReader(streamreader,new GeometryFactory(new PrecisionModel())); while (dataReader.Read()) { var feature = new DotSpatial.NetTopologySuite.Features.Feature { Geometry = dataReader.Geometry }; int length = dataReader.DbaseHeader.NumFields; string[] keys = new string[length]; for (int i = 0; i < length; i++) keys[i] = dataReader.DbaseHeader.Fields[i].Name; feature.Attributes = new AttributesTable(); for (int i = 0; i < length; i++) { object val = dataReader.GetValue(i + 1); feature.Attributes.AddAttribute(keys[i],val); } featureCollection.Add(feature); } dataReader.Close(); dataReader.dispose(); if (featureCollection.Count == 0) { return false; } collection = new FeatureCollection(featureCollection); } catch(Exception ex) { return false; } return true; }
FeatureCollection 转为 GeoJson:
private bool ConvertFeatureCollection(FeatureCollection value,out StringBuilder stringBuilder) { FeatureCollectionConverter target = new FeatureCollectionConverter(); stringBuilder = new StringBuilder(); JsonTextWriter writer = new JsonTextWriter(new StringWriter(stringBuilder)); JsonSerializer serializer = DotSpatial.NetTopologySuite.IO.GeoJsonSerializer.Create(new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore },GeometryFactory.Default); target.WriteJson(writer,value,serializer); writer.Flush(); writer.Close(); if (stringBuilder.Length == 0) { return false; } return true; }
Geojson 转为 FeatureCollection:
public bool ReadGeojson(string geojson,string fileName) { bool bResult = true; try { do { DotSpatial.NetTopologySuite.IO.GeoJsonReader reader = new DotSpatial.NetTopologySuite.IO.GeoJsonReader(); FeatureCollection result = reader.Read<FeatureCollection>(geojson); if (result == null) { bResult = false; break; } ShapefileWriter.WriteFeatureCollection(fileName,result); } while (false); } catch(Exception ex) { bResult = false; } return bResult; }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。