Bouyei.Geo 22.5.1 发布,地理信息多格式解析库
更新版本22.5.1:https://www.nuget.org/packages/Bouyei.Geo 优化mdb,gdb,wkt,wkb等文件解析和反解析。 增加postgis的原生byte[]打包写入到数据库。 优化multipolygon的图形椭球面积计算。 static void TestWkbFromPg() { string connstr = "Server=127.0.0.1;Port=5432;User Id=postgres;Password=123456;Database=db;"; using (IAdoProvider provider = AdoProvider.CreateProvider(connstr, FactoryType.PostgreSQL)) { var param = new Parameter("select cjdm,cjmc,ST_AsEWKB(geom) as ewkb from cn_xzq"); var tb = provider.Query(param); var rt = provider.Query<cn_xzq>(param); if (rt.IsSuccess() == false) throw new Exception(rt.Info); var items = rt.Result; foreach(var item in items) { PostGISParser parser = new PostGISParser(); var geo= parser.FromReader(item.ewkb); var arry=parser.ToWriter(geo); //验证解析和反解析是否一致 for(int i = 0; i < item.ewkb.Length;++i) { if (item.ewkb[i] != arry[i]) { throw new Exception(i.ToString()+"不匹配"); } } } } } static void TestFromEsriMdb() { string connstr = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=F:\\g.mdb;"; using (IAdoProvider provider = AdoProvider.CreateProvider(connstr, FactoryType.OleDb)) { var rt = provider.Query<Item>(new Parameter("select top 1 SHAPE as wkb from mpoint")); var items = rt.Result; List<Geometry> geos = new List<Geometry>(); foreach (var item in items) { EsriMdbParser wkbParser = new EsriMdbParser(); //解析和反解析字节 var geo = wkbParser.FromReader(item.wkb); var buf = wkbParser.ToWriter(geo); var ngeo = wkbParser.FromReader(buf); //生成wkt string wkt = geo.ToWkt(); geos.Add(geo); } } }