fbpx
Caminho de navegação do fórum - Você está aqui:ComunidadePython com ArcGIS: Python com ArcGISMódulo 4 - Aula 2
Please or Cadastrar to create posts and topics.

Módulo 4 - Aula 2

Boa tarde,

Estou desenvolvendo o código que utilizamos na aula 2 do módulo 4. Porém como estou fazendo no PRO estou tendo algumas dificuldades, em função de mudanças na sintaxe como as descritas no link a seguir: https://pro.arcgis.com/en/pro-app/latest/arcpy/mapping/migratingfrom10xarcpymapping.htm

Fiz essas substituições e consegui baixar o arquivo .zip e extrair, porém na hora de criar um layer aparece a mensagem em anexo:

Poderiam me auxiliar em como seguir? Coloco em outro comentário meu codigo.

Desde já agradeço

import os
import arcpy
import urllib.request
import zipfile

#parametros de entrada da unidade de federação
uf = arcpy.GetParameterAsText(0)

#definicao da pasta de saida do arquivo
arquivo = arcpy.GetParameterAsText(1)
arquivo = os.path.join(arquivo,uf +'.zip')

#pasta de saida
pasta = os.path.dirname(arquivo)

#Endereço do dado
url = 'https://app.anm.gov.br/dadosabertos/SIGMINE/PROCESSOS_MINERARIOS/'
url = url + uf +'.zip'
arcpy.AddMessage('Baixando o Arquivo')

#acessando o site

getdata = urllib.request.urlopen(url)
with open(arquivo,'wb') as outfile:
outfile.write(getdata.read())

#descompactando o arquivo
zipfile.ZipFile(arquivo).extractall(pasta)

#acessando o mxd corrente
arcpy.mp.ArcGISProject('Current')

#acessando o painel de camadas (TOC)
p = arcpy.mp.ArcGISProject("CURRENT")
m = p.listMaps("*")[0]

#criando um layer
lyr = arcpy.mp.Layer(arquivo.replace('.zip','.shp'))

#Adicionando o arquivo ao ArcMap
arcpy.mapping.AddLayer(toc,lyr,"TOP")

Olá Henrique, tudo bem?

Há algumas correções que podem ser feitas no código fornecido. Aqui está o código corrigido:

import os
import arcpy
import urllib.request
import zipfile

# Parâmetros de entrada da unidade de federação
uf = arcpy.GetParameterAsText(0)

# Definição da pasta de saída do arquivo
arquivo = arcpy.GetParameterAsText(1)
arquivo = os.path.join(arquivo, uf + '.zip')

# Pasta de saída
pasta = os.path.dirname(arquivo)

# Endereço do dado
url = 'https://app.anm.gov.br/dadosabertos/SIGMINE/PROCESSOS_MINERARIOS/'
url = url + uf + '.zip'
arcpy.AddMessage('Baixando o Arquivo')

# Acessando o site
getdata = urllib.request.urlopen(url)
with open(arquivo, 'wb') as outfile:
outfile.write(getdata.read())

# Descompactando o arquivo
with zipfile.ZipFile(arquivo, 'r') as zip_ref:
zip_ref.extractall(pasta)

# Acessando o mxd corrente
aprx = arcpy.mp.ArcGISProject("CURRENT")
mapa = aprx.listMaps("*")[0]

# Criando um layer
lyr = arcpy.mp.Layer(arquivo.replace('.zip', '.shp'))

# Adicionando o arquivo ao ArcGIS Pro
mapa.addLayer(lyr, "TOP")

 

Aqui estão as alterações feitas:

  1. Importamos o módulo os separadamente.
  2. Corrigimos a indentação para garantir que o código seja executado corretamente.
  3. Utilizamos o bloco with para garantir o fechamento adequado dos arquivos e evitar vazamentos de recursos.
  4. Corrigimos a linha onde se acessa o projeto atual (arcpy.mp.ArcGISProject('Current')) para utilizar o método ArcGISProject com o parâmetro "CURRENT".
  5. Corrigimos a linha onde se acessa o painel de camadas (TOC) para utilizar a variável correta (toc foi substituído por m).
  6. Utilizamos o método addLayer da variável mapa (instância de arcpy.mp.ArcGISProject) para adicionar a camada ao ArcGIS Pro.

