C# GIS库 NetTopologySuite 的使用
发布时间:2020-12-15 19:51:55 所属栏目:百科 来源:网络整理
导读:将ShapeFile 读取为 FeatureCollection: public bool ShpToFeatureCollection1(string filename,out FeatureCollection collection) { collection = null; try { var featureCollection = new CollectionDotSpatial.NetTopologySuite.Features.IFeature(); i
将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; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |