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>    &#39;&#39;&#39;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.&#39;&#39;&#39;</div>
<div>    # ligar-me a base de dados</div><div>    conn = psycopg2.connect(&quot;dbname=&#39;*****************&#39; user=&#39;*****************&#39; host=&#39;localhost&#39; password=&#39;*****************&#39;&quot;)</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:] == &#39;jpg&#39; or ficheiro[-3:] == &#39;png&#39;:</div>
<div>            # saber o numero de colunas e filas da imagem</div><div>            img = pasta_entrada+&#39;/&#39;+ficheiro</div><div>            saida = pasta_saida+&#39;/&#39;+ficheiro[:-4]+&#39;_geo.tif&#39;</div><div>
            ext = ficheiro[-3:].lower()</div><div>            dataset = gdal.Open(img, gdal.GA_ReadOnly)</div><div>            if dataset is None:</div><div>                print &#39;nao foi possivel carregar a imagem&#39;</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(&quot;select st_astext(geom),st_astext(st_centroid(geom)) from sch_sig.es_hojas_1_50000 where hoja=&#39;%s&#39;;&quot; % numero)</div><div>            linhas = cur.fetchall()</div><div>            for linha in linhas:</div>
<div>                vertices  = linha[0].replace(&#39;MULTIPOLYGON(((&#39;, &#39;&#39;).replace(&#39;)))&#39;,&#39;&#39;)</div><div>                centroide = linha[1].replace(&#39;POINT(&#39;, &#39;&#39;).replace(&#39;)&#39;,&#39;&#39;)</div>
<div>                # vertices</div><div>                for vertice in vertices.split(&#39;,&#39;):</div><div>                    x = vertice.split(&#39; &#39;)[0]</div><div>                    y = vertice.split(&#39; &#39;)[1]</div>
<div>                    # superior esquerdo</div><div>                    if float(x) &lt; float(centroide.split(&#39; &#39;)[0])-10000 and float(y) &gt; float(centroide.split(&#39; &#39;)[1])+8000:</div><div>                        se = x + &#39; &#39; + y</div>
<div>                    # superior direito</div><div>                    if float(x) &gt; float(centroide.split(&#39; &#39;)[0])+10000 and float(y) &gt; float(centroide.split(&#39; &#39;)[1])+8000:</div><div>                        sd = x + &#39; &#39; + y</div>
<div>                    # inferior direito</div><div>                    if float(x) &gt; float(centroide.split(&#39; &#39;)[0])+10000 and float(y) &lt; float(centroide.split(&#39; &#39;)[1])-8000:</div><div>                        id = x + &#39; &#39; + y</div>
<div>                    # inferior esquerdo</div><div>                    if float(x) &lt; float(centroide.split(&#39; &#39;)[0])-10000 and float(y) &lt; float(centroide.split(&#39; &#39;)[1])-8000:</div><div>                        ie = x + &#39; &#39; + y</div>
<div>            # geo referenciacao</div><div>            os.system(&#39;gdal_translate -of GTiff -gcp 0 0 %s -gcp %s 0 %s -gcp %s %s %s -gcp 0 %s %s %s %s&#39; %(se,c,sd,c,l,id,l,ie,img,(img[:-4]+&#39;_t.tif&#39;)))</div>
<div>            os.system(&#39;gdalwarp -of GTiff -co COMPRESS=LZW -co PREDICTOR=2 -dstnodata 0 -t_srs EPSG:23030 %s %s&#39; %((img[:-4]+&#39;_t.tif&#39;),saida))</div><div>            os.system(&#39;rm %s&#39; % (img[:-4]+&#39;_t.tif&#39;))</div>
<div>            # actualizar a base de dados</div><div>            cur.execute(&quot;update sch_sig.es_hojas_1_50000 set sup_izq    = &#39;%s&#39; where hoja = &#39;%s&#39;;&quot; % (se,numero))</div><div>            cur.execute(&quot;update sch_sig.es_hojas_1_50000 set sup_der    = &#39;%s&#39; where hoja = &#39;%s&#39;;&quot; % (sd,numero))</div>
<div>            cur.execute(&quot;update sch_sig.es_hojas_1_50000 set inf_der    = &#39;%s&#39; where hoja = &#39;%s&#39;;&quot; % (id,numero))</div><div>            cur.execute(&quot;update sch_sig.es_hojas_1_50000 set inf_izq    = &#39;%s&#39; where hoja = &#39;%s&#39;;&quot; % (ie,numero))</div>
<div>            cur.execute(&quot;update sch_sig.es_hojas_1_50000 set raster     = &#39;t&#39;  where hoja = &#39;%s&#39;;&quot; % numero)</div><div>            cur.execute(&quot;update sch_sig.es_hojas_1_50000 set raster_col = %i   where hoja = &#39;%s&#39;;&quot; % (c,numero))</div>
<div>            cur.execute(&quot;update sch_sig.es_hojas_1_50000 set raster_lin = %i   where hoja = &#39;%s&#39;;&quot; % (l,numero))</div><div>            conn.commit()</div><div>            print &#39;\n&#39;,numero,&#39;ok \n&#39;</div>
<div>    conn.close()</div><div>    return</div><div><br></div><div>gdal_georeferenciar_mapas_50K(&#39;/home/user/Geo/tmp/input/&#39;, &#39;/home/user/Geo/tmp/output/&#39;)</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">&lt;<a href="mailto:pedrongvenancio@yahoo.com">pedrongvenancio@yahoo.com</a>&gt;</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>&lt;<a href="mailto:legio.patria@gmail.com" target="_blank">legio.patria@gmail.com</a>&gt;</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 &quot;Configurações&quot;.<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>