[Google Maps Datasets API(V1)] Javaで地理空間データのデータセットを取得する

Maps Datasets API V1(Java)を使用して、
GoogleMapsの地理空間データのデータセットを取得する方法
についてご紹介します。

:::note info
APIを利用する環境の準備から始める場合や、コードを実行する際は、
[⧉[Google Maps Datasets API(V1)] Javaで地理空間データを利用する](https://qiita.com/doran/items/e45e84ccbb8cfddbfee7)
を参照ください。
:::

|No||目次|
|---|---|---|
|1||[データセット一覧を取得](#1-データセット一覧を取得)|
||1|[IAM権限](#11-iam権限)|
||2|[スコープ](#12-スコープ)|
||3|[実行](#13-実行)|
||4|[レスポンスの内容](#14-レスポンスの内容)|
|2||[データセットを取得](#2-データセットを取得)|
||1|[IAM権限](#21-iam権限)|
||2|[スコープ](#22-スコープ)|
||3|[実行](#23-実行)|
||4|[レスポンスの内容](#24-レスポンスの内容)|

## 1. データセット一覧を取得
指定したプロジェクトのデータセットを取得します。

### 1.1. IAM権限
APIを実行するには次の権限を指定してください。
```
Maps Platform データセット閲覧者
（roles/mapsplatformdatasets.viewer）
```
### 1.2. スコープ
このAPIを実行するには、以下のスコープを指定してください。
```
https://www.googleapis.com/auth/cloud-platform
```

### 1.3. 実行

```java
public static void main(String[] args) throws Exception{
    try(MapsPlatformDatasetsClient client = getMapsPlatformDatasetsClient2()){
        ListDatasetsRequest.Builder builder = ListDatasetsRequest.newBuilder();
        builder.setParent(String.format("projects/%s", "プロジェクトID"));
        
        MapsPlatformDatasetsClient.ListDatasetsPagedResponse response = client.listDatasets(builder.build());
        for(Dataset dataset : response.iterateAll()) {
            System.out.println(dataset);
        }
    }
}
```
#### 1.3.1. HTTPリクエスト
GET:　https:\//mapsplatformdatasets.googleapis.com/v1/projects/{プロジェクトID}/datasets
が実行されます。

#### 1.3.2. クエリパラメータ
ListDatasetsRequest.Builderのsetメソッドにより、クエリパラメータを追加できます。
build()メソッドでListDatasetsRequestインスタンスを取得し、
listDatasets()に渡します。

|メソッド|引数|説明|
|---|---|---|
|setPageSize|Integer|受け取る結果の数|
|setPageToken|String|次のページトークン|

### 1.4. レスポンスの内容
#### MapsPlatformDatasetsClient.ListDatasetsPagedResponse
|メソッド|戻り値|説明|
|---|---|---|
|iterateAll|Iterable\<[Dataset](#dataset)\>|データセットのリスト|
|getNextPageToken|String|次のページのトークン|

#### Dataset
|メソッド|戻り値|説明|
|---|---|---|
|getName|String|リソース名<br>形式：projects/{プロジェクトID}/datasets/{データセットID}|
|getDisplayName|String|コンソールUIに表示される名前|
|getDescription|String|説明|
|getVersionId|String|データセットのバージョンID|
|getUsage|List\<[Usage(enum)](#usage)\>|ユースケース|
|getStatus|[Status](#status)|バージョンのステータス|
|getCreateTime|Timestamp|データセットの作成時刻|
|getUpdateTime|Timestamp|データセットの更新時刻|
|getVersionCreateTime|Timestamp|このバージョンのデータセットの作成時刻|
|getVersionDescription|String|このバージョンのデータセットの説明|
|getLocalFileSource|[LocalFileSource](#localfilesource)|1回のアップロードで使用するデータセットのローカルファイルソース|
|getGcsSource|[GcsSource](#gcssource)|1回のアップロードで使用するデータセットの Google Cloud Storageファイルソース|

#### Status
|メソッド|戻り値|説明|
|---|---|---|
|getState|[State(enum)](#state)|ステータスの列挙型|
|getErrorMessage|String|失敗の理由を示すエラーメッセージ|

#### LocalFileSource
|メソッド|戻り値|説明|
|---|---|---|
|getFilename|String|アップロードしたファイルの名前と拡張子|
|getFileFormat|[FileFormat(enum)](#fileformat)|アップロードするファイルの形式|

#### GcsSource
|メソッド|戻り値|説明|
|---|---|---|
|getInputUri|String|ソースデータURI|
|getFileFormat|[FileFormat(enum)](#fileformat)|アップロードするファイルの形式|

#### Usage
|定義値|内容|
|---|---|
|USAGE_UNSPECIFIED|未使用|
|USAGE_DATA_DRIVEN_STYLING|このデータセットはデータドリブンのスタイル設定に使用|

#### State
|定義値|内容|
|---|---|
|STATE_UNSPECIFIED|未設定|
|STATE_IMPORTING|データをデータセットにインポート|
|STATE_IMPORT_SUCCEEDED|データセットへのデータのインポートが完了|
|STATE_IMPORT_FAILED|データセットにデータのインポート失敗|
|STATE_DELETING|データセットを削除中|
|STATE_DELETION_FAILED|削除の失敗状態|
|STATE_PROCESSING|データを処理中|
|STATE_PROCESSING_FAILED|処理の失敗状態|
|STATE_NEEDS_REVIEW|未使用|
|STATE_PUBLISHING|公開状態|
|STATE_PUBLISHING_FAILED|公開エラーの状態|
|STATE_COMPLETED|完了状態|

#### FileFormat
|定義値|内容|
|---|---|
|FILE_FORMAT_UNSPECIFIED|未設定|
|FILE_FORMAT_GEOJSON|GeoJsonファイル|
|FILE_FORMAT_KML|KMLファイル|
|FILE_FORMAT_CSV|CSVファイル|

## 2. データセットを取得
指定したデータセットのメタデータを取得します。

### 2.1. IAM権限
APIを実行するには次の権限を指定してください。
```
Maps Platform データセット閲覧者
（roles/mapsplatformdatasets.viewer）
```
### 2.2. スコープ
このAPIを実行するには、以下のスコープを指定してください。
```
https://www.googleapis.com/auth/cloud-platform
```

### 2.3. 実行
パラメータには、[DatasetのgetName()](#dataset)で取得できるリソース名を設定します。
リソース名 = projects/{プロジェクトID}/datasets/{データセットID}

```java
public static void main(String[] args) throws Exception{
    try(MapsPlatformDatasetsClient client = getMapsPlatformDatasetsClient()){
        String name = String.format(
                    "projects/%s/datasets/%s", 
                    "プロジェクトID", "データセットID");
        
        Dataset response = client.getDataset(name);
        System.out.println(response);
    }
}
```
#### 2.3.1. HTTPリクエスト
GET:　https:\//mapsplatformdatasets.googleapis.com/v1/projects/{プロジェクトID}/datasets/{データセットID}
が実行されます。

#### 2.3.2. クエリパラメータ
クエリパラメータはありません。

### 2.4. レスポンスの内容
#### Dataset

[1.4. レスポンスの内容(Dataset)](#dataset)と同じです。
<br>
<br>
おしまい。。