<div>Jorge,</div><div><br></div>Vc. está querendo colocar o Z numa camada 2d ?<div><br></div><div>Acho que vc. está confundindo Multipart, anel interno,... com geometria 3D.</div><div><br></div><div>Faça uma revisão nesses conceitos, veja na OGC Single Feature e depois a API da Gdal/Ogr.</div>
<div><br><br><div class="gmail_quote">Em 19 de março de 2013 17:23, jorge.destri <span dir="ltr"><<a href="mailto:jorge.destri@labtrans.ufsc.br" target="_blank">jorge.destri@labtrans.ufsc.br</a>></span> escreveu:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Preciso converter o conteúdo de um shapefile de 2D para 3D.<br>
Na internet, peguei umas dicas e cheguei a esse código python:<br>
<br>
from osgeo import ogr<br>
shapefile = ogr.Open('/home/jorge/temp/<u></u>42MUE250GC_SIR.shp', 1)<br>
layer = shapefile.GetLayer(0)<br>
<br>
i = 0<br>
for feat in layer:<br>
   i += 1<br>
   geom = feat.GetGeometryRef()<br>
<br>
   #geom.SetCoordinateDimension (3)<br>
<br>
   ring = geom.GetGeometryRef(0)<br>
   points = ring.GetPointCount()<br>
   #para teste<br>
   if i > 292:<br>
       j = 0<br>
       for p in xrange(points):<br>
           j += 1<br>
           lon, lat, z = ring.GetPoint(p)<br>
           ring.SetPoint( p, 1on, 1at, 5 )<br>
<br>
           #para confirmar a altereção<br>
           lon, lat, z = ring.GetPoint(p)<br>
           print( i, j, lon, lat, z )<br>
<br>
           layer.SetFeature(feat)<br>
shapefile.Destroy()<br>
<br>
Na execução ele mostra os pontos alterados com elevação 5, mas quando executo novamente, a coordenada Z está zerada. Se altero a longitude ou a latitude a mudança persiste.<br>
Tentei usar o comando comentado : geom.SetCoordinateDimension (3), mas também ele não persiste.<br>
Acredito que talvez tenha que mudar a geometria para wkbLineString25D ou wkbMultiPoint25D ou wkbMultiLineString25D ou wkbMultiPolygon25D ou wkbPoint25D conforme o tipo 2D, porém não encontro um método que faça isso.<br>
<br>
Agradeço por qualquer dica.<br>
<br>
______________________________<u></u>_________________<br>
Brasil mailing list<br>
<a href="mailto:Brasil@lists.osgeo.org" target="_blank">Brasil@lists.osgeo.org</a><br>
<a href="http://lists.osgeo.org/mailman/listinfo/brasil" target="_blank">http://lists.osgeo.org/<u></u>mailman/listinfo/brasil</a><br>
</blockquote></div><br></div>