zoukankan      html  css  js  c++  java
  • ArcGIS Engine 几何对象和WKB的转换

    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);
            }
        }
    }
  • 相关阅读:
    XML中<beans>中属性概述
    (转)深入理解Java:注解(Annotation)自定义注解入门
    maven 配置参数详解!
    maven setting.xml文件配置详情
    hashMap与 hashTable , ArrayList与linkedList 的区别(详细)
    jdbc参数
    linux下ftp命令的安装与使用
    java中的Iterator与增强for循环的效率比较
    命令行窗口常用的一些小技巧
    在eclispe的类中快速打出main方法
  • 原文地址:https://www.cnblogs.com/zuiyirenjian/p/3410141.html
Copyright © 2011-2022 走看看