在處理柵格資料時,有時會碰到一些不具備地理位置資訊的柵格檔案,例如bmp
格式的柵格資料,或者發現柵格檔案中包含的地理位置不正確。此時,如果希望raster provider
或gdal provider
能夠正確處理這些柵格資料,使用者必須為這些這些柵格檔案提供乙個世界檔案(world file)。
那麼,什麼是世界檔案呢?世界檔案是乙個為柵格影象指定地理位置資訊的文字檔案,該文字檔案共有6
行,描述了柵格影象的比例尺、旋轉資訊和插入位置。但是,世界檔案並沒有指定地理位置所使用的座標系。
世界檔案的檔名有兩種命名規範,這兩種規範都是利用相關聯的柵格檔案進行命名。第一種規範是在柵格檔名稱之後新增乙個字母「w
」,第二種規範使用柵格副檔名的最後乙個字元替換副檔名中的第二個字母,將副檔名的第三個字母替換為「w
」。給定乙個柵格檔案「filename.jpg
」,與之相關聯的世界檔案可以命名為「filename.jpgw
」或「filename.jgw
」。通常,我們使用第二種命名規範,並且將世界檔案和柵格檔案放在同乙個目錄下。
下面,我們來看看世界檔案中每一行的含義。 l
第一行a
:在柵格影象所使用的座標單位下,每個畫素代表的x
軸的單位長度 l
第二行d
:柵格影象y
軸的旋轉 l
第三行b
:柵格影象x
軸的旋轉 l
第四行e
:在柵格影象所使用的座標單位下,每個畫素代表的y
軸的單位長度 l
第五行c
:柵格影象左上角畫素中心點的x
座標值
l第六行f
:柵格影象左上角畫素中心點的y
座標值
從上往下數,給定柵格影象的第x
行,從左往右數,給定柵格影象的第y
列,該畫素中心點的座標值(x』, y』
)可以使用如下的公式進行計算:
x』 = ax + by + c
y』 = dx + ey + f
其中,e
通常為乙個負數值,因為柵格影象的行號是從上往下來計數的。
假設柵格檔案「filename.jpg
」是乙個800
´600
的柵格檔案,它所關聯的世界檔案「filename.jgw
」內容如下:
32.0
0.00.0
-32.0
691200.0
4576000.0
那麼,給定畫素點x
=171、y
=347,那麼使用前面所提供的公式我們可以計算得到該畫素點中心位置的座標值為(696672,4565024)。
深入FDO 記憶體管理機制
呼叫某些fdo的函式,如建立方法,需要申請記憶體,而這些記憶體需要在適當的時機釋放,以免記憶體洩漏。fdo使用了引用計數的方式來實現管理物件的生命週期,每個物件都維護著乙個引用計數,只有當這個物件的引用計數變為0時,才會去釋放這個物件。所以,fdo中每個類都從fdoidisposable類繼承而來的...
深入FDO 異常處理機制
fdo 的所有異常類都繼承自fdoexception,但是在fdo 3.5之前fdo只提供了9個異常類,這些異常類的類圖如圖9 2所示。圖 9 2 fdo異常類類圖從圖 9 2可以看到,fdo的異常類並不是非常,fdo 3.5已經注意到了這個問題,而且提供了具體的解決方案,訪問http trac.o...
雜談 邏輯世界,物理世界
一台現實中的計算機,總是只有乙個 cpu 不包括 smp 有限的記憶體 一台印表機只歸我所用。可是,作業系統認為這樣的世界太單調。intel 不遺餘力地讓 cpu飛奔 現在幾個 g了?總不能讓 cpu大多時間處於 idle 狀態 用 ctrl del alt 鍵開啟任務管理器,看看 cpu有多少時間...