ほとんどのシナリオでは、軌跡データはデータベースに追加されます。時空間オブジェクトを削除する必要がある場合は、ApsaraDB for HBase Ganos(HBase Ganos)を使用して、指定された期間、時間範囲、または時空間オブジェクト ID に基づいて時空間オブジェクトを削除できます。
指定された期間に基づいて時空間オブジェクトを削除する
HBase Ganos では、ApsaraDB for HBase の Time to Live(TTL)機能を使用して期限切れのデータを削除できます。 HBase Shell を使用して時空間インデックステーブルの TTL 属性を変更し、期限切れのデータを削除できます。複数のインデックステーブルを作成している場合は、各インデックステーブルでこの操作を実行する必要があります。
たとえば、時空間インデックステーブル xxx_z3 と属性インデックステーブル xxx_attr を作成したとします。 d 列で 5 分前に生成されたデータを削除するには、次のステートメントを実行します。
Alter 'xxx_z3',{NAME=>'d',TTL=>300}
Alter 'xxx_attr',{NAME=>'d',TTL=>300}
指定された時空間範囲に基づいて時空間オブジェクトを削除する
時空間範囲に基づいて時空間オブジェクトを削除する場合、z2、xz2、z3、xz3 タイプの時空間インデックステーブルに対応するオブジェクトのみを削除できます。属性インデックステーブルが存在する場合、時空間インデックステーブルのデータは属性インデックステーブルのデータと一致しない場合があります。時空間インデックステーブルのみが使用可能な場合は、この方法を使用して時空間オブジェクトを削除することをお勧めします。指定された時空間範囲に基づいてオブジェクトを削除するには、次の手順を実行します。
- フィルターを設定します。フィルターを使用して、削除するオブジェクトをフィルター処理できます。このフィルターは、時空間オブジェクトのクエリに使用されるフィルターと同じ方法で設定されます。
- GeoTools の SimpleFeatureStore.removerFeatures メソッドを使用して、フィルターをトリガーするオブジェクトを削除します。
/**
* フィルターをトリガーするデータを削除します。
* @param schema: スキーマ名。
* @param filterString: フィルター文字列。文字列は、Extended Common Query Language(ECQL)構文に準拠している必要があります。
* @throws Exception
*/
public void removeByFilter(String schema, String filterString) throws Exception {
SimpleFeatureStore fs = (SimpleFeatureStore) ds.getFeatureSource(schema);
// filterString が空のままの場合、すべての時空間オブジェクトが削除されます。
if (StringUtils.isEmpty(filterString)){
fs.removeFeatures(Filter.INCLUDE);
return;
}
Filter filterToDelete = ECQL.toFilter(filterString);
fs.removeFeatures(filterToDelete);
}
指定された空間オブジェクト ID に基づいて時空間オブジェクトを削除する
このメソッドを使用して、ID インデックステーブルを作成した時空間オブジェクトのみを削除できます。 ID インデックステーブルを 1 つだけ作成した場合は、このメソッドを使用して時空間オブジェクトを削除できます。 GeoTools の SimpleFeatureStore.removerFeatures メソッドを使用して、指定された ID と一致するオブジェクトを削除します。
public void removeById(String schema,String simpleFeatureId) throws Exception{
// この例のフィルターは、FilterFactory2 を使用して設定されています。
FilterFactory2 ff = CommonFactoryFinder.getFilterFactory2
Filter filterToDelete = ff.id(ff.featureId(simpleFeatureId))
SimpleFeatureStore fs = ds.getFeatureSource(schema);
fs.removeFeatures(filterToDelete);
}