• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Bouyei.Geo: 地理信息空间数据格式解析动态库。如:shp,dbf,mdb,gdb,spatialite,geopac ...

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

Bouyei.Geo

开源软件地址:

https://gitee.com/bouyei/Bouyei.Geo

开源软件介绍:

bouyei.Geo

介绍


是地理信息空间数据常用格式解析动态库,为方便灵活高效无依赖处理常用的数据文件格式提供支持,shpfile,esri mdb,spatialite,geopackage,ogc(geojson,wkt,wkb等)等的数据格式进行解析和生成。增加支持常用的geometry算法支持,如:高斯正反算,平面面积计算,椭球面积计算等。

Bouyei.Geo 基于.net framework 4.5.1+

Bouyei.GeoCore 基于.net core 2.0+

Bystd.Geo 基于.net standard 2.0+

Package


PackageNuGet
Bouyei.GeoNuGet
Bouyei.GeoCoreNuGet
Bystd.GeoNuGet

介绍

1、支持常用geometry数据格式解析转换。

2、支持基本geometry算法如相交和面积计算等。

3、精简尽量无依赖第三方库方便可修改可移植。

4、最大限度的简单引用和入手学习使用。

安装教程

  1. vs or vs code

使用说明

  1. nuget install

  2. 面积计算

        string wktstr = "POLYGON ((36379440.1493 2936717.206599999, 36379425.4384 2936710.4860999994, 36379423.0042             2936716.307, 36379437.133 2936723.318499999, 36379440.1493 2936717.206599999))";    GeoPlane plane = new GeoPlane();    var area = plane.Area(wktstr);    GeoEllipsoid geo = new GeoEllipsoid();    var ellipse = geo.Area(wktstr);    var dist = geo.Distance(new Coordinate()    {        X = 36379440.1493,        Y = 2936717.206599999    },     new Coordinate()     {         X = 36379425.4384,         Y = 2936710.4860999994     });    var geopoint = new Coordinate()    {        X = 36367729.9624,        Y = 2941185.8308    };    var bl = plane.XYtoLB(geopoint);    var bxy = plane.LBtoXY(bl);
  3. esri mdb解析

        string connstr = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=E:\LINE.mdb;";    using (IAdoProvider provider = AdoProvider.CreateProvider(connstr, FactoryType.OleDb))    {        var rt = provider.Query<Item>(new Parameter("select top 1 SHAPE as wkb from multipoint"));        var items = rt.Result;        List<Geometry> geos = new List<Geometry>();        foreach (var item in items)        {            EsriMdbParser wkbParser = new  EsriMdbParser(item.wkb);            var geo = wkbParser.FromReader();            //生成wkt           // string wkt= geo.ToWkt();            geos.Add(geo);        }    }

4.geojson 解析

        string file = "C:\\3DCity.json";// AppContext.BaseDirectory + "testfiles\\feature.geojson";//"C:\\3DCity.json";        string content = File.ReadAllText(file, Encoding.UTF8);        GeoJsonParser json = new GeoJsonParser(content);        var geo = json.ToFeatures<attr, JsonMultiPolygon>();        List<double[]> coords = new List<double[]>();        coords.Add(new double[] { 1, 2 });        coords.Add(new double[] { 2, 3 });        var collection = new FeatureCollection<attr, JsonLineString>()        {            name = "册亨县八渡镇",            features = new Feature<attr, JsonLineString>[] {             new Feature<attr, JsonLineString>(){             properties=new attr(){  name="乃言村",code="522327"},             geometry=new JsonLineString(){             coordinates=coords          }         }        }        };        var str = json.ToWrite<attr, JsonLineString>(collection);

5.spatialite 解析

        string connstr = $"Data Source={sqlite};Version=3;Read Only=True;Pooling=False;Max Pool Size=100;";        using (var provider = AdoProvider.CreateProvider(connstr, FactoryType.SQLite))        {            var rt = provider.Query<SpatiaLiteGeo>(new Parameter("select * from mian"));            if (rt.IsSuccess() == false)                throw new Exception(rt.Info);            SpatiaLiteParser parser = new SpatiaLiteParser();            foreach (var item in rt.Result)            {                //解析spatialite 字节                var geo = parser.FromReader(item.GEOMETRY);                //还原为spatialite字节                var geo_buffer= parser.ToWriter(geo);                Console.WriteLine(geo.ToWkt());            }        }

6.geopackage 解析

        string connstr = $"Data Source={sqlite};Version=3;Read Only=True;Pooling=False;Max Pool Size=100;";        using (var provider = AdoProvider.CreateProvider(connstr, FactoryType.SQLite))        {            var rt = provider.Query<GeoPackageGeo>(new Parameter("select * from xian"));            if (rt.IsSuccess() == false)                throw new Exception(rt.Info);            GeoPackageParser parser = new  GeoPackageParser();            foreach (var item in rt.Result)            {                //还原为geopackage字节                var geo = parser.FromReader(item.geom);                Console.WriteLine(geo.ToWkt());                //还原为geopackage字节                var geo_buffer = parser.ToWriter(geo);                //测试writer方法结果                var g=parser.FromReader(geo_buffer);                Console.WriteLine(geo.ToWkt());            }        }

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap