1.前言
首先我想喷一下那些写博客写一半的家伙,写的是有头无尾。他们是直接粘贴复制网上的代码。也不管里面的代码都用到了哪些东西,也不知道是不是解决了自己的问题,反正就是直接粘贴,我看了好几篇IGeometry转WKT,WKB的博客。清一色都是粘贴复制,里面用到的类,也不知道是从哪来的,啥也不说,就是粘贴复制,我呸你妹的!就这都不能解我心头之气,真是垃圾。好了不说了,还是言归正传吧。
2. IGeometry转WKT
在ArcEngine中应该是没有直接的方法可以实现(如果有请留言告诉我),但是有IGeometry转WKB的接口
public static byte[] ConvertGeometryToWKB(IGeometry geometry)
{
IWkb wkb = geometry as IWkb;
//ITopologicalOperator oper = geometry as ITopologicalOperator;
//oper.Simplify();
IGeometryFactory3 factory = new GeometryEnvironment() as IGeometryFactory3;
byte[] b = factory.CreateWkbVariantFromGeometry(geometry) as byte[];
return b;
}
但是经过上网查找,发现有个第三方的库,可以将WKB转成WKT,那么就很好办了,首先下载类库,然后添加引用即可,然后调用下面这段代码。
public static byte[] ConvertWKTToWKB(string wkt)
{
WKBWriter writer = new WKBWriter();
WKTReader reader = new WKTReader();
return writer.Write(reader.Read(wkt));
}
调用示例:
string strWKT = ConvertWKBToWKT(ConvertGeometryToWKB(pFeature.Shape as IGeometry));
本文详细介绍了如何在ArcEngine环境下将IGeometry转换为WKT格式,通过使用IWkb接口及第三方库实现了从WKB到WKT的转换。文章提供了具体的代码示例,帮助读者理解并实践这一过程。

1862

被折叠的 条评论
为什么被折叠?



