[OSGeo-Brasil] Passando de 2D para 3D
Luiz Motta
motta.luiz em gmail.com
Terça Março 19 14:09:30 PDT 2013
Jorge,
Vc. está querendo colocar o Z numa camada 2d ?
Acho que vc. está confundindo Multipart, anel interno,... com geometria 3D.
Faça uma revisão nesses conceitos, veja na OGC Single Feature e depois a
API da Gdal/Ogr.
Em 19 de março de 2013 17:23, jorge.destri
<jorge.destri em labtrans.ufsc.br>escreveu:
> Preciso converter o conteúdo de um shapefile de 2D para 3D.
> Na internet, peguei umas dicas e cheguei a esse código python:
>
> from osgeo import ogr
> shapefile = ogr.Open('/home/jorge/temp/**42MUE250GC_SIR.shp', 1)
> layer = shapefile.GetLayer(0)
>
> i = 0
> for feat in layer:
> i += 1
> geom = feat.GetGeometryRef()
>
> #geom.SetCoordinateDimension (3)
>
> ring = geom.GetGeometryRef(0)
> points = ring.GetPointCount()
> #para teste
> if i > 292:
> j = 0
> for p in xrange(points):
> j += 1
> lon, lat, z = ring.GetPoint(p)
> ring.SetPoint( p, 1on, 1at, 5 )
>
> #para confirmar a altereção
> lon, lat, z = ring.GetPoint(p)
> print( i, j, lon, lat, z )
>
> layer.SetFeature(feat)
> shapefile.Destroy()
>
> 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.
> Tentei usar o comando comentado : geom.SetCoordinateDimension (3), mas
> também ele não persiste.
> 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.
>
> Agradeço por qualquer dica.
>
> ______________________________**_________________
> Brasil mailing list
> Brasil em lists.osgeo.org
> http://lists.osgeo.org/**mailman/listinfo/brasil<http://lists.osgeo.org/mailman/listinfo/brasil>
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://lists.osgeo.org/pipermail/brasil/attachments/20130319/5a491521/attachment.html>
More information about the Brasil
mailing list