पायथन का उपयोग करके एक 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 या किसी अन्य रेखापुंज में कैसे बदल सकता हूं?


जीआईएस सॉफ्टवेयर एएसआई को जियोटीफ़ में बदल सकता है। कोई कोडिंग आवश्यक नहीं है। मैं क्यूजीआईएस का उपयोग करता हूं। यह निःशुल्क है।
शाऊल शियरड

जवाबों:


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 cooridanates में शीर्ष-बाएँ कोने के निर्देशांक हैं?
स्लाव


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) को निर्दिष्ट करने का कोई तरीका है?
रटगर्ह

SetProjection और एक स्ट्रिंग का उपयोग करें। आप ओस से तार प्राप्त कर सकते हैं। देखें उत्तर संपादित करें।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.