1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using GisSharpBlog.NetTopologySuite.IO;
  5. using ESRI.ArcGIS.Geometry;
  6.  
  7. namespace Utils
  8. {
  9. /// <summary>
  10. /// This class is used to convert a GeoAPI Geometry to ESRI and vice-versa.
  11. /// It can also convert a ESRI Geometry to WKB/WKT and vice-versa.
  12. /// </summary>
  13. public static class Converters
  14. {
  15.  
  16. public static byte[] ConvertGeometryToWKB(IGeometry geometry)
  17. {
  18. IWkb wkb = geometry as IWkb;
  19. ITopologicalOperator oper = geometry as ITopologicalOperator;
  20. oper.Simplify();
  21.  
  22. IGeometryFactory3 factory = new GeometryEnvironment() as IGeometryFactory3;
  23. byte[] b = factory.CreateWkbVariantFromGeometry(geometry) as byte[];
  24. return b;
  25. }
  26.  
  27. public static byte[] ConvertWKTToWKB(string wkt)
  28. {
  29. WKBWriter writer = new WKBWriter();
  30. WKTReader reader = new WKTReader();
  31. return writer.Write(reader.Read(wkt));
  32. }
  33.  
  34. public static string ConvertWKBToWKT(byte[] wkb)
  35. {
  36. WKTWriter writer = new WKTWriter();
  37. WKBReader reader = new WKBReader();
  38. return writer.Write(reader.Read(wkb));
  39. }
  40.  
  41. public static string ConvertGeometryToWKT(IGeometry geometry)
  42. {
  43. byte[] b = ConvertGeometryToWKB(geometry);
  44. WKBReader reader = new WKBReader();
  45. GeoAPI.Geometries.IGeometry g = reader.Read(b);
  46. WKTWriter writer = new WKTWriter();
  47. return writer.Write(g);
  48. }
  49.  
  50. public static IGeometry ConvertWKTToGeometry(string wkt)
  51. {
  52. byte[] wkb = ConvertWKTToWKB(wkt);
  53. return ConvertWKBToGeometry(wkb);
  54. }
  55.  
  56. public static IGeometry ConvertWKBToGeometry(byte[] wkb)
  57. {
  58. IGeometry geom;
  59. int countin = wkb.GetLength();
  60. IGeometryFactory3 factory = new GeometryEnvironment() as IGeometryFactory3;
  61. factory.CreateGeometryFromWkbVariant(wkb, out geom, out countin);
  62. return geom;
  63. }
  64.  
  65. public static IGeometry ConvertGeoAPIToESRI(GeoAPI.Geometries.IGeometry geometry)
  66. {
  67. WKBWriter writer = new WKBWriter();
  68. byte[] bytes = writer.Write(geometry);
  69. return ConvertWKBToGeometry(bytes);
  70. }
  71.  
  72. public static GeoAPI.Geometries.IGeometry ConvertESRIToGeoAPI(IGeometry geometry)
  73. {
  74. byte[] wkb = ConvertGeometryToWKB(geometry);
  75. WKBReader reader = new WKBReader();
  76. return reader.Read(wkb);
  77. }
  78. }
  79. }

ArcGIS Engine 几何对象和WKB的转换的更多相关文章

  1. 基于Arcgis Engine 10.2(C#)+PostgreSQL 11(Postgis 3)+pgRouting 3.0实现使用数据库进行路径规划

    前言:最近在(被迫)使用ArcGIS Engine10.2(.NET平台)进行二次开发(桌面应用),因为想做一个最短路径查询的功能,而arcgis的网络分析又比较麻烦,于是想到了使用Postgis.但 ...

  2. ArcGIS Engine开发之旅09--几何对象和空间参考

    原文:ArcGIS Engine开发之旅09--几何对象和空间参考 1.Geometry  Geometry 是 GIS 中使用最为广泛的对象集之一,用户在创建.删除.编辑和进行地理分析的时候,就是处 ...

  3. ArcGIS Engine开发之旅08--和查询相关的对象和接口

    原文:ArcGIS Engine开发之旅08--和查询相关的对象和接口 查询在GIS领域应该是一个很频繁的操作,在GIS中除了具有属性查询(和其他关系型数据库的查询类似),还提供了空间查询.在介绍查询 ...

  4. arcgis for silverlight 地图放大到某个点或者几何对象

    http://blog.csdn.net/xuan444150/article/details/7727866   分类: silverlight王国 GIS王国 2012-07-09 08:50 1 ...

  5. arcgis几何对象

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  6. Arcgis Engine(ae)接口详解(5):IGeometry几何高级操作

    IPoint point = new PointClass(); point.PutCoords(, ); //ITopologicalOperator接口用于几何对象的几何操作 ITopologic ...

  7. vs.net调试ArcGIS Engine代码查看变量时,提示“要检查本机对象,请启用本机代码调试。” 的解决方法

    用vs2017 调试 查看ArcGIS Engine 的变量时 会提示如下图所示的错误: 解决方法: 工具->选项->调试->常规->使用托管的兼容模式 如下图所示: 2.设置 ...

  8. ArcGIS Engine开发之地图基本操作(3)

    地图数据的加载 一.加载Shapefile数据 Shapefile文件是目前主流的一种空间数据的文件存储方式,也是不同GIS软件进行数据格式转换常用的中间格式.加载Shapefile数据的方式有两种: ...

  9. ArcGIS Engine开发之旅04---ARCGIS接口详细说明

    原文:ArcGIS Engine开发之旅04---ARCGIS接口详细说明 ArcGIS接口详细说明... 1 1.      IField接口(esriGeoDatabase)... 2 2.    ...

随机推荐

  1. 【Winform】锐浪报表使用

    在发开报表时,使用了锐浪报表. 需要注意的一些细节: 1.给staticbox设置文本,通过GridppReport的变量,使用ControlByName获取到控件后进行设置文字 _report.Co ...

  2. JS实现图片翻书效果示例代码

    js 图片翻书效果.  picture.html  <html xmlns="http://www.w3.org/1999/xhtml">  <head>  ...

  3. linux set,env和export

    set,env和export这三个命令都可以用来显示shell变量 set 显示当前shell的变量,包括当前用户的变量 env 显示当前用户的变量 export 显示当前导出成用户变量的shell变 ...

  4. 详解Google-ProtoBuf中结构化数据的编码

    本文的主要内容是google protobuf中序列化数据时用到的编码规则,但是,介绍具体的编码规则之前,我觉得有必要先简单介绍一下google protobuf.因此,本文首先会介绍一些google ...

  5. Keil V5.1x命令“Build Target”重新编译所有文件

    网上的解决办法有多种,但不知道哪一种能对症,以下是我的解决方法:

  6. windows下编译php5.2.17这是闹哪样?

    参考:http://demon.tw/software/compile-php-on-windows.html

  7. SVN备份教程(一)

    最近一段时间在项目中用到了SVN备份的相关内容,这里给大家做一个简单的教程,重点在于SVN备份环境的搭建过程中,大家学到的解决问题的思维方式. 1.分类 SVN备份主要分为两种:一种是远程备份,另一种 ...

  8. cocos2dx之C++调用Lua

    原文地址:http://blog.csdn.net/dingkun520wy/article/details/49839701 1.引入头文件 #include "cocos2d.h&quo ...

  9. 进入 App Store 打分

    很多用户用了好软件后忘记或嫌麻烦而不去 App Store 进行打分评星,为此开发者可以在应用中加入打分按钮,点击后直接跳转到 App Store 的评分界面. App Store 上评论的链接地址是 ...

  10. tableView中不易被注意到的方法

    - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{ } 这个方法 在 r ...