4 votos

python GDAL 'GetDriverByName', argumento 1 de tipo 'char const *'

quiero usar python GDAL convertir algunos de los rásteres de archivos pero no me de error en el crear nuevos archivos de imagen tiff y específico en la línea driver= gdal.GetDriverByName('GTiff')

actualización :

la versión de python 2.7 64 bits

GDAL versión 2020100

os: windows

yo la uso y antes de esta versión y todos funcionan bien código :

inputfile = 'input.tif'
input = gdal.Open(inputfile )
inputProj = input.GetProjection()
inputTrans = input.GetGeoTransform()

referencefile = 'ref.tif'
reference = gdal.Open(referencefile )
referenceProj = reference.GetProjection()
referenceTrans = reference.GetGeoTransform()
bandreference = reference.GetRasterBand(1)
x = reference.RasterXSize
y = reference.RasterYSize


outputfile = tempfile.NamedTemporaryFile(suffix='.tif').name
driver= gdal.GetDriverByName('GTiff')
output = driver.Create(outputfile,x,y,1,bandreference.DataType)
output.SetGeoTransform(referenceTrans)
output.SetProjection(referenceProj)

gdal.ReprojectImage(input,output,inputProj,referenceProj,gdalconst.GRA_Bilinear)

error :

    return _gdal.GetDriverByName(*args)
TypeError: in method 'GetDriverByName', argument 1 of type 'char const *'

actualización 2:

de error que se muestran cuando uso este limas:

from __future__ import absolute_import
from __future__ import unicode_literals

pero lo que yo necesito es debido a que el uso de python 2.7

¿alguna idea de cómo solucionarlo ?

8voto

Lucas Puntos 128

Porque importado unicode_literals, que está pasando una unicode literal a GDAL que está a la espera de una cadena literal.

Así, explícitamente la 'GTiff' arg a un str.

E. g.

>>> from __future__ import unicode_literals
>>> from osgeo import gdal
>>> gdal.GetDriverByName('GTiff')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Temp\conda\envs\test27\lib\site-packages\osgeo\gdal.py", line 3019, in GetDriverByName
    return _gdal.GetDriverByName(*args)
TypeError: in method 'GetDriverByName', argument 1 of type 'char const *'
>>> type('GTiff')
<type 'unicode'>
>>> gdal.GetDriverByName(str('GTiff'))
<osgeo.gdal.Driver; proxy of <Swig Object of type 'GDALDriverShadow *' at 0x0000000002A9ED80> >

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X