ArcGIS讀取DWG檔案路徑問題

2021-08-07 05:36:39 字數 1340 閱讀 5252

1、問題背景

最近接手同事留下的乙個載入dwg的問題。測試時發現傳入dwg檔案路徑,開啟的時候死活報錯。

如圖:

2、分析步驟

1)懷疑是arcengine未授權,於是新增授權**進行測試,未能解決。

2)使用accessworkspacefactory開啟.mdb檔案進行測試,發現可以開啟。

3)是不是元件版本的問題呢?修改元件引用方式,修改版本,不能解決。

4)發現cadworkspacefactory位於esri.arcgis.datasourcesfile命名空間下,於是想起開啟filegdb、shapefile的方式,即傳入的應該是資料夾路徑。於是修改測試**,發現可以解決問題。

3、解決辦法

如圖:

即:cadworkspacefactory開啟的的檔案路徑應當是目標dwg檔案所在的資料夾,而在使用featureworkspace物件開啟要素類即openfeatureclass時,其引數才是具體的「檔名+要素類型別」的形式。

4、一點思考

剛開始時覺得arcengine中開啟dwg檔案的方式很怪異,即明明寫著openfromfile,其引數不是檔案路徑,而是資料夾路徑,openfeatureclass時明明只需要指定featureclass的型別是點、線、面或註記,卻還要在前面加上檔名,真是十分彆扭。

結合平時使用c++進行arcengine開發的經歷,忽然覺得這樣也有其合理之處,理由如下:

1)datasourcesfile本身就已經告訴我們了,我要載入的檔案(這一點與基於c++進行arcengine開發的方式是一致的)所在的資料夾,而非pgdb。如載入filegdb時,其引數雖以.gdb結尾,但本身就是乙個資料夾,而不是.mdb檔案這樣的檔案路徑。

2)開啟不同型別的檔案,使用不同的workspacefactory引擎,各個引擎之間的引數是不同的。

hresult hr;

iworkspacefactoryptr ipworkspacefactory;

if (fissdatatypefgdb == m_ndatatype)

else if (fissdatatypepgdb == m_ndatatype)

else if (fissdatatypeshape == m_ndatatype)

if (failed(hr) || null == ipworkspacefactory)

3)細心很重要。

QT檔案讀取路徑

最近在弄中興的乙個程式大賽,用qt讀取xml檔案的程式設計。在程式設計中發現qt檔案讀取路徑與vs有不同之處。我們提供給qfile的檔案路徑無非就是絕對路徑和相對路徑。絕對路徑是絕對沒問題的 談到相對路徑,需要注意區分程序所在 當前工作目錄 和 程式所在目錄 vs中工作目錄是在你所建工程的cpp元檔...

Linux讀取檔案路徑問題

問題是這樣的 首先終端上有當前路徑顯示,我有個可執行程式 是這樣的 file fp fopen filename,rb if fp null printf cannot open n 編譯出來的可執行程式 elf格式 比如在 home username下面。filename中的這個檔案也是在user...

CTF中檔案讀取漏洞常見讀取路徑

1.flag名稱,根據實際情況在比賽中自由發揮 flag txt php pyc py tmp flag txt php pyc py home flag txt php pyc py etc flag txt php pyc py root flag txt php pyc py 2.服務資訊 絕...