#-------------------------------------------------------------------------------
# -*- coding: utf-8 -*-
# Príloha X k diplomovej práci s názvom APLIKÁCIA VYHĽADÁVANIA KOLOKAČNÝCH VZOROV NA PRIESTOROVÉ DÁTA, Simona BUČKOVÁ
# Vedúca práce: doc. Ing. Zdena Dobešová, Ph.D.
# Katedra geoinformatiky, Palackého Univerzita v Olomouci, Olomouc 2022
# syntax z nápovedy na odkaze: https://pro.arcgis.com/en/pro-app/2.8/tool-reference/spatial-statistics/colocationanalysis.htm#GUID-7C6019C9-C504-4086-9CD7-6A411C9293AD
#-------------------------------------------------------------------------------
import arcpy
from sys import argv

arcpy.env.overwriteOutput = False

# cesta k dátam uložených v PC
arcpy.env.workspace=r"C:\Users\Lenovo\OneDrive - Univerzita Palackého v Olomouci\Dokumenty\Diplomovka\Skript\Test"


# Proces: Colocation Analysis:

# Typ vstupu
intype=arcpy.GetParameterAsText(0)
intype = "DATASETS_WITHOUT_CATEGORIES"
##intype="SINGLE_DATASET"
##intype="TWO_DATASETS"

# Vstupné prvky záujmu
# Parameter alebo cesta k dátam uložených v PC
infc_interest=arcpy.GetParameterAsText(1)
##infc_interest = r"C:\Users\Lenovo\OneDrive - Univerzita Palackého v Olomouci\Dokumenty\Diplomovka\Skript\Shp"

# Výstupné prvky (kolokačný vzor)
# Parameter alebo cesta k dátam uložených v PC
outfc=arcpy.GetParameterAsText(2)
outfc = r"C:\Users\Lenovo\OneDrive - Univerzita Palackého v Olomouci\Dokumenty\Diplomovka\Skript\Test\Test.gdb\CA"

# Pole záumu
field_interest = ""

# Časové pole záujmu
time_field = ""

# Kategória záujmu
cat_interest = ""

# Vstupné susedné prvky
infc_neigh = r"C:\Users\Lenovo\OneDrive - Univerzita Palackého v Olomouci\Dokumenty\Diplomovka\Skript\Test\Data.gdb\CargoShip_MerchantVessel"

# Pole obsahujúce susednú kategóriu
field_neigh = ""

# Časové pole susedných prvkov
time_field_neigh = ""

# Susedná kategória
cat_neigh = ""

# Typ susedstva
neighborhood_type=arcpy.GetParameterAsText(10)
##neighborhood_type = ""

# Počet susedných prvkov
num_neighbors=arcpy.GetParameterAsText(11)
##num_neighbors = ""

# Dĺžka vzdialenostného pásma
dist_band=arcpy.GetParameterAsText(12)
##dist_band = " "

# Externý súbor priestorovej matice váh .swm
swm_file = ""

# Časový typ vzťahu
temporal_type = ""

# Interval časového kroku
time_step_interval = ""

# Počet permutácií
num_permutation = ""

# Typ jadrovej funkcie
weighting_schList =""

# Premenná pre jadrové funkcie
core_function = ""

# Názov výstupu
out_name=""

# Výstupná tabuľka globálnych vzťahov
out_global_tbl = ""


# Cyklus, ktorý vypočíta všetky jadrové funkcie z weighting_schList a vypočíta kolokáciu.
# Ak bude použitá metóda K nearest neighbors, za názov výstupnej vrstvy pridá "_KNN_", ak Distance band tak "_DistanceBand_"
if neighborhood_type=="K_NEAREST_NEIGHBORS":
    outfc=outfc+"_KNN_"+str(num_neighbors)
else:
    distB = dist_band.replace(" ","_")
    outfc=outfc+"_DistanceBand_"+distB

weighting_schList=["GAUSSIAN","BISQUARE","NONE"]

for core_function in weighting_schList:
    print(core_function)
# výstup obdrží písmeno podľa typu funkcie
    if core_function =="GAUSSIAN":  out_name=outfc+"_B"
    if core_function =="BISQUARE" : out_name=outfc+"_G"
    if core_function =="NONE" : out_name=outfc+"_N"

    arcpy.stats.ColocationAnalysis(intype, infc_interest, out_name, field_interest,
                               time_field, cat_interest,
                               infc_neigh, field_neigh,
                               time_field_neigh, cat_neigh, neighborhood_type,
                               num_neighbors, dist_band, swm_file, temporal_type,
                               time_step_interval, num_permutation,
                               core_function, out_global_tbl)