使用NetTopologySuite(NTS)从WKB生成Geometry
1.NetTopologySuite简介
NetTopologySuite是著名的JTS Topology Suite的C#/.net版本,简称NTS,JTSTopology Suite为一个OpenGIS标准的GIS分析、操作类库。NTS项目的目的是提供一个基于.net,快速、稳定的GIS解决方案,以应用于所有.net平台,包括各类嵌入式设备(.net Compact)。
2.拿到WKB
既然要从WKB生成Geometry,那我们首先就要拿到一个WKB,就是拿到一个字符串。这里我们使用postgresql提供的工具shp2pgsql来自动生成,上两张图看看生成shp2pgsql生成的insert语句吧
注意红线画出来的就是WKB,既然他们拿到了WKB,就开干吧
3.从WKB生成Geometry
NTS提供了一个类叫做WKBReader,用他来读取一个bytes的数组我们直接来上图
注意我们图中用红线框起来的内容,WKBReader读取的那个bytes数组是要通过 WKBReader.HexToBytes(wkb)出来的结果才能正确读取,直接使用Encoding.UTF8.GetBytes(wkb)的结果读取是会报错的,报错的信息为:无法识别的空间类型。
最后面将IGeometry转为Geometry,因为IGeometry是继承自Geometry的,子类对象可以直接转为父类对象使用。
写到这里突然想到一句话,面向对象程序设计的多态的精髓就是:
子类对象可以转换为父类对象,但表现出来子类对象的特征。
结语:又到年底了,我们又开始996了,加油奋斗吧,虽然今年注册测绘师和信息系统项目管理师都没过,但是不要气馁,明年接着干。giser,never backoff,and never give up!!!