[OSGeo-Brasil] Passando de 2D para 3D
Daniel Araujo Miranda
miranda.dam em dpf.gov.br
Quarta Março 20 11:33:08 PDT 2013
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