インタラクティブなマップ レイヤーデータを削除します

データ クライアント ライブラリは LayerUpdater 、インタラクティブなマップレイヤで更新操作を実行するためのクラスを提供します。

LayerUpdater は 3 つの方法があります。

  • updateLayer(catalogHrn, layerId) 更新するカタログおよびレイヤーを定義します。
  • option("olp.connector.interactive-map-context", "EXTENSION") 拡張内でのみ操作を実行でき、拡張レイヤーでは削除は実行されません。
  • delete(queryString) クエリー文字列に従って削除操作を実行します。 クエリ文字列 は RSQL 形式です。 delete 関数の呼び出しがブロックされているか、同期されています。 削除操作が完了すると、この値が返されます。

プロジェクトの依存関係

HERE platform Spark コネクターを使用してインタラクティブマップ レイヤーからデータを削除するアプリケーションを作成する場合 は、「 Spark コネクターの依存関係」の章の説明に従って、必要な依存関係をプロジェクトに追加してください。

次のスニペットでは、カタログのインタラクティブなマップ レイヤーからデータを削除する方法を示します。

Scala
Java
import com.here.platform.data.client.spark.LayerDataFrameReader.SparkSessionExt
import org.apache.spark.sql.SparkSession
val layerUpdater = sparkSession
  .updateLayer(catalogHrn, layerId)
layerUpdater.option("olp.connector.interactive-map-context", "EXTENSION")

val deleteBatchSize = 500
val queryStart = "mt_id=in=("

val query = new StringBuilder().append(queryStart)
val it = oidList.iterator
var total: Long = 0
var i = 0
while (it.hasNext) {
  query.append(it.next())
  i += 1
  if (i >= deleteBatchSize) {
    query.append(")")
    total += deleteBatchSize
    log.info("Removing batch of " + deleteBatchSize + " objects. (" + total + " total elapsed)")
    layerUpdater.delete(query.toString())
    query.clear()
    query.append(queryStart)
    i = 0
  } else {
    if (it.hasNext)
      query.append(",")
  }
}
if (i > 0) {
  query.append(")")
  log.info("Removing batch of " + i + " objects.")
  total += i
  layerUpdater.delete(query.toString())
}
import com.here.hrn.HRN;
import com.here.platform.data.client.spark.LayerUpdater;
import com.here.platform.data.client.spark.javadsl.JavaLayerUpdater;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.apache.spark.sql.SparkSession;

LayerUpdater layerUpdater =
    JavaLayerUpdater.create(sparkSession).updateLayer(catalogHrn, layerId);
layerUpdater.option("olp.connector.interactive-map-context", "EXTENSION");

final String queryStart = "mt_id=in=(";

long total = 0;

int i = 0;
Iterator<String> it = oidList.iterator();
StringBuilder query = new StringBuilder(queryStart);
while (it.hasNext()) {
  query.append(it.next());
  i++;
  if (i >= 500) {
    query.append(")");
    layerUpdater.delete(query.toString());
    query = new StringBuilder(queryStart);
    total += i;
    log.info("Removing batch of " + i + " objects. (" + total + " total elapsed)");
    i = 0;
  } else {
    if (it.hasNext()) query.append(",");
  }
}
if (i > 0) {
  query.append(")");
  // Query string: "mt_id=IN=("ID1","ID2",...,"IDn")"
  total += i;
  layerUpdater.delete(query.toString());
}
注 :
  • インタラクティブマップ レイヤータイプでは、現在、 ID によるオブジェクトの削除のみがサポートされています。このタイプのレイヤーでは、他のクエリータイプはサポートされていません。 クエリーは、直接一致または入力型クエリーのいずれかになります。
  • RSQL の詳細 については、 RSQL を参照してください。
  • 現在、削除できるのは、オブジェクトの ID の長さに応じて、最大 500 個のオブジェクトの小さなバッチ内のオブジェクトのみです。 ただし、この制限は今後緩和される予定です。

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

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