Redefinir a Elevação do Shapefile no ArcMap
Em algumas situações no ArcMap 10.4, pode ser necessário redefinir a elevação de um shapefile para um valor específico. Um exemplo comum é durante a conversão de shapefiles para arquivos KMZ 3D, onde a elevação dos elementos precisa ser ajustada para garantir uma visualização adequada no Google Earth ou em outras plataformas 3D. Essa configuração permite que os objetos sejam exibidos na altura correta, evitando problemas de alinhamento ou flutuação no terreno.
A abordagem precisa focar no tipo de geometria utilizada. Vamos explicar 2 casos: Pontos e Polígonos.
Caso Pontos
Os pontos possuem uma estrutura geométrica extremamente simples, composta por uma única coordenada (X, Y, Z). Cada ponto é tratado como uma entidade individual e não contém partes ou múltiplos vértices. Quando precisamos redefinir o valor Z de um ponto, o processo é direto: basta acessar a coordenada do ponto e alterar o Z para o valor desejado.
Por exemplo, ao atualizar o valor Z de um shapefile de pontos, cada ponto requer apenas uma única operação para ajustar sua elevação. Isso torna o processamento rápido, mesmo em grandes conjuntos de dados. Além disso, como cada ponto ocupa menos espaço de armazenamento e consome menos recursos computacionais, as operações sobre eles têm impacto mínimo no desempenho.
![Feição do tipo pontos.](https://static.wixstatic.com/media/e65b15_243c96fd55c04fce8191d1d66895b9ac~mv2.png/v1/fill/w_587,h_464,al_c,q_85,enc_avif,quality_auto/e65b15_243c96fd55c04fce8191d1d66895b9ac~mv2.png)
Caso Polígonos
Os polígonos, por outro lado, possuem uma estrutura geométrica mais complexa. Eles são formados por múltiplos vértices conectados, que definem a borda de uma área fechada. Além disso, os polígonos podem conter várias partes, como ilhas ou buracos, e cada parte é composta por sua própria sequência de vértices.
Quando é necessário redefinir o valor Z de um polígono, cada vértice de todas as partes precisa ser acessado e atualizado. Isso significa que, para um único polígono, podem ser necessárias centenas ou até milhares de operações, dependendo da quantidade de vértices e da complexidade da geometria. Essa necessidade de iterar sobre todas as partes e vértices torna o processamento de polígonos mais demorado e consome mais recursos computacionais.
Na conversão de shapefiles de polígonos para KMZ 3D, o ajuste correto do valor Z em todos os vértices é fundamental para garantir que o polígono seja renderizado corretamente no modelo tridimensional. Qualquer vértice sem o ajuste de Z pode causar distorções ou elevações incorretas, prejudicando a visualização e a análise.
![Feição do tipo polígonos.](https://static.wixstatic.com/media/e65b15_0ce2e1ab17c6431a8939735b29c71f12~mv2.png/v1/fill/w_733,h_462,al_c,q_85,enc_avif,quality_auto/e65b15_0ce2e1ab17c6431a8939735b29c71f12~mv2.png)
Redefinir a Elevação do Shapefile para no ArcMap 10.4
Para executar o processo, será necessário abrir o console Python dentro do ArcMap. Certifique-se de que os shapefiles que você deseja modificar já estejam adicionados ao Table of Contents, pois o script fará referência direta às camadas carregadas no projeto.
![Table of Contents](https://static.wixstatic.com/media/e65b15_fd4b9be0e4ff4e3c8a21a7cee11b93ef~mv2.png/v1/fill/w_437,h_360,al_c,q_85,enc_avif,quality_auto/e65b15_fd4b9be0e4ff4e3c8a21a7cee11b93ef~mv2.png)
![Abrir console Python](https://static.wixstatic.com/media/e65b15_276053a5f1b64d32a2a15fd398940026~mv2.jpg/v1/fill/w_498,h_368,al_c,q_80,enc_avif,quality_auto/e65b15_276053a5f1b64d32a2a15fd398940026~mv2.jpg)
Para a camada com geometria pontos, adicione o código abaixo. Troque SuaCamadaDePontos pelo nome da camada. Em row[0] = 0 observamos que redefinimos para Zero.
import arcpy
# Nome da camada carregada no ArcMap. Substitua pelo nome exato da camada
layer_name = "SuaCamadaDePontos"
# Começar uma edição
edit = arcpy.da.Editor(arcpy.env.workspace)
edit.startEditing(False, True)
edit.startOperation()
# Atualizar os valores Z dos pontos
with arcpy.da.UpdateCursor(layer_name, ["SHAPE@Z"]) as cursor:
for row in cursor:
row[0] = 0 # Definir Z como zero
cursor.updateRow(row)
# Finalizar a operação de edição
edit.stopOperation()
edit.stopEditing(True)
print("Todos os valores Z foram definidos para zero.")
Para a camada com geometria polígonos, adicione o código abaixo. Troque SeuShapefilePoligono pelo nome da camada. No caso novamente redefinimos para zero na linha arcpy.Array([arcpy.Point(p.X, p.Y, 0) for p in part if p]).
import arcpy
# Nome da camada carregada. Substitua pelo nome da camada
layer_name = "SeuShapefilePoligono"
# Iniciar uma sessão de edição
edit = arcpy.da.Editor(arcpy.env.workspace)
edit.startEditing(False, True)
edit.startOperation()
# Atualizar os valores Z de todos os vértices para zero
with arcpy.da.UpdateCursor(layer_name, ["SHAPE@"]) as cursor:
for row in cursor:
geometry = row[0]
# Atualizar diretamente os vértices
new_geometry = arcpy.Polygon(
arcpy.Array(
[
arcpy.Array([arcpy.Point(p.X, p.Y, 0) for p in part if p])
for part in geometry
]
),
geometry.spatialReference,
)
row[0] = new_geometry
cursor.updateRow(row)
# Finalizar a edição
edit.stopOperation()
edit.stopEditing(True)
print("Elevação Z redefinida com sucesso para todos os vértices.")
Comprovando
Abra a tabela de atributos e calcule a coordenada Z. O valor de cada feição deverá ser redefinido conforme a necessidade do projeto, podendo ser zero ou qualquer outra elevação específica que atenda ao objetivo desejado.
![Calcular Z](https://static.wixstatic.com/media/e65b15_6930fec35a4b44478046274f7740c6b5~mv2.png/v1/fill/w_834,h_601,al_c,q_90,enc_avif,quality_auto/e65b15_6930fec35a4b44478046274f7740c6b5~mv2.png)
Com o script executado corretamente, os valores de elevação (Z) dos shapefiles serão ajustados conforme necessário, garantindo compatibilidade com visualizações em 3D e outros processos geoespaciais. Esse ajuste é uma etapa fundamental para assegurar a precisão e a qualidade das análises, especialmente ao trabalhar com ferramentas como o Google Earth ou ao preparar dados para modelos tridimensionais. Agora, seus shapefiles estão prontos para atender às exigências do seu projeto com eficiência e profissionalismo.
Gostou do conteúdo? Compartilhe!
Comments