Já à algum tempo fiz um <i>script</i> em <i>Python</i> para fazer isso.<div>Seguramente terás de o modificar para que funcione correctamente no teu entorno.</div><div>Sorte,</div><div><br></div><div><div>def gdal_georeferenciar_mapas_50K(pasta_entrada, pasta_saida):</div>
<div> '''Georeferenciar os mapas 1:50 000 com base na cartografia vectorial</div><div> com a delemitacao dos mapas. Com postgis ler as coordenadas das </div><div> esquinas de cada poligono e depois com gdal georeferenciar a imagem.'''</div>
<div> # ligar-me a base de dados</div><div> conn = psycopg2.connect("dbname='*****************' user='*****************' host='localhost' password='*****************'")</div>
<div> cur = conn.cursor()</div><div> # listar mapas</div><div> ficheiros = os.listdir(pasta_entrada)</div><div> for ficheiro in ficheiros:</div><div> if ficheiro[-3:] == 'jpg' or ficheiro[-3:] == 'png':</div>
<div> # saber o numero de colunas e filas da imagem</div><div> img = pasta_entrada+'/'+ficheiro</div><div> saida = pasta_saida+'/'+ficheiro[:-4]+'_geo.tif'</div><div>
ext = ficheiro[-3:].lower()</div><div> dataset = gdal.Open(img, gdal.GA_ReadOnly)</div><div> if dataset is None:</div><div> print 'nao foi possivel carregar a imagem'</div>
<div> c = dataset.RasterXSize</div><div> l = dataset.RasterYSize</div><div> # numero do mapa</div><div> numero = ficheiro[18:22]</div><div> # consulta dos vertices com PostGIS</div>
<div> cur.execute("select st_astext(geom),st_astext(st_centroid(geom)) from sch_sig.es_hojas_1_50000 where hoja='%s';" % numero)</div><div> linhas = cur.fetchall()</div><div> for linha in linhas:</div>
<div> vertices = linha[0].replace('MULTIPOLYGON(((', '').replace(')))','')</div><div> centroide = linha[1].replace('POINT(', '').replace(')','')</div>
<div> # vertices</div><div> for vertice in vertices.split(','):</div><div> x = vertice.split(' ')[0]</div><div> y = vertice.split(' ')[1]</div>
<div> # superior esquerdo</div><div> if float(x) < float(centroide.split(' ')[0])-10000 and float(y) > float(centroide.split(' ')[1])+8000:</div><div> se = x + ' ' + y</div>
<div> # superior direito</div><div> if float(x) > float(centroide.split(' ')[0])+10000 and float(y) > float(centroide.split(' ')[1])+8000:</div><div> sd = x + ' ' + y</div>
<div> # inferior direito</div><div> if float(x) > float(centroide.split(' ')[0])+10000 and float(y) < float(centroide.split(' ')[1])-8000:</div><div> id = x + ' ' + y</div>
<div> # inferior esquerdo</div><div> if float(x) < float(centroide.split(' ')[0])-10000 and float(y) < float(centroide.split(' ')[1])-8000:</div><div> ie = x + ' ' + y</div>
<div> # geo referenciacao</div><div> os.system('gdal_translate -of GTiff -gcp 0 0 %s -gcp %s 0 %s -gcp %s %s %s -gcp 0 %s %s %s %s' %(se,c,sd,c,l,id,l,ie,img,(img[:-4]+'_t.tif')))</div>
<div> os.system('gdalwarp -of GTiff -co COMPRESS=LZW -co PREDICTOR=2 -dstnodata 0 -t_srs EPSG:23030 %s %s' %((img[:-4]+'_t.tif'),saida))</div><div> os.system('rm %s' % (img[:-4]+'_t.tif'))</div>
<div> # actualizar a base de dados</div><div> cur.execute("update sch_sig.es_hojas_1_50000 set sup_izq = '%s' where hoja = '%s';" % (se,numero))</div><div> cur.execute("update sch_sig.es_hojas_1_50000 set sup_der = '%s' where hoja = '%s';" % (sd,numero))</div>
<div> cur.execute("update sch_sig.es_hojas_1_50000 set inf_der = '%s' where hoja = '%s';" % (id,numero))</div><div> cur.execute("update sch_sig.es_hojas_1_50000 set inf_izq = '%s' where hoja = '%s';" % (ie,numero))</div>
<div> cur.execute("update sch_sig.es_hojas_1_50000 set raster = 't' where hoja = '%s';" % numero)</div><div> cur.execute("update sch_sig.es_hojas_1_50000 set raster_col = %i where hoja = '%s';" % (c,numero))</div>
<div> cur.execute("update sch_sig.es_hojas_1_50000 set raster_lin = %i where hoja = '%s';" % (l,numero))</div><div> conn.commit()</div><div> print '\n',numero,'ok \n'</div>
<div> conn.close()</div><div> return</div><div><br></div><div>gdal_georeferenciar_mapas_50K('/home/user/Geo/tmp/input/', '/home/user/Geo/tmp/output/')</div><div><br></div><div><br></div><div><br clear="all">
Eloi Ribeiro<br>GIS Analyst<br>39,45º -4,40º<br><a href="http://eloiribeiro.wordpress.com">http://eloiribeiro.wordpress.com</a><br>
<br><br><div class="gmail_quote">2010/12/10 Pedro Venâncio <span dir="ltr"><<a href="mailto:pedrongvenancio@yahoo.com">pedrongvenancio@yahoo.com</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<table cellspacing="0" cellpadding="0" border="0"><tbody><tr><td valign="top" style="font:inherit">Orlando,<br><br>Não conheço uma ferramenta que faça isso, mas uma forma de contornar a situação é obter as coordenadas da grelha e o tamanho da imagem, e atribuir os srcX, srcY, dstX, dstY manualmente.<br>
<br>Por exemplo, o canto superior esquerdo da imagem:<br>srcX: 0<br>srcY: 0<br>dstX: coordenada X retirada dos cantos da grelha<br>dstY: coordenada Y retirada dos cantos da grelha<br><br><br>Abraço,<br>Pedro Venâncio<br><br>
<br><br>--- On <b>Thu, 12/9/10, legiopatrianostra <i><<a href="mailto:legio.patria@gmail.com" target="_blank">legio.patria@gmail.com</a>></i></b> wrote:<br><blockquote style="border-left:2px solid rgb(16, 16, 255);margin-left:5px;padding-left:5px">
<br><br><div>Boa tarde a todos,<br><br>Estou a georeferenciar algumas imagens raster, com o Qgis Trunk 1.7.0, e gostaria de saber se existe algum plugin, que faça um snapping aos vértices das imagens?.<br><br>Tenho
uma grelha em formato shape, e queria que as imagens ficassem ajustadas correctamente com as grelhas.<br>
<br>Sei que o snapping existe para ficheiros vectoriais, bastando para isso aceder ao menu "Configurações".<br><br>Se alguém me puder ajudar, agradeço desde já.<br><br>Orlando Bernardo<br clear="all"><br>-- <br>
<b><span style="font-size:24pt;font-family:Webdings;color:green" lang="EN-US"><img src="http://img51.imageshack.us/img51/2228/ecoj.jpg"></span></b><span style="font-size:10pt;color:green" lang="EN-US"> </span><span style="font-size:7.5pt;color:green">Antes de imprimir
este e-mail pense bem se é mesmo necessário fazê-lo: O meio
ambiente é de todos.</span><br><br>
</div><br>-----Inline Attachment Follows-----<br><br><div>_______________________________________________<br>Portugal mailing list<br><a href="http://mc/compose?to=Portugal@lists.osgeo.org" target="_blank">Portugal@lists.osgeo.org</a><br>
<a href="http://lists.osgeo.org/mailman/listinfo/portugal" target="_blank">http://lists.osgeo.org/mailman/listinfo/portugal</a><br></div></blockquote></td></tr></tbody></table><br>
<br>_______________________________________________<br>
Portugal mailing list<br>
<a href="mailto:Portugal@lists.osgeo.org">Portugal@lists.osgeo.org</a><br>
<a href="http://lists.osgeo.org/mailman/listinfo/portugal" target="_blank">http://lists.osgeo.org/mailman/listinfo/portugal</a><br>
<br></blockquote></div><br></div></div>