1. 誰能幫我打開.MXD的文件格式的 文件 並轉換成CAD的
在ARCGIS中,以mxd作為擴展名的文件是地圖文檔。
是當你用ArcMap編輯一個地圖後,它會把當前地圖的內片面設置,圖層容的符號顯示等配置信息存儲。
只發mxd是沒用的,他只是記錄文件的路徑、當前的狀態。你可以把他理解成一個快捷方式。如果發送過來,沒有原始文件(mdb什麼的)是打不開的。
1、不要屬性的話,在圖層上面點右鍵→數據→導出數據→選擇CAD就好了。
2、要屬性一般用FME轉換。
2. 如何編輯SDE數據
1. 打開 SDE 數據。 SDE 數據一定要使用工作空間工廠去初始化工作空間,在工作空間打開 FeatureClass,這是 最常規的操作。下面通過一段 C#代碼連接 SDE,打開並返回一個 IWorkspace。 public IWorkspace FindWsByDefault() { IPropertySet propSet = new PropertySetClass(); propSet.SetProperty("Server", Lan); propSet.SetProperty("Instance", yangyang); propSet.SetProperty("Database", ""); propSet.SetProperty("User", user); propSet.SetProperty("Password", pwd); propSet.SetProperty("Version", version); IWorkspaceFactory factory = new SdeWorkspaceFactoryClass(); IWorkspace workspace = factory.Open(propSet, 0); return workspace; } 通過上述代碼打開了 SDE 的工作空間,接下來要做的就是獲取要編輯的 FeatureClass。寫一 個函數,通過 FeatureClass 的別名和所在的 Dataset 返回 FeatureClass。做法是先遍歷所有的 DataSet, 找到符合要求的 Dataset 之後遍歷裡面的要素, 返回與參與別名一致的 FeatureClass (順便說一下,FeatureClass 在沒有指定別名的時候默認與 FeatureClass 名稱相同) //查找指定要素 public IFeatureClass FindClassByName(IWorkspace ws, string className, string dsName) { IEnumDataset enumDs; if (dsName != "") { enumDs = ws.get_Datasets(esriDatasetType.esriDTFeatureDataset); IFeatureDataset featureDs = enumDs.Next() as IFeatureDataset; while (featureDs != null) { if (featureDs.Name == dsName) { return GetFcFromDataset(featureDs, className); } featureDs = enumDs.Next() as IFeatureDataset; } } else { enumDs = ws.get_Datasets(esriDatasetType.esriDTFeatureClass); return GetFcFromEnumDataset(enumDs,className); } return null; } //在數據集中查找要素類 private IFeatureClass GetFcFromDataset(IFeatureDataset featDs, string className) { IFeatureClass featClass; IFeatureClassContainer fcContainer = featDs as IFeatureClassContainer; for (int i = 0; i < fcContainer.ClassCount; i++) { featClass = fcContainer.get_Class(i); if (featClass.AliasName == className) { return featClass; } } return null; } //在要素類集合中查找要素類 private IFeatureClass GetFcFromEnumDataset(IEnumDataset enumDs, string className) { IFeatureClass featClass = enumDs.Next() as IFeatureClass; while (featClass != null) { if (featClass.AliasName == className) { return featClass; } featClass = enumDs.Next() as IFeatureClass; } return null; } //通過要素類名和數據集名在指定的工作空間中尋找要素類 public IFeatureClass FindClassByName(string className, string datasetName) { IWorkspace ws = FindWsByDefault(); IFeatureClass featClass = FindClassByName(ws, className, datasetName); return featClass; } 特別需要留意的是最後一個函數 FindClassByName(,,先是打開 SDE 的工作空間,在這 ) 個工作空間返回符合條件的要素集。通過這樣的指向才能對 SDE 的 FeatureClass 進行寫入 和刪除的操作。 可以把上述代碼寫成一個靜態類, 這樣就可以很方便的通過數據集名稱和要 數集別名指向要編輯的 FeatureClass 了。 值得一提的是, 很多新手都沒有養成這種良好的習慣, 就是先打開工作空間再進行數據的編 輯 ,即便是使用 shp 文件或是 MDB 數據。他們習慣性的使用 MapControl 去載入 MXD 文 件,然後在 MapControl 通過 MapControl.get_layer(index)的方法去獲取圖層,然後將其轉為 IFeatureLayer 或是 IFeatureClass 進行操作。 事實上,MXD 已經不用開發者寫一句載入圖層的代碼就完成了對圖層的載入,確實比較方 便。 但是它有很多看不見的操作沒有表現出來, 載入完數據之後就把工作空間給自動關閉了。 對於 shp 文件和 MDB 數據,通過讀取地圖控制項的圖層是可以直接達到寫入的目的,但一旦 有用戶進行操作該圖層文件就會被鎖死,這就是不支持版本技術的表現。而 SDE 數據由於 存在版本(原理不多說了) ,因此有需要去確保數據的安全性和一致性,必須使用工作空間 的形式去打開。如果用讀取 MapControl 圖層的方法去獲取 FeatureClass,實際上獲取的是一 個沒有打開的編輯操作的 FeatureClass,在 ESRI 的幫助文檔裡面我們不難發現它是只讀的, 就像在 ArcMap 裡面沒有用 Editor 執行 startEdit 一樣。 2. 編輯 SDE 數據 利用上述的方法獲取了 FeatureClass 後就可以用常規的方式對其進行編輯,如 delete()和 CreateFeature(),或是更改屬性值。但是仍然會出現無法編輯數據的現象,這種現象通常提 示沒有足夠的授權去編輯數據,這就涉及到 AE 對 SDE 數據編輯的授權,也就是 gdbedite 的授權(主要是在 AE9.2 裡面) 。 關於 GDBEdite 的授權,懶羊羊已經在之前發過一份比較完整的文檔,但還是在這里再歸納 一下。 ArcEngine9.2 在用戶許可上做了很大的改動,應用程序是強制初始化許可,也就是說必須使 用 LicenseControl 或 AO 介面初始化許可, 否則應用程序無法啟動。 Engine9.1 未採取強制初 始化許可策略,而是應用程序創建時就初始化標准 Engine 許可。在一般情況下,我們會用 將 LicenseControl 拖放到主窗體上完成初始化。但當 Engine 程序需要使用 ArcGIS Engine Enterprise Geodatabase(以下簡稱 GDB Update)許可的時候,我們就往往會由於意識不到應 該使用該許可,以及無法正確的初始化該許可而陷入麻煩。 對於許可這東西,首先要學會看軟體產品的購貨單。下表是一份關於 ArcEngine9.2 的購貨 單。 下面對 GDB update 許可進行討論 1. 什麼情況下需要 GDB Update 許可 當需要對 SDE 里數據進行編輯時,以及需要在 SDE 和 Personal Geodatabase 中創建復雜 ArcGIS 對象時,需要使用 GDB Update 許可。 對 SDE 里的數據編輯,很好理解,大致就是進行數據插入,刪除,更新;對表添加、刪除 和修改,表結構的變化(添加、刪除列)等,因為這些動作都會造成後台資料庫的寫操作。 對於 Personal Geodatabase,進行簡單數據對象和編輯,包括創建、刪除和修改普通表都是不 需要 GDB Update 許可的, 但對於復雜的 Geodatabse 對象的創建、 刪除和修改, 則需要 GDB Update 許可,其中復雜的 Geodatabse 對象包括幾何網路,網路分析模型,拓撲,關系類。 這也是為什麼往往有寫好了一個創建幾何網路或拓撲的程序後,執行起來會被報「需要 Geodatabase Update 許可」的錯。 2. 怎樣初始化 GDB Update 許可 當我們意識到需要使用 Engine 的 GDB Update 許可時,怎樣才能將它正確的初始化呢? Engine 給我們提供了兩種初始化許可的方法: 1) 使用 LicenseControl 控制項。將該控制項拖放到主窗體之上,勾選適當的許可,並確保 程序啟動該窗體可載入,就可以完成許可初始化。如下圖: 2) 使用 IAoInitialize.Initialize 方法加入適當的參數進行初始化 下面是 C#的代碼 private IAoInitialize m_AoInitialize = new AoInitializeClass(); private void Form1_Load(object sender, EventArgs e) { m_AoInitialize.Initialize(esriLicenseProctCode.esriLicenseProctCo deEngineGeoDB); } 在窗體載入的時候初始化 GDB 許可。 當然, 對於一個健壯的程序而言, 我們還需要在初始化之前先判斷將被初始化的許可是否可 用,應先使用 IsProctCodeAvailable 方法進行判斷,需要初始化擴展模塊的許可,可使用 CheckOutExtension 方法。
3. 25個arcmap常用各種文件擴展名,你都知道嗎
本文詳細介紹了26個ArcGIS中常用的各種文件擴展名,以下是它們的具體用途:
1. .sde:ArcSDE連接文件的擴展名。
2. .tlb:用於.Net開發ArcGIS插件的文件擴展名,有版本兼容性問題。
3. esriaddin:ArcGIS插件開發的擴展名。
4. .rul:ArcGIS拓撲規則文件,用於載入拓撲規則。
5. .exp:保存查詢SQL的擴展名,便於下次直接使用。
6. .lxp:標注表達式保存擴展名,支持下次直接載入。
7. .gtf:不同坐標系轉換參數文件。
8. .shp:Shapefile文件擴展名,不建議當前使用。
9. .mxd:ArcMap文檔文件,存儲文檔布局、圖層樣式、標注等信息。
10. .lyr:圖層樣式文件,存儲圖層屬性設置。
11. .mxt:ArcGIS制圖模板文件,包含初始化界面配置。
12. .prj:存儲坐標系信息的文件。
13. .mdb:個人資料庫文件,支持Access打開,有版本兼容性問題。
14. .gdb:文件地理資料庫,與mdb相似,同樣有版本兼容性。
15. .sqlite:輕型資料庫文件,支持Android設備。
16. Geodatabase:本地離線資料庫文件,矢量格式可編輯。
17. .tbx:ArcGIS工具箱文件,有版本兼容性問題。
18. .tpk:ArcMap地圖切片包文件。
19. .mpk:地圖包文件,包含數據與mxd文檔,支持ArcGIS 10.0以上。
20. .gpk:地理處理包文件,包含工具或模型和數據,可解包後使用。
21. .img:遙感影像文件格式,ERDAS和ENVI軟體常用。
22. .las:存儲機載激光雷達數據的二進制格式文件。
23. .sxd:ArcSence文檔文件,需要保存為相對路徑。
24. .3dd:ArcGlobe文檔文件,需要保存為相對路徑。
25. .py:ArcGIS Python源碼文件。
26. .xyz:存儲激光點雲數據的浮點數格式文件,可生成ArcGIS數據。
以上信息旨在幫助用戶了解並運用ArcGIS中的文件擴展名,共同提升技能。
4. arcgis如何合並1:10000分幅地形圖mdb格式資料庫
有多種方式:
1、直接在抄mxd文件中添加分幅的地形圖,然後發布服務,這樣看上去是合並的了
2、新建一個MDB資料庫,然後將數據按圖層分別合並到一個圖層里
地形圖合並的關鍵在於是否要接邊,如果接邊的話工作量就很大了
5. 現有cad的DWG地形圖,怎麼轉成shp文件
1、首先,打開抄ArcMap,載入CAD文件,可襲以全部添加,也可以單獨添加每個元素;這里添加的都是一個組合,你也可以打開它(取消組合)。