バージョン付レイヤーにデータを公開します

以前のデータ更新の履歴を保存してアクセスする必要がある場合は、バージョン付レイヤーにデータを公開します。 レイヤー間の整合性を保つには、 1 つのパブリケーションで複数のバージョン管理されたレイヤーに影響を与える更新をパブリッシュします。 すべてのレイヤーが更新され、パブリケーションがファイナライズされたときに、新しいカタログバージョンにアクセスできます。 いったんバージョンを公開すると、そのバージョンのデータを変更することはできず、カタログバージョン全体を削除することによってのみ削除できます。

1 つのリクエストでアップロードおよび公開できるパーティションの最大数は 1,000 です。 1,000 を超えるパーティションがある場合は、最初の 1,000 個のパーティションのデータとメタデータをアップロードしてから、次のパーティションのセットについても同じ操作を行います。

バージョン付レイヤーにデータを公開するには、次の手順に従います。

  1. olp-sdk-dataservice-write モジュールからクラスをインポートします。

    import {
      VersionedLayerClient,
      StartBatchRequest,
      CompleteBatchRequest,
      UploadPartitionsRequest,
      UploadBlobRequest,
    } from "@here/olp-sdk-dataservice-write";
    
  2. OlpClientSettings オブジェクトを作成します。

    手順については、「プラットフォームクライアント設定を作成する」を参照してください。

  3. VersionedLayerClient ステップ 2 で設定したレイヤーとプラットフォームクライアントを含むカタログの HERE リソースネーム ( HERE リソースネーム )を使用してオブジェクトを作成します。

    const clientWrite = new VersionedLayerClientWrite({
      catalogHrn: HRN.fromString("your-catalog-hrn"),
      settings,
    });
    
  4. データを公開するレイヤーの ID を使用して、データの公開プロセスを開始します。

    const publication = await clientWrite.startBatch(
      new StartBatchRequest().withLayers([layerId1, layersId2])
    );
    

    パブリケーションを送信または キャンセルするために使用できるパブリケーション ID を受け取り ます。

  5. データ ハンドルがすでに存在するかどうかを確認してください。

    データ ハンドルはデータ識別子です。 すべてのバージョンで、各レイヤー内で一意である必要があります。 データ ハンドルには、任意の一意の番号、コンテンツまたはメタデータのハッシュを指定できます。 データ ハンドルを使用してデータをアップロードする場合、そのデータは再利用できません。

    const checkDataExistsRequest = new CheckDataExistsRequest().withLayerId(
      layerId
    );
    const dataExist = await clientWrite.checkDataExists(
      checkDataExistsRequest.withDataHandle("your-data-handle")
    );
    
  6. に対する応答に応じて CheckDataExistsRequest、次の操作を行います。

    • 200 ステータスを受け取ると、データ ハンドルはすでに存在しているため、新しいデータ ハンドルを生成する必要があります。

      警告

      すでに存在するデータ ハンドルを使用すると、データの公開プロセスが失敗します。

    • 404 ステータスを受け取ると、データ ハンドルは存在しません。また、このステータスを使用してバージョン付レイヤーにデータを公開できます。

  7. アップロードするパーティションの数に応じて、次のいずれかの操作を行います。

    • 1 つのパーティションのデータを公開する場合 PublishSinglePartitionRequest は、レイヤー ID 、レイヤー設定で指定されたコンテンツタイプ、レイヤーのバイナリデータ、パーティション メタデータ、およびデータ公開プロセスの開始時に取得したパブリケーション ID を使用してオブジェクトを作成します。

      少なくとも、メタデータはパーティション ID で構成されている必要があります。 生成したデータ ハンドルを指定することもできます。 一意のデータ ハンドルを指定しない場合、自動的に生成されます。 設定できるフィールドの詳細な説明については、「 Publish API リファレンス 」を参照してください。

      const request = new PublishSinglePartitionRequest()
        .withLayerId(layerId)
        .withContentType(contentType)
        .withData(data)
        .withMetaData(partition)
        .withPublicationId(publication.id);
      
    • 複数のパーティションのデータを公開する場合は、次の操作を行います。

      1. レイヤーごと UploadBlobRequest に、レイヤー ID 、生成したデータ ハンドル、レイヤー設定で指定したコンテンツタイプ、レイヤーのバイナリデータを使用してクラスを作成します。

        一意のデータ ハンドルを指定しない場合、自動的に生成されます。

        const uploadBlobRequest = new UploadBlobRequest()
          .withLayerId(layerId)
          .withDataHandle(dataHandle)
          .withContentType(contentType)
          .withData(data);
        
      2. 公開するデータをアップロードします。

        50 MB を超えるデータをアップロードすると、データが分割されて一部にアップロードされます。 各ファイルのサイズは 5 MB です。 そのため、アップロードが完了するまでに時間がかかることがあります。

        const uploadBlobResult = await clientWrite.uploadBlob(uploadBlobRequest);
        

        前のステップでデータ ハンドルを指定していない場合 uploadBlob は、によって自動的に生成され、返されます。 データ ハンドルは、を使用して取得 uploadBlobResult.getDataHandle()できます。

      3. HERE platform 内のデータを表すには、パーティション メタデータを生成します。

        少なくとも、メタデータはパーティション ID とデータのアップロードに使用したデータ ハンドルで構成されている必要があります。 を使用して適切なデータ ハンドルを取得 uploadBlobResult.getDataHandle()できます。 設定できるフィールドの詳細な説明については、「 Publish API リファレンス 」を参照してください。

        export interface PublishPartition {
          partition: string;
          dataHandle: string;
        }
        
      4. パーティション メタデータをアップロードします。

        const partition = {
          partition: "your-partition-id",
          dataHandle: "your-data-handle",
        };
        
      5. (任意)パーティション メタデータを削除するには、再度アップロードしますが、削除するパーティションのデータハンドルは指定しません。

      6. PartitionsRequest 生成したパーティション ID 、データ公開プロセスの開始時に取得したパブリケーション ID 、およびレイヤー ID を使用してオブジェクトを作成します。

        パーティションごとに個別のリクエストを作成するのではなく、 1 つのリクエストですべてのパーティションをアップロードすることをお勧めします。

        const partitionsRequest = new UploadPartitionsRequest()
            .withPartitions({partitions: [partition]})
            .withPublicationId(publication.id)
            .withLayerId(layerId);
        
        await clientWrite.uploadPartitions(partitionsRequest)
        
  8. データ公開プロセスの開始時に取得したパブリケーション ID を使用して、パブリケーションを送信します。

    await clientWrite.completeBatch(
      new CompleteBatchRequest().withPublicationId(publication.id)
    );
    

公開物を送信すると、 HERE platform によって処理されます。 現在のパブリケーションの量およびパブリケーションのサイズによっては、処理に数分から数時間かかることがあります。 パブリケーション ID を使用して、パブリケーションのステータスを確認できます。

const publicationDetails = await clientWrite.getBatch(
  new GetBatchRequest().withPublicationId(publication.id)
);

パブリケーションをキャンセルするには :

  • パブリケーションがパブリッシュされていない場合 cancelBatch は、パブリケーション ID を使用してメソッドを呼び出します。

    await clientWrite.cancelBatch(
      new CancelBatchRequest().withPublicationId(publication.id)
    );
    
  • パブリケーションが公開されている場合は、パーティションを削除して、新しいレイヤーバージョンを作成します。

    パーティションを削除するには、パーティション メタデータをアップロードしますが、データ ハンドルは指定しません。

」に一致する結果は 件です

    」に一致する結果はありません