Módulo 4 - Aula 2
Citação de Henrique Bocalon em 26 de maio de 2023, 17:31Boa 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
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
Citação de Henrique Bocalon em 26 de maio de 2023, 17:34import 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")
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")
Citação de Geo Sem Fronteiras em 2 de junho de 2023, 13:26Olá 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:
- Importamos o módulo
os
separadamente.- Corrigimos a indentação para garantir que o código seja executado corretamente.
- Utilizamos o bloco
with
para garantir o fechamento adequado dos arquivos e evitar vazamentos de recursos.- Corrigimos a linha onde se acessa o projeto atual (
arcpy.mp.ArcGISProject('Current')
) para utilizar o métodoArcGISProject
com o parâmetro"CURRENT"
.- Corrigimos a linha onde se acessa o painel de camadas (TOC) para utilizar a variável correta (
toc
foi substituído porm
).- Utilizamos o método
addLayer
da variávelmapa
(instância dearcpy.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.
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:
- Importamos o módulo
os
separadamente. - Corrigimos a indentação para garantir que o código seja executado corretamente.
- Utilizamos o bloco
with
para garantir o fechamento adequado dos arquivos e evitar vazamentos de recursos. - Corrigimos a linha onde se acessa o projeto atual (
arcpy.mp.ArcGISProject('Current')
) para utilizar o métodoArcGISProject
com o parâmetro"CURRENT"
. - Corrigimos a linha onde se acessa o painel de camadas (TOC) para utilizar a variável correta (
toc
foi substituído porm
). - Utilizamos o método
addLayer
da variávelmapa
(instância dearcpy.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.
Citação de Henrique Bocalon em 12 de junho de 2023, 14:50Olá, boa tarde!
Agradeço o retorno, infelizmente não rodou, segue o print do erro..
Ps: estou usando ArcGIS Pro
Olá, boa tarde!
Agradeço o retorno, infelizmente não rodou, segue o print do erro..
Ps: estou usando ArcGIS Pro
Arquivos enviados:Citação de Geo Sem Fronteiras em 20 de junho de 2023, 16:03Olá 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.
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.
Citação de Henrique Bocalon em 22 de junho de 2023, 16:45raceback (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’
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’
Citação de Geo Sem Fronteiras em 23 de junho de 2023, 13:19Olá 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:
- O nome do módulo é
arcpy
, e nãoarcpy.mp
. Portanto, não é necessário usararcpy.mp.Layer
.- 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.
Olá Henrique, tudo bem?
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:
- O nome do módulo é
arcpy
, e nãoarcpy.mp
. Portanto, não é necessário usararcpy.mp.Layer
. - 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.
Citação de Geo Sem Fronteiras em 22 de agosto de 2023, 11:40Olá 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")
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")