using System;
using System.Collections.Generic;
using System.Text;
using GisSharpBlog.NetTopologySuite.IO;
using ESRI.ArcGIS.Geometry;
namespace Utils
{
public static class Converters
{
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;
}
public static byte[]
ConvertWKTToWKB(
string wkt)
{
WKBWriter writer =
new WKBWriter();
WKTReader reader =
new WKTReader();
return writer.Write(reader.Read(wkt));
}
public static string ConvertWKBToWKT(
byte[] wkb)
{
WKTWriter writer =
new WKTWriter();
WKBReader reader =
new WKBReader();
return writer.Write(reader.Read(wkb));
}
public static string ConvertGeometryToWKT(IGeometry geometry)
{
byte[] b = ConvertGeometryToWKB(geometry);
WKBReader reader =
new WKBReader();
GeoAPI.Geometries.IGeometry g = reader.Read(b);
WKTWriter writer =
new WKTWriter();
return writer.Write(g);
}
public static IGeometry
ConvertWKTToGeometry(
string wkt)
{
byte[] wkb = ConvertWKTToWKB(wkt);
return ConvertWKBToGeometry(wkb);
}
public static IGeometry
ConvertWKBToGeometry(
byte[] wkb)
{
IGeometry geom;
int countin = wkb.GetLength(
0);
IGeometryFactory3 factory =
new GeometryEnvironment()
as IGeometryFactory3;
factory.CreateGeometryFromWkbVariant(wkb,
out geom,
out countin);
return geom;
}
public static IGeometry
ConvertGeoAPIToESRI(GeoAPI.Geometries.IGeometry geometry)
{
WKBWriter writer =
new WKBWriter();
byte[] bytes = writer.Write(geometry);
return ConvertWKBToGeometry(bytes);
}
public static GeoAPI.Geometries.IGeometry
ConvertESRIToGeoAPI(IGeometry geometry)
{
byte[] wkb = ConvertGeometryToWKB(geometry);
WKBReader reader =
new WKBReader();
return reader.Read(wkb);
}
}
}
// GisSharpBlog.NetTopologySuite.IO 可以使用NuGet包管理器下载,传送门
转载链接:http://www.cnblogs.com/zuiyirenjian/p/3410141.html ArcMap中使用ArcPy实现Geometry与WKT的相互转换:http://blog.csdn.net/linghe301/article/details/29554257(此种方法的缺点,如果线或者面比较复杂,4000的字符串长度根本不够,赋值会出错)