ArcGIS Engine 几何对象和WKB的转换

来源:互联网 发布:淘宝软文范例 编辑:程序博客网 时间:2024/05/22 02:00
using System;using System.Collections.Generic;using System.Text;using GisSharpBlog.NetTopologySuite.IO;using ESRI.ArcGIS.Geometry;namespace Utils{    /// <summary>    /// This class is used to convert a GeoAPI Geometry to ESRI and vice-versa.    /// It can also convert a ESRI Geometry to WKB/WKT and vice-versa.    /// </summary>    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);        }    }}

转载链接:http://www.cnblogs.com/zuiyirenjian/p/3410141.html
ArcMap中使用ArcPy实现Geometry与WKT的相互转换:http://blog.csdn.net/linghe301/article/details/29554257

0 0
原创粉丝点击