2010/11/25

Chuyển file TIF + TFW sang GeoTiff

Anh Hùng béo và anh em VPDA của CIREN cung cấp cho mình khoảng 10Gb ảnh SPOT để thử nghiệm đem lên internet ra sao. Khi mở ra thì thấy mỗi ảnh có folder gồm 2 file chính: xxx.tfw và xxx.tif
Nhận xét đầu tiên: các ảnh này được làm để sử dụng trong ArcMap chắc để phục vụ chỉnh sửa dữ liệu GIS. File TFW là một dạng file ESRI World File dành cho file TIFF. Một file Tif muốn mở trong ArcMap để nằm đúng vị trí thì cần phải có file TFW này (tương tự đối với các file ảnh như PNG thì có file PNW, JPEG thì có file JPW,...). Nếu ko có file TFW thì khi mở file Tif bằng ArcMap ảnh sẽ nằm không đúng vị trí địa lý của nó. file TFW chỉ cho ta thông tin nắn ảnh chứ không cung cấp thông tin về hệ tọa đổ của ảnh...Chính ví thế rất bất tiện khi sử dụng do thông tin nằm nhiều file và không tường minh. Trong khi đó theo chuẩn của file GeoTiff thì các file GeoTiff đều chứa thông tin về hệ quy chiếu, hệ tọa độ và vị trí không gian của nó trong file GeoTiff. GeoTiff được coi như là một chuẩn về ảnh viễn thám, ảnh hàng không được hầu hết các ứng dụng client, server xử lý ảnh hỗ trợ. Chính vì thế cần phải chuyển các file tif + tfw sang geotiff.
Công cụ để chuyển: dùng Libgeotiff trong bộ FWTools.

Lệnh chuyển có dạng sau:
geotifcp -e c4854d.tfw -g metageotiff.txt d:\c4854d.tif d:\geo_c4854d.tif

Trong đó :
  • c4854d.tif là file nguồn.
  • geo_c4854d.tif là file đích.
  • c4854d.tfw là file TFW mô tả vị trí không gian của file c4854d.tif.
  • metageotiff.txt là file mô tả về hệ tọa độ của file geotiff cần chuyển.
Ví dụ file c4854d.tfw có nội dung như sau:

2.50000000000000
0.00000000000000
0.00000000000000
-2.50000000000000
472121.25000000000000
1078248.75000000000000

Ví dụ file metageotiff.txt mẫu có dạng như sau:

Geotiff_Information:
Version: 1
Key_Revision: 1.0
Tagged_Information:
ModelTiepointTag (2,3):
0 0 0
499540 1078240 0
ModelPixelScaleTag (1,3):
2.5 2.5 0
End_Of_Tags.
Keyed_Information:
GTModelTypeGeoKey (Short,1): ModelTypeProjected
GTRasterTypeGeoKey (Short,1): RasterPixelIsArea
GeographicTypeGeoKey (Short,1): GCS_WGS_84
GeogLinearUnitsGeoKey (Short,1): Linear_Meter
GeogAngularUnitsGeoKey (Short,1): Angular_Degree
ProjectedCSTypeGeoKey (Short,1): User-Defined
ProjectionGeoKey (Short,1): User-Defined
ProjCoordTransGeoKey (Short,1): CT_TransverseMercator
ProjLinearUnitsGeoKey (Short,1): Linear_Meter
ProjNatOriginLatGeoKey (Double,1): 0
ProjFalseEastingGeoKey (Double,1): 500000
ProjFalseNorthingGeoKey (Double,1): 0
ProjCenterLongGeoKey (Double,1): 105
ProjScaleAtNatOriginGeoKey (Double,1): 0.9996
End_Of_Keys.
End_Of_Geotiff.

Projection Method: CT_TransverseMercator
ProjNatOriginLatGeoKey: 0.000000 ( 0d 0' 0.00"N)
ProjNatOriginLongGeoKey: 105.000000 (105d 0' 0.00"E)
ProjScaleAtNatOriginGeoKey: 0.999600
ProjFalseEastingGeoKey: 500000.000000 m
ProjFalseNorthingGeoKey: 0.000000 m
GCS: 4326/WGS 84
Datum: 6326/World Geodetic System 1984
Ellipsoid: 7030/WGS 84 (6378137.00,6356752.31)
Prime Meridian: 8901/Greenwich (0.000000/ 0d 0' 0.00"E)
Projection Linear Units: 9001/metre (1.000000m)

Corner Coordinates:
Upper Left ( 499540.000, 1078240.000)
Lower Left ( 499540.000, 1049677.500)
Upper Right ( 527902.500, 1078240.000)
Lower Right ( 527902.500, 1049677.500)
Center ( 513721.250, 1063958.750)

Để biết thông tin về ảnh ta có thể dùng lệnh gdalinfo như sau:

gdalinfo d:\c4854d.tif hoặc gdalinfo d:\geo_c4854d.tif sẽ cho các kết quả như sau:

Đối với file c4854d.tif (ko có thông tin không gian) sẽ có các dạng như sau:

D:\FW\bin>gdalinfo d:\c4854d.tif
Driver: GTiff/GeoTIFF
Files: d:\c4854d.tif
Size is 11337, 11433
Coordinate System is `'
Metadata:
TIFFTAG_SOFTWARE=Adobe Photoshop 7.0
TIFFTAG_DATETIME=2009:02:11 14:52:32
TIFFTAG_XRESOLUTION=100
TIFFTAG_YRESOLUTION=100
TIFFTAG_RESOLUTIONUNIT=2 (pixels/inch)
Image Structure Metadata:
INTERLEAVE=PIXEL
Corner Coordinates:
Upper Left ( 0.0, 0.0)
Lower Left ( 0.0,11433.0)
Upper Right (11337.0, 0.0)
Lower Right (11337.0,11433.0)
Center ( 5668.5, 5716.5)
Band 1 Block=11337x1 Type=Byte, ColorInterp=Red
Band 2 Block=11337x1 Type=Byte, ColorInterp=Green
Band 3 Block=11337x1 Type=Byte, ColorInterp=Blue

D:\FW\bin>

Đối với file geo_c4854d.tif sẽ có nội dung thông tin như sau:

D:\FW\bin>gdalinfo d:\geo_c4854d.tif
Driver: GTiff/GeoTIFF
Files: d:\geo_c4854d.tif
Size is 11337, 11433
Coordinate System is:
PROJCS["unnamed",
GEOGCS["WGS 84",
DATUM["WGS_1984",
SPHEROID["WGS 84",6378137,298.257223563,
AUTHORITY["EPSG","7030"]],
AUTHORITY["EPSG","6326"]],
PRIMEM["Greenwich",0],
UNIT["degree",0.0174532925199433],
AUTHORITY["EPSG","4326"]],
PROJECTION["Transverse_Mercator"],
PARAMETER["latitude_of_origin",0],
PARAMETER["central_meridian",105],
PARAMETER["scale_factor",0.9996],
PARAMETER["false_easting",500000],
PARAMETER["false_northing",0],
UNIT["metre",1,
AUTHORITY["EPSG","9001"]]]
Origin = (472120.000000000000000,1078250.000000000000000)
Pixel Size = (2.500000000000000,-2.500000000000000)
Metadata:
TIFFTAG_SOFTWARE=Adobe Photoshop 7.0
TIFFTAG_DATETIME=2009:02:11 14:52:32
TIFFTAG_XRESOLUTION=100
TIFFTAG_YRESOLUTION=100
TIFFTAG_RESOLUTIONUNIT=2 (pixels/inch)
AREA_OR_POINT=Area
Image Structure Metadata:
INTERLEAVE=PIXEL
Corner Coordinates:
Upper Left ( 472120.000, 1078250.000) (104d44'44.88"E, 9d45'15.23"N)
Lower Left ( 472120.000, 1049667.500) (104d44'45.57"E, 9d29'44.56"N)
Upper Right ( 500462.500, 1078250.000) (105d 0'15.18"E, 9d45'15.57"N)
Lower Right ( 500462.500, 1049667.500) (105d 0'15.17"E, 9d29'44.89"N)
Center ( 486291.250, 1063958.750) (104d52'30.20"E, 9d37'30.15"N)
Band 1 Block=11337x1 Type=Byte, ColorInterp=Red
Band 2 Block=11337x1 Type=Byte, ColorInterp=Green
Band 3 Block=11337x1 Type=Byte, ColorInterp=Blue

D:\FW\bin>


Sau khi xử lý chuyển từ dạng TIF thông thường sang dạng GeoTiff chúng ta có thể đọc trực tiếp file geo_c4854d.tif bằng các phần mềm như ArcMap, GIMP,...Ảnh sẽ được hiển thị đúng vị trí và đúng hệ tọa độ đã khai báo trong file c4854d.tfw, metageotiff.txt

Còn một cách nữa để chuyển TIF + TFW sang GeoTiff bằng Gdal_Translate :

gdal_translate -of GTiff -co "PROFILE=GeoTIFF" -co "INTERLEAVE=PIXEL" -co "COMPRESS=LZW" -co "TILED=YES" -a_srs EPSG:4326 raster_with_world_file.tif raster_geotiff.tif

Điều kiện: 3 file sau phải cùng chung một thư mục:
raster_with+World_file.tif : File cần chuyển sang dạng geotiff.
raster_with+World_file.tfw: World file của raster_with+World_file.tif.
raster_with+World_file.prj: File dạng ASCII khai báo hệ tọa độ của raster_with+World_file.tif

Trong đó
raster_with+World_file.prj có dạng như sau:

PROJCS["VN2000-105",
GEOGCS["WGS 84",
DATUM["World Geodetic System 1984",
SPHEROID["WGS_1984", 6378137.0, 298.2572235630115],
TOWGS84[-192.873, -39.382, -111.202, 0.00928836, -0.01975479, 0.00427372, 1.000000252906278],
AUTHORITY["EPSG","6326"]],
PRIMEM["Greenwich", 0.0],
UNIT["degree", 0.017453292519943295],
AXIS["Longitude", EAST],
AXIS["Latitude", NORTH]],
PROJECTION["Transverse_Mercator"],
PARAMETER["central_meridian", 105.0],
PARAMETER["latitude_of_origin", 0.0],
PARAMETER["scale_factor", 0.9996],
PARAMETER["false_easting", 500000.0],
PARAMETER["false_northing", 0.0],
UNIT["m", 1.0],
AXIS["x", EAST],
AXIS["y", NORTH],
AUTHORITY["EPSG","2000105"]]

Lưu ý: GeoTiff không chấp nhận tham số TOWGS84 nên khi re-project ảnh sang WGS84 sẽ bị lệch. Đang đau đầu về vụ này.

Bye!

Không có nhận xét nào:

Đăng nhận xét