[OSGeo-Brasil] Passando de 2D para 3D
jorge.destri
jorge.destri em labtrans.ufsc.br
Quarta Março 20 13:33:09 PDT 2013
Miranda,
Cada ponto poderá ter uma elevação diferente, pois dependerá da
consulta na base de altimetria.
Quanto aos '1" (uns) é um produto de um monte de testes e copy/past mal
feitos. Você tem razão, no original está com a letra "l".
On Wed, 20 Mar 2013 15:33:08 -0300, Daniel Araujo Miranda
<miranda.dam em dpf.gov.br> wrote:
> Olá Jorge,
> Essa elevação é igual para toda a estrada ou é diferente para cada
> ponto da estrada?
>
> A propósito, tem uma coisa estranha no seu código. Na parte
> "ring.SetPoint( p, 1on, 1at, 5 )" você está usando o numeral um (1) ao
> invés da letra "éle" (l) nas variáveis 'lon' e 'lat'.
>
> --Miranda
>
>
>
> On 20-03-2013 13:44, jorge.destri wrote:
>> 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 <motta.luiz em gmail.com>
>> 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 [2]
>>> http://lists.osgeo.org/mailman/listinfo/brasil [3]
>>>
>>>
>>>
>>> Links:
>>> ------
>>> [1] mailto:jorge.destri em labtrans.ufsc.br
>>> [2] mailto:Brasil em lists.osgeo.org
>>> [3] http://lists.osgeo.org/mailman/listinfo/brasil
>>
>> _______________________________________________
>> Brasil mailing list
>> Brasil em lists.osgeo.org
>> http://lists.osgeo.org/mailman/listinfo/brasil
>>
More information about the Brasil
mailing list