cad图层dwg,dxf转shp

本文档介绍了一个C#程序,用于将CAD的DWG和DXF文件转换为ESRI SHP格式。程序使用Teigha库解析CAD图层,并通过OGR库将几何对象转换为SHP文件中的点、线和多边形。
摘要由CSDN通过智能技术生成

 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Teigha.DatabaseServices;
using Teigha.Geometry;
using Teigha.Colors;
using Teigha.Export_Import;
using Teigha.GraphicsInterface;
using Teigha.GraphicsSystem;
using Teigha.Runtime;
using OSGeo.OGR;
using System.IO;

namespace ToShp
{
    public class ToShp
    {
        


        /// <summary>
        /// 转shp
        /// </summary>
        /// <param name="filename">打开文件的文件名openFileDialog.FileName</param>
        /// <param name="openindex">打开文件的类型openFileDialog.FilterIndex</param>
        /// <param name="strVectorFile">输出文件目录"E:\\Test.shp"</param>
        public string Convert(string filename, int openindex, string strVectorFile)
        {
            Database pDb;
            Transaction trans;
            //点
             OSGeo.OGR.Geometry point = new OSGeo.OGR.Geometry(wkbGeometryType.wkbPoint);
            //线
             OSGeo.OGR.Geometry linepoint = new OSGeo.OGR.Geometry(wkbGeometryType.wkbMultiLineString);
            //圆
             OSGeo.OGR.Geometry circlepoint = new OSGeo.OGR.Geometry(wkbGeometryType.wkbLinearRing);
            //椭圆
             OSGeo.OGR.Geometry arcpoint = new OSGeo.OGR.Geometry(wkbGeometryType.wkbMultiPoint);
            //圆弧
            // 为了支持中文路径,请添加下面这句代码
            OSGeo.GDAL.Gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8", "NO");
            // 为了使属性表字段支持中文,请添加下面这句
            OSGeo.GDAL.Gdal.SetConfigOption("SHAPE_ENCODING", "");
            // 注册所有的驱动
            Ogr.RegisterAll();


            using (Services ser = new Services())
            {
                using (pDb = new Database(false, false))//不加参数会出错                 
                {
                    if (openindex == 1)
                    { pDb.ReadDwgFile(filename, FileOpenMode.OpenForReadAndReadShare, false, ""); }

                    if (openindex == 2)
                    { pDb.ReadDwgFile(filename, FileShare.Read, true, ""); }

                    using (trans = pDb.TransactionManager.StartTransaction())
                    {

                        BlockTableRecord btab = (BlockTableRecord)pDb.CurrentSpaceId.GetObject(OpenMode.ForRead);
                        List<string> bb = new List<string>();

                        #region

                        //为了支持中文路径,请添加下面这句代码
                        OSGeo.GDAL.Gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8", "NO");
                        // 为了使属性表字段支持中文,请添加下面这句
                        OSGeo.GDAL.Gdal.SetConfigOption("SHAPE_ENCODING", "");

                      //  string strVectorFile =
  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值