### 설치
```shell
npm install @bravemobile/korea-administrative-area-geo-json-util
```

### 인스턴스 생성
```typescript
const koreaAdministrativeAreaGeoJsonUtil = new KoreaAdministrativeAreaGeoJsonUtil(
    admSdGeoJson,
    admSggGeoJson,
    admAllGeoJson
);
```
#### Parameters

- admSdGeoJson (`FeatureCollection<Polygon | MultiPolygon, AdministrativeAreaProperties >`) 시도 GeoJSON 데이터 
- admSggGeoJson (`FeatureCollection<Polygon | MultiPolygon, AdministrativeAreaProperties >`) 시군구 GeoJSON 데이터
- admAllGeoJson (`FeatureCollection<Polygon | MultiPolygon, AdministrativeAreaProperties >`) 전국 GeoJSON 데이터
- options (`{
  cacheSize?: number;
  }`
) 옵션
  - `cacheSize`: GeoJSON 병합 결과 캐시 최대 크기

## mergeAreas
특정 지역구만 병합된 GeoJSON 조회
```typescript
geoJsonUtil.mergeAreas(['1', '2', '3']);
```
#### Parameters
- administrativeAreaCodes (`string[]`) 병합할 행정구역 코드 배열
#### Returns
병합된 GeoJSON
```typescript
Promise<FeatureCollection<Polygon | MultiPolygon> | null>
```

## groupConnectedAreas
인접한 행정구역들을 그룹화합니다.
```typescript
geoJsonUtil.groupConnectedAreas(['1', '2', '3']);
```
#### Parameters
- administrativeAreaCodes (`string[]`) 병합할 행정구역 코드 배열
#### Returns
인접한 행정구역별로 묶인 그룹의 배열

```typescript
import {
    MultiPolygon,
    Point,
    Polygon,
} from 'geojson';

Promise<{
    areaCodes: string[]; // 그룹에 포함된 행정구역 코드 배열
    mergedFeature: Feature<Polygon | MultiPolygon> | null; // 그룹의 행정구역 GeoJSON 병합 결과
    centerFeature: Feature<Point>; // 그룹의 행정구역 GeoJSON 병합 결과의 중심 위치
}[]>
```

## clearCache 
캐시 초기화
```typescript
koreaAdministrativeAreaGeoJsonUtil.clearCache();
```

## getKorea
전국 GeoJSON 조회
```typescript
geoJsonUtil.getKorea();
```