Essas alterações devem ajudar a resolver o código corretamente. Certifique-se de fornecer os parâmetros adequados ao executar o script.

 

Em caso de dúvidas é só falar!

Um abraço,

Equipe Geo Sem Fronteiras.

Henrique Bocalon has reacted to this post.
Henrique Bocalon

Olá, boa tarde!

Agradeço o retorno, infelizmente não rodou, segue o print do erro..

Ps: estou usando ArcGIS Pro

Arquivos enviados:
  • error.png

Olá Henrique, tudo bem?

Por favor, se possível, consegue enviar esse erro de forma escrita? Fica melhor para verificação do erro e correção.

Um abraço,

Equipe Geo Sem Fronteiras.

 

raceback (most recent call last):
File "C: \Curso_Python_Arcgis\modulo_04_arcpy\SCRIPS\PRATICA01.1.py",line 38, in <module>
lyr = arcpy.mp.Layer(arquivo.replace ('.zip',
'„shp' ))
AttributeError: module 'arcpy.mp' has no attribute
‘Laver’

Olá Henrique, tudo bem?

Certamente! Parece que há alguns erros no trecho de código que você forneceu. Vou corrigi-los para você:

import arcpy

arquivo = 'arquivo.zip'
arquivo_shp = arquivo.replace('.zip', '.shp')

lyr = arcpy.MakeFeatureLayer_management(arquivo_shp, "LayerName")

Aqui estão as correções feitas:

  1. O nome do módulo é arcpy, e não arcpy.mp. Portanto, não é necessário usar arcpy.mp.Layer.
  2. O método MakeFeatureLayer_management é usado para criar uma camada a partir de um arquivo shapefile. Passe o nome do arquivo shapefile (arquivo_shp) como o primeiro argumento e forneça um nome para a camada ("LayerName" neste exemplo).

Certifique-se de ajustar os nomes dos arquivos e as opções de nome da camada de acordo com suas necessidades. Espero que isso ajude!

Um abraço,

Equipe Geo Sem Fronteiras.

Henrique Bocalon has reacted to this post.
Henrique Bocalon

Olá Henrique, tudo bem?

Aqui está a retificação da resposta anterior, com a solução:

Faça os seguintes ajustes:
- Na linha “Criando layer”, substiuia o valor :lyr = arcpy.mp.Layer(arquivo.replace('.zip', '.shp')) por lyr = arcpy.MakeFeatureLayer_management(arquivo , uf)

O código ficaria da seguinte forma:

import os
import arcpy
import urllib.request
import zipfile
# Parâmetros de entrada da unidade de federação
uf = arcpy.GetParameterAsText(0)
# Definição da pasta de saída do arquivo
arquivo = arcpy.GetParameterAsText(1)
arquivo = os.path.join(arquivo, uf + '.zip')
# Pasta de saída
pasta = os.path.dirname(arquivo)
# Endereço do dado
url = 'https://app.anm.gov.br/dadosabertos/SIGMINE/PROCESSOS_MINERARIOS/'
url = url + uf + '.zip'
arcpy.AddMessage('Baixando o Arquivo')
# Acessando o site
getdata = urllib.request.urlopen(url)
with open(arquivo, 'wb') as outfile:
outfile.write(getdata.read())
# Descompactando o arquivo
with zipfile.ZipFile(arquivo, 'r') as zip_ref:
zip_ref.extractall(pasta)
# Acessando o mxd corrente
aprx = arcpy.mp.ArcGISProject("CURRENT")
mapa = aprx.listMaps("*")[0]
# Criando um layer
lyr = arcpy.MakeFeatureLayer_management(arquivo , uf)
# Adicionando o arquivo ao ArcGIS Pro
mapa.addLayer(lyr, "TOP")

[activecampaign]