日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用OGR创建dxf格式矢量数据

發布時間:2025/4/5 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用OGR创建dxf格式矢量数据 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ? ? ? 使用OGR庫創建DXF格式的數據和創建Shp格式的數據基本一樣,代碼除了注冊驅動不一樣之外,其他的完全一樣。

? ? ? ? 需要注意的是,OGR創建DXF格式需要data文件夾下的head.dxf,所以首先要設置GDAL_DATA的目錄。使用下面代碼進行設置,也可以直接設置環境變量,但是比較麻煩,還是用代碼設置比較方便:

CPLSetConfigOption("GDAL_DATA","E:\\gdal\\data"); ? ? ? ? 使用上面的設置之后,就可以創建DXF格式的矢量數據了,此外還有問題就是,DXF格式不支持屬性表,如果創建屬性表的話,GDAL會提示創建屬性表失敗之類的信息。下面是創建一個矩形的dxf文件,代碼如下:

#include "ogrsf_frmts.h"int main() {//設置GDAL_DATA目錄CPLSetConfigOption("GDAL_DATA","E:\\gdal\\data");//定義DXF的驅動const char *pszDriverName = "DXF";//注冊OGR驅動OGRRegisterAll();OGRSFDriver *poDriver;poDriver = OGRSFDriverRegistrar::GetRegistrar()->GetDriverByName(pszDriverName );if( poDriver == NULL ){printf( "%s driver not available.\n", pszDriverName );exit( 1 );}OGRDataSource *poDS; //創建文件poDS = poDriver->CreateDataSource( "E:\\rect.dxf", NULL );if( poDS == NULL ){printf( "Creation of output file failed.\n" );exit( 1 );}OGRLayer *poLayer; //創建一個圖層,估計DXF可以創建很多個圖層poLayer = poDS->CreateLayer( "rect", NULL, wkbPolygon, NULL );if( poLayer == NULL ){printf( "Layer creation failed.\n" );exit( 1 );}//創建一個要素,由于DXF不支持屬性表,就不創建屬性表了OGRFeature *poFeature;poFeature = OGRFeature::CreateFeature( poLayer->GetLayerDefn() );//創建一個矩形的多邊形OGRLinearRing Ring;Ring.addPoint(0,0);Ring.addPoint(0,100);Ring.addPoint(100,100);Ring.addPoint(100,0);Ring.closeRings();OGRPolygon polygon;polygon.addRing(&Ring);//將多邊形添加到要素中poFeature->SetGeometry( &polygon ); //將要素寫入圖層中if( poLayer->CreateFeature( poFeature ) != OGRERR_NONE ){printf( "Failed to create feature in dxf.\n" );exit( 1 );}//釋放要素OGRFeature::DestroyFeature( poFeature );//關閉數據集OGRDataSource::DestroyDataSource( poDS ); }? ? ? ? 執行完上面的代碼,會在E盤生成一個rect.dxf的文件,使用QGIS打開效果截圖如下(電腦沒有安裝AutoCAD,不知道使用CAD打開是什么樣子):



此外,使用GDAL打開dxf文件有個bug,我提交給GDAL官方了,但是一直沒有解決。總的來說,OGR中的dxf驅動還是不太完善。希望能盡快完善,bug地址:http://trac.osgeo.org/gdal/ticket/4319

轉載于:https://www.cnblogs.com/xiaowangba/archive/2012/07/24/6314007.html

總結

以上是生活随笔為你收集整理的使用OGR创建dxf格式矢量数据的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。