[OSGeo-Brasil] Passando de 2D para 3D
jorge.destri
jorge.destri em labtrans.ufsc.br
Terça Março 19 13:23:37 PDT 2013
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.
More information about the Brasil
mailing list