Java中如果要解析tiff,其實很多時候,我們都選擇gdal的Java庫來實現,毫無疑問,gdal確實在GIS數據處理方面非常的強悍,其實Geotools中很多有關柵格數據的解析,也是基於Gdal進行的封裝,今天就簡單了解使用GeoTools來解析Tiff數據。
package com.dudu.gis; import org.geotools.gce.geotiff.GeoTiffReader; import org.geotools.geometry.GeneralEnvelope; import org.junit.Test; import org.opengis.coverage.grid.GridEnvelope; import org.opengis.referencing.crs.CoordinateReferenceSystem; import javax.media.jai.ImageLayout; import java.awt.color.ColorSpace; import java.awt.image.ColorModel; import java.awt.image.SampleModel; import java.io.IOException; /** * 一般對於tiff數據的讀取,都會借助於gdal * Java API庫,但其實Java的geotools也 * 封裝了讀取tiff文件的API */
public class GeoTiffReaderTest { private static final String TIF_PATH = "D:\\Gis開發\\數據\\影像數據\\tiff\\china.tif"; @Test public void readTiffFile() throws IOException { /** * 使用GeoTiffReader */ GeoTiffReader geoTiffReader = new GeoTiffReader(TIF_PATH); //獲取到其bbox
GeneralEnvelope envelope = geoTiffReader.getOriginalEnvelope(); //獲取到投影信息
CoordinateReferenceSystem crs = geoTiffReader.getCoordinateReferenceSystem(); //獲取tiff的gridrange(網格范圍,按像素說就是像素數量,也就是是tiff的rectangle)
GridEnvelope gridEnvelope = geoTiffReader.getOriginalGridRange(); //獲取其圖像相關信息
ImageLayout imageLayout = geoTiffReader.getImageLayout(); //獲取colormodel
ColorModel colorModel = imageLayout.getColorModel(null); //查看其通道數量
int num = colorModel.getNumComponents(); //是否支持透明
boolean isAlpha = colorModel.hasAlpha(); //獲取顏色空間
ColorSpace clorspace = colorModel.getColorSpace(); //獲取samplemodel
SampleModel sampleModel = imageLayout.getSampleModel(null); //數據類型
int datatype = sampleModel.getDataType(); }
}
其實使用GeoTools解析tiff,也是非常的方便,對於上面代碼中的Java圖像知識,我會專門做一個Java圖像介紹的文章。