Python을 사용하여 ASCII 그리드 파일을 GeoTIFF로 변환 하시겠습니까?


11

ASCII 그리드 래스터 형식 파일이 있습니다. 예를 들면 다음과 같습니다.

ncols 480
nrows 450
xllcorner 378923
yllcorner 4072345
cellsize 30
nodata_value -32768
43 2 45 7 3 56 2 5 23 65 34 6 32 54 57 34 2 2 54 6 
35 45 65 34 2 6 78 4 2 6 89 3 2 7 45 23 5 8 4 1 62 ...

파이썬을 사용하여 TIFF 또는 다른 래스터로 변환하려면 어떻게해야합니까?


GIS 소프트웨어는 asci를 geotiff로 변환 할 수 있습니다. 코딩이 필요하지 않습니다. QGIS를 사용합니다. 무료입니다.
Saul Sheard

답변:


13

의사 코드 버전 :

import gdal
import numpy

create the gdal output file as geotiff
set the no data value
set the geotransform 

numpy.genfromtxt('your file', numpy.int8) #looks like int from you example
reshape your array to the shape you need

write out the array.

여기에서 도움이 될 샘플 :

if __name__ == '__main__':
    # Import libs
    import numpy, os
    from osgeo import osr, gdal

    # Set file vars
    output_file = "out.tif"

    # Create gtif
    driver = gdal.GetDriverByName("GTiff")
    dst_ds = driver.Create(output_file, 174, 115, 1, gdal.GDT_Byte )
    raster = numpy.zeros( (174, 115) )

    # top left x, w-e pixel resolution, rotation, top left y, rotation, n-s pixel resolution
    dst_ds.SetGeoTransform( [ 14.97, 0.11, 0, -34.54, 0, 0.11 ] )

    # set the reference info 
    srs = osr.SpatialReference()
    srs.SetWellKnownGeogCS("WGS84")
    dst_ds.SetProjection( srs.ExportToWkt() )

    # write the band
    dst_ds.GetRasterBand(1).WriteArray(raster)

값 14.97과 -34.54는 WGS84 코디네이 데이트의 왼쪽 상단 좌표입니까?
Slava


7

파일이 AAIGrid이고 GTiff가 CreateCopy ()를 지원하므로 복사본 만들기가 더 쉬울 수 있습니다.

from osgeo import gdal, osr
drv = gdal.GetDriverByName('GTiff')
ds_in = gdal.Open('in.asc')
ds_out = drv.CreateCopy('out.tif', ds_in)
srs = osr.SpatialReference()
srs.ImportFromEPSG(4326)
ds_out.SetProjection(srs.ExportToWkt())
ds_in = None
ds_out = None

CreateCopy를 지원하는 모든 드라이버가이를 사용할 수 있습니다.


파이썬을 사용할 필요가 없다면 바나나 피쉬가 옳습니다.

정말 고마워요! 입력 한 .asc 파일에 CRS가 없습니다. 래스터를 작성하기 전에이 CRS (GCS WGS 84)를 지정하는 방법이 있습니까?
RutgerH 2016

SetProjection과 문자열을 사용하십시오. osr에서 문자열을 얻을 수 있습니다. 답변 편집을 참조하십시오.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.