CGM格式解析

2021-09-08 02:02:10 字數 1393 閱讀 5426

無意中從網上看到有人想解析cgm,就想起來把幾年前做的乙個小專案簡單總結幾句。

石油行業常用cgm(computer graphics metafile)計算機圖形元檔案格式來儲存一些圖件,從參加工作沒多久就遇到過許多的cgm讀取和輸出軟體或工具。像sdi公司的cgmoffice等都可以很好的編輯cgm檔案。由於cgm格式設計得較早,雖然許多理念很不錯,設計的圖形元素複雜,但還是有一些先天不足,其中最大的問題是對中文的支援,再就是支援多種版本(v1到v4),並且還可以定製,稱為profile,而一些公司出於成本的考慮,通常只支援v1或v2,一些複雜的元素就不再考慮了。

這些cgm檔案的版本低一些也是好事,至少我們做程式設計的可以少花些時間就可以讀取一些構造圖了。在石油行業應用中常用的cgm版本實際上還是v1,在構造圖里,用到的cgm命令並不多,統計後可以有一些驚異的發現。所以自己用c#程式設計來解析cgm也是乙個可能的任務了。

看到許多剛剛參加工作的學生很快就會遇到此類問題,估計也要動手嘗試自己解析cgm格式,這裡把一些主要思路介紹一下。

cgm的官方文件實際上就是三個,

(1)iso_iec_8632-1_1999(e).pdf,cgm的iso規範part1,總體介紹

(2)iso_iec_8632-3_1999(e).pdf,cgm的iso規範part3(注意第2部分被iso組織作廢了),二進位制格式介紹

(3)iso_iec_8632-4_1999(e).pdf,cgm的iso規範part4(文字格式介紹,實際應用中很少用,一般不用看)

另外軍方的有乙個規範(mil-std-2301-1993-cgm.doc )寫得比較細,把二進位制編碼的排列方式都寫出來了。

值得一提的是cgm pip規範,如果要顯示帶**剖面的圖形的這類cgm檔案時,這個pip也要能讀才行。

(2)ralcgm.rar 這個源**內容很多很全,但確實不容易看懂,也不容易移植

(3)勝利油田的乙個朋友在工作站上用c語言寫的讀寫cgm的程式,**較亂,注釋也很少,可以輸出cgm

(4)larson的cgmlibrary,1998 larson公司做的乙個開放原始碼的cgm library,從2023年後好像就不免費了,但源**還是可以參考的,還有乙個cgmlib3.pdf的api手冊有200多頁。

另外還可以參考的就是發表在期刊雜誌上的與cgm有關的幾篇**,這些**篇幅都不長,可以作為入門手冊來讀讀。

cgm的測試檔案由nist提供過2個版本,乙個是2.0,乙個是3.0,見這個**誰能把這些內容都正確顯示了,才能算是乙個cgm的商業軟體。

自己解析cgm的過程還是相當曲折的,最後用int公司的carnac.net來顯示所有解析出來的圖元(carnac裡面可以輸出cgm檔案,但不能讀cgm),把以前的類圖生成了一張。

TIFF World File TFW 格式解析

tiff world file tfw 格式說明摘要 tfw檔案包含相關的tiff檔案的空間引數 spatial reference 資料。本文詳細描述了tfw檔案中定義的引數。概述 兩個檔案構成tfw格式。ascii 標頭檔案 圖象檔案 圖象檔案為tiff格式 未壓縮 詳細資料 tfw檔案的名字與...

HHP格式解析

hhp格式解析 options compatibility 1.1 or later 版本 compiled file vbp htmlhelpmaker.chm 編譯後的檔名稱.路徑相對與本工程的具體路徑.contents file table of contents.hhc 內容表檔案.hhc ...

mov格式解析

peter lee 2008 06 14 一 簡介 二 原子 原子是quicktime用來構建等級資料結構的基本容器。新建立的quicktime原子就象樹的根。隨後的每個原子都包含在其中並且包含資料和其它原子。如果乙個quicktime原子包含其它原子,就被叫做父原子,包含在其中的原子就叫做葉原子。...