<\/HEAD>
Olá a todos,<\/P>
<\/P>
Estou tentando ler algumas informações de um arquivo shape (.shp) e estou enfrentando um pequeno problema quando a função ListFields() tenta ler o arquivo. Aqui neste código, estou passando manualmente o arquivo para verificar.<\/P>
<\/P>
for <\/STRONG><\/SPAN>field <\/SPAN>in <\/STRONG><\/SPAN>arcpy.ListFields(<\/SPAN>"L:<\/STRONG><\/SPAN>\\<\/STRONG><\/SPAN>historical_data<\/STRONG><\/SPAN>\\<\/STRONG><\/SPAN>Elko County<\/STRONG><\/SPAN>\\<\/STRONG><\/SPAN>Elko_Sewer<\/STRONG><\/SPAN>\\<\/STRONG><\/SPAN>Elko_Sewer_Network_DBO_ssLateralLine.shp"<\/STRONG><\/SPAN>😞<\/span><\/SPAN><\/P><\/P>A linha acima lança uma exceção dizendo, Arquivo Não Existe.<\/P>O f = arcpy.ListFeatureClasses() retorna os valores corretos.<\/SPAN><\/PRE>Agora a parte interessante é que este código funciona bem na versão desktop do python. E quando tento executar o mesmo código na versão web, ele retorna o erro acima.<\/SPAN>O código completo da função está abaixo:<\/SPAN><\/SPAN><\/P><\/P>def <\/STRONG><\/SPAN>connectSource(<\/SPAN>self<\/SPAN>, filepath):
<\/SPAN>"""
Conecta a um arquivo e cria uma estrutura de dados dicionário que conterá
classes de feição :ShapeTypes e nomes de campos :Type
"""
<\/EM><\/SPAN>self<\/SPAN>.feature.clear()
listfield = <\/SPAN>list<\/SPAN>()
<\/SPAN>try<\/STRONG><\/SPAN>:
<\/SPAN># define workspace para o arquivo conectado
<\/EM><\/SPAN>arcpy.env.workspace = filepath
<\/SPAN># Obtém lista de todas as feições
<\/EM><\/SPAN>f = arcpy.ListFeatureClasses()
<\/SPAN>print<\/STRONG><\/SPAN>(f)
<\/SPAN>for <\/STRONG><\/SPAN>f1 <\/SPAN>in <\/STRONG><\/SPAN>f:
listfield[:] = []
i = <\/SPAN>0
</span>elif <\/STRONG><\/SPAN>type.ShapeType <\/SPAN>in <\/STRONG><\/SPAN>[<\/SPAN>'Polyline'<\/STRONG><\/SPAN>, <\/SPAN>'Line'<\/STRONG><\/SPAN>]:
<\/SPAN>self<\/SPAN>.feature[f1, type.ShapeType] = hup
<\/SPAN>except <\/STRONG><\/SPAN>Exception as <\/STRONG><\/SPAN>e:
<\/SPAN>print <\/STRONG><\/SPAN>(<\/SPAN>"Arquivo incorreto"<\/STRONG><\/SPAN>+e.message)
tkMessageBox.showerror(<\/SPAN>"Source File Connection"<\/STRONG><\/SPAN>, <\/SPAN>"Falha ao conectar ao arquivo.{0} "<\/STRONG><\/SPAN>.format(e))
<\/SPAN>return <\/STRONG><\/SPAN>0<\/SPAN> <\/SPAN><\/SPAN><\/P><\/P>O mesmo código no formato web está lançando uma exceção de que o arquivo não existe. Enquanto na versão desktop ele roda perfeitamente. <\/SPAN><\/P><\/P>arcpy.ListFields(<\/SPAN>"L:<\/STRONG><\/SPAN>\\<\/STRONG><\/SPAN>historical_data<\/STRONG><\/SPAN>\\<\/STRONG><\/SPAN>Elko County<\/STRONG><\/SPAN>\\<\/STRONG><\/SPAN>Elko_Sewer<\/STRONG><\/SPAN>\\<\/STRONG><\/SPAN>Elko_Sewer_Network_DBO_ssLateralLine.shp")<\/STRONG><\/SPAN> <\/STRONG><\/SPAN><\/SPAN><\/P><\/P>Esta função ListFields() não consegue retornar / ler o valor.<\/SPAN><\/P><\/P>Por favor, me guie onde estou errado.<\/SPAN><\/P><\/P>EDITAR 1:<\/SPAN><\/P><\/P>Estou tentando desenvolver uma aplicação python flask onde quero que este bloco de código seja executado a partir do clique de um botão em um arquivo HTML.<\/P>Então a aplicação está rodando em http:\/\127.0.0.1\5000\<\/A> e uma vez que clico nesse botão a seguinte função é executada.<\/P>A seguinte função é executada ao clicar nesse botão:<\/P>
@app.route<\/SPAN >(<'strong'style='color :green;font -size :9 .0 pt;'>'/open_file'< /strong > , < spanstyle ='font -size :9 .0 pt ; color :#660099;'>methods [<'strong'style='color :green;font -size :9 .0 pt;'>'POST'
])
def open_file():
& nbsp ; & nbsp ; & nbsp ; proce(os.path.abspath(<'strong'style='color :green;font -size :9 .0 pt;'>'uploads/Elko_Sewer' ))
& nbsp ; & nbsp ; & nbsp ; print(<'strong'style='color :green;font -size :9 .0 pt;'>'END OPEN' )
& nbsp ; & nbsp ; & nbsp ; return render_template(<'strong'style='color :green;font -size :9 .0 pt;'>'view.html' )
& nbsp ;
No código acima a função proce() contém todo esse código para ler do arquivo shp.< /p >
& nbsp ;
A parte interessante é que, quando chamo o proce() dentro da função principal da aplicação flask, ele realmente funciona perfeitamente.E antes do depurador ser ativado, ele executa o código e imprime a saída no console do depurador.Estou usando PyCharm para desenvolver e depurar.< /p >
if __name__ == '__main__':
& nbsp ; & nbsp ; & nbsp ; proce(os.path.abspath(<'strong'style='color :green;font -size :9 .0 pt;'>'uploads/Elko_Sewer' ))
& nbsp ; & nbsp ; & nbsp ; app.run(
& nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; debug=True)
Atenciosamente
Priyam
< /body >