import arcpy

# --- 1. NASTAVENÍ PROMĚNNÝCH ---
fc = "accessibilities_sudety" # Tvoje vrstva

# Proměnné pro zdravotnictví
hosp_f = "Hosp_TT"
pharma_f = "Pharma_TT"
docs_f = "Docs_TT"
zdrav_out = "zdravotnictvi"
w_hosp, w_pharma, w_docs = 0.34, 0.33, 0.33

# Proměnné pro školství
primes_f = "PrimeS_TT"
secs_f = "SecS_TT"
skol_out = "skolstvi"
w_primes, w_secs = 0.5, 0.5

# --- 2. ZJIŠTĚNÍ MINIMA A MAXIMA ---
print("Načítám data a hledám nejdelší a nejkratší časy...")

# Malá "zkratka" (funkce), ať nemusíme pětkrát psát ten samý řádek
def get_min_max(field_name):
    vals = [row[0] for row in arcpy.da.SearchCursor(fc, [field_name]) if row[0] is not None]
    return min(vals), max(vals)

hosp_min, hosp_max = get_min_max(hosp_f)
pharma_min, pharma_max = get_min_max(pharma_f)
docs_min, docs_max = get_min_max(docs_f)
primes_min, primes_max = get_min_max(primes_f)
secs_min, secs_max = get_min_max(secs_f)

# --- 3. VÝPOČET A ZÁPIS DO OBOU SLOUPEČKŮ ---
print("Počítám indexy pro zdravotnictví i školství...")

# Řekneme ArcGISu, do jakých sloupců chceme sahat
fields = [hosp_f, pharma_f, docs_f, zdrav_out, primes_f, secs_f, skol_out]

with arcpy.da.UpdateCursor(fc, fields) as cursor:
    for row in cursor:
        # -- A: ZDRAVOTNICTVÍ --
        v_hosp, v_pharma, v_docs = row[0], row[1], row[2]
        
        i_hosp = (hosp_max - v_hosp) / (hosp_max - hosp_min) if hosp_max != hosp_min and v_hosp is not None else 0
        i_pharma = (pharma_max - v_pharma) / (pharma_max - pharma_min) if pharma_max != pharma_min and v_pharma is not None else 0
        i_docs = (docs_max - v_docs) / (docs_max - docs_min) if docs_max != docs_min and v_docs is not None else 0
        
        row[3] = (i_hosp * w_hosp) + (i_pharma * w_pharma) + (i_docs * w_docs)
        
        # -- B: ŠKOLSTVÍ --
        v_primes, v_secs = row[4], row[5]
        
        i_primes = (primes_max - v_primes) / (primes_max - primes_min) if primes_max != primes_min and v_primes is not None else 0
        i_secs = (secs_max - v_secs) / (secs_max - secs_min) if secs_max != secs_min and v_secs is not None else 0
        
        row[6] = (i_primes * w_primes) + (i_secs * w_secs)
        
        # Uložení řádku do tabulky
        cursor.updateRow(row)

print("Hotovo! Sloupečky 'zdravotnictvi' i 'skolstvi' jsou úspěšně vypočítány.")