# Tworzenie skryptów przy użyciu Qlik GeoOperations

Łączniki Qlik GeoOperations tworzą i formatują skrypty GeoOperations za Ciebie. Skrypty te możesz modyfikować w narzędziu Edytor ładowania danych. Możesz także tworzyć skrypty ręcznie przy użyciu funkcji GeoOperations, zamiast używać łączników Qlik GeoOperations.

## Jak działa Qlik GeoOperations

Najpierw dodaje się łącznik Qlik GeoOperations jako źródło danych. W narzędziu Edytor ładowania danych aplikacji, gdy wybierasz dane do załadowania z łącznika, możesz wybrać operacje do wykonania i parametry do zastosowania. Następnie łącznik Qlik GeoOperations dodaje odpowiedni skrypt GeoOperations do skryptu ładowania. Możesz również dodać ten skrypt ręcznie.

Każdy skrypt operacji składa się z instrukcji LOAD, która wybiera użycie danych i operację. Są one wysyłane do rozszerzenia GeoOperations w skrypcie ładowania. Rozszerzenie po stronie serwera następnie zwraca dane. Qlik GeoOperations udostępnia obiekt Integracji analiz zaawansowanych o nazwie GeoOperations, dostępny w języku skryptowym. Oferuje on funkcję ScriptEval do wysyłania skryptu i tabeli do rozszerzenia.

Na przykład poniżej przedstawiono skrypt ładowania mający na celu zastosowanie operacji Obszary podróży do poprzednio załadowanej tabeli MyPoints i określenia parametrów wielkości/kosztu obszaru podróży:

```
Load * Extension GeoOperations.ScriptEval('TravelAreas(costValue="10", costUnit="Minutes")', MyPoints);
```

Skrypt jest wysyłany jako pierwszy parametr do ScriptEval, a tabela jako drugi.

GeoOperations to funkcje działające na zestawach danych. Zestawy danych pochodzą albo z danych załadowanych w Qlik Sense, albo z zewnętrznych źródeł, takich jak pliki geograficzne lub usługa lokalizacji. Dane wysłane ze skryptu są dostępne jako zestaw danych o nazwie INTABLE. Jeśli chcesz określić dodatkowe parametry dla tych danych, musisz zadeklarować je po wywołaniu funkcji jako DATASOURCE. Na przykład:

```
Load * Extension GeoOperations.ScriptEval('TravelAreas(costValue="10", costUnit="Minutes")
DATASOURCE myPoints INTABLE pointField="Point"', MyPoints);
```

Inne źródła danych zawsze muszą być deklarowane, a parametry, takie jak adresy URL, muszą być określane. W każdej operacji można określić używane źródła danych. Domyślnie operacje pobierają dostępne zestawy danych zgodnie z opisem dotyczącym poszczególnych operacji w temacie [Operacja](https://help.qlik.com/en-US/geoanalytics/Content/Ref-GeoOperationsService/connector-geoanalytics_reference-Operation.htm) (tylko w języku angielskim).

## Wybieranie i zmiana nazwy pól GeoOperations

Funkcje GeoOperations zwracają pola. Wszystkie pola są domyślnie zwracane i uwzględniane. Możesz poprzedzić funkcje GeoOperations instrukcją SELECT, aby wybrać określone pola i opcjonalnie zmienić ich nazwy. Na przykład, ten skrypt używa SELECT do załadowania tylko dwóch pól kodu pocztowego z usługi lokalizacji:

`Load * Extension GeoOperations.ScriptEval('` `SELECT Name as PostalCode, LocationArea FROM` `Load() DATASOURCE PostalCodes LOCATIONSERVICE type="PostalCode", country="se"');`` `

Użycie instrukcji SELECT w skrypcie GeoOperations może być bardziej wydajne niż określanie pól w instrukcji Qlik LOAD, ponieważ dane nie są ładowane do Qlik Sense bez wybrania w skrypcie GeoOperations.

SELECT można użyć, aby uniknąć obliczania niektórych pól, wybierając niezwracanie ich w wynikach. Na przykład można wykluczyć względne pola nakładania się zwrócone przez Intersects.

Informacja

W przypadku wielokrotnego użycia tej samej operacji w skrypcie ładowania należy użyć instrukcji SELECT do zmiany pól.

## Składnia skryptu

Skrypt wysłany do GeoOperations ma następującą składnię:

### 1. Operacja

Najprostsza forma skryptu wykonuje operację.

Składnia:

`Operation(paramName="paramValue", ...)`

Przykład:

`Cluster(distance="100000")`` `

Więcej informacji można znaleźć na liście operacji i ich parametrów.

### 2. Zestaw danych

Drugim krokiem jest załadowanie zestawu danych dla wybranych operacji, które mają zostać zastosowane.

Składnia:

`Operation(paramName="paramValue", ...)``DATASOURCE name TYPE paramName="paramvalue", ...`

Przykład:

`Within()``DATASOURCE states LOCATIONSERVICE type="STATE", country="US"`` `

Więcej informacji można znaleźć na liście zestawów danych i ich parametrów.

### 3. Składanie w całość

Tak wyglądałby ukończony skrypt w narzędziu Edytor ładowania danych:

`[MyPointsInStates]:``Load * Extension GeoOperations.ScriptEval(’``Within()``DATASOURCE states LOCATIONSERVICE type=”STATE”, country=”US”``’, MyTable);`` `

W tym przykładzie MyTable może być dowolną inną załadowaną tabelą zawierającą punkty, linie, nazwane obszary lub inne dane geograficzne.

### 4. Filtrowanie pól

Poniższe dodatki umożliwiają dalsze filtrowanie wyników operacji.

`[MyPointsInStates]:``Load * Extension GeoOperations.ScriptEval(’``SELECT Name, states.Name as State FROM``Within()``DATASOURCE states LOCATIONSERVICE type=”STATE”, country=”US”``’, MyTable{Name, Point});`

W nazwach parametrów i nazwach pól rozróżniana jest wielkość liter, ale w operacjach, opcjach parametrów (takich jak `meters`, ` minutes,  ` itp.) lub słowach kluczowych, takich jak SELECT i FROM, nie jest ona rozróżniana.

## Rozwiązywanie problemów ze skryptami AddressPointLookup i PointToAddressLookup