[OSGeo-Brasil] Passando de 2D para 3D

jorge.destri jorge.destri em labtrans.ufsc.br
Quarta Março 20 14:28:56 PDT 2013


Luiz,

Eu tenho arquivos DEM do SRTM e do ASTER e tenho rotinas que, dados lat
e log, ele me devolve, por interpolação, a elevação.
Meu problema todo está em não conseguir um código python que leia um
shapefile 2D, mude ele para 3D, salvando os dados da elevação.
O que apresentei abaixo, altera a coordenada Z, na memória, mas não
quando persiste o objeto. Ele só persiste se altero lat ou long.

On Wed, 20 Mar 2013 17:53:17 -0300, Luiz Motta <motta.luiz em gmail.com>
wrote:
> Jorge,
> 
> Numa rápida abordagem, acharia conveniente:
> 
> 1) Gerar um DEM
> 2) Para cada vértice, das rodovias, inserir o valor do pixel que
> está no DEM (Z altimetria).
> 
> O trabalho passaria a ter uma função que identifica o pixel que
> está na mesma posição do vértice, e inserir o valor do Z do pixel
> na coordenada 3D.
> 
> Espero que esse abordagem possa ser útil na sua empreitada. 
> 
> Abraços,
> Luiz
> 
> Acho mais viável vc. geral um DEM e fazer o perfil das estradas, 
> 
> Em 20 de março de 2013 13:44, jorge.destri  escreveu:
>  Prezado Luiz,
> 
>  Deixa eu descrever meu problema/necessidade.
>  O laboratório que eu trabalho frequentemente recebe arquivos de
>  rodovias, em formato shapefile, para uso/análise em algum projeto.
>  Porém, na sua quase totalidade, a elevação não está incluída,
> o que
>  inviabiliza determinadas análises.
>  Meu objetivo então é, com base em dados de altimetria de outras
> fontes,
>  transformar as coordenadas do shapefile de 2D para 3D, para futuro
> uso.
>  Vou dar uma olhada nas referências que você citou.
> 
>  On Tue, 19 Mar 2013 18:09:30 -0300, Luiz Motta 
>  wrote:
> 
>> 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  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 [3] [2]
>  >  http://lists.osgeo.org/mailman/listinfo/brasil [4] [3]
>  >
>  >
>  >
>  > Links:
>  > ------
>  > [1] mailto:jorge.destri em labtrans.ufsc.br [5]
>  > [2] mailto:Brasil em lists.osgeo.org [6]
>  > [3] http://lists.osgeo.org/mailman/listinfo/brasil [7]
> 
>  _______________________________________________
>  Brasil mailing list
>  Brasil em lists.osgeo.org [8]
>  http://lists.osgeo.org/mailman/listinfo/brasil [9]
> 
> 
> 
> Links:
> ------
> [1] mailto:jorge.destri em labtrans.ufsc.br
> [2] mailto:motta.luiz em gmail.com
> [3] mailto:Brasil em lists.osgeo.org
> [4] http://lists.osgeo.org/mailman/listinfo/brasil
> [5] mailto:jorge.destri em labtrans.ufsc.br
> [6] mailto:Brasil em lists.osgeo.org
> [7] http://lists.osgeo.org/mailman/listinfo/brasil
> [8] mailto:Brasil em lists.osgeo.org
> [9] http://lists.osgeo.org/mailman/listinfo/brasil



More information about the Brasil mailing list