🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

2 total messages Started by Paweł Mon, 27 Dec 2010 10:11
[Python] problem z odczytaniem wartości zmiennych
#12394
Author: Paweł
Date: Mon, 27 Dec 2010 10:11
37 lines
2268 bytes
Witam

Chciałbym się zapytać czy ktoś wie jak można uzyskać (odczytać) wartość
zmiennych użytych jako parametr dla narzędzia Arcgis ? Poniższy skrypt
wyszukuje w tabelce atrybutów,  duplikaty. Zmienne n0 i n1 zwracają po
zakończeniu skryptu wartość 0 zamiast np. 15 w związku z tym ostatnia
instrukcja if nie działa prawidłowo ? Co robię źle lub czego brakuje w tym
kodzie ? Na grupie Pythona nie bardzo potrafiono mi pomóc gdyż sztuczki z
użyciem deklaracji global niestety nie działają ?

n0 = 0
n1 = 0 #liczba znalezionych duplikatów

codeblock = "uniqueList = []\n\
def isDuplicate(inValue):\n\
  if inValue in uniqueList:\n\
      return 1\n\
      n1=n1+1\n\
  else:\n\
    uniqueList.append(inValue)\n\
    return 0\n\
    n0=n0+1"

expression1= "isDuplicate(!ID_DZ!)"

gp.CalculateField_management(Output_Dataset, name_dfield, expression1,
"PYTHON", codeblock)

if n1 > 0:
    gp.AddMessage ("Znaleziono " +str(n1)+ " duplikat(-ów).")
    gp.AddMessage ("Dodano informację o duplikatach(1) lub ich braku(0) w
nowym polu: "+str(name_dfield)+".")
    print gp.getmessages(3)
else:
    gp.AddMessage ("Brak obiektów o zduplikowanych atrybutach we wskazanej
warstwie."+" n1="+str(n1)+", n0="+str(n0))
    print gp.getmessages(4)
Re: [Python] problem z odczytaniem warto ci zmiennych
#12395
Author: Mateusz Loskot
Date: Thu, 06 Jan 2011 18:41
28 lines
1785 bytes
"Pawe" <gamacdur@op.pl> wrote in message 
news:4d18675a$0$2499$65785112@news.neostrada.pl...
> n0 = 0
> n1 = 0 #liczba znalezionych duplikat�w
>
> codeblock = "uniqueList = []\n\
> def isDuplicate(inValue):\n\
>  if inValue in uniqueList:\n\
>      return 1\n\
>      n1=n1+1\n\
>  else:\n\
>    uniqueList.append(inValue)\n\
>    return 0\n\
>    n0=n0+1"


Podejrzane jest to, że funkcja isDuplicate kończy
wykonanie (return 1 lub return 0) przed jakąkolwiek inkrementacją
liczników n1 lub n0. Inaczej, n1 i n0 są zawsze równe Zero.

Nigdy nie używałem skryptów w Pythonie wraz z ArcGIS, więc być
może problem jest specyficzny dla tego środowiska.

Pozdrawiam
-- 
Mateusz Loskot, http://mateusz.loskot.net
pl.comp.lang.c FAQ: http://pl.cpp.wikia.com/wiki/FAQ
C++ FAQ: http://parashift.com/c++-faq-lite 
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads