Search in sources :

Example 1 with StoreFactoryFamilySpi

use of org.locationtech.geowave.core.store.StoreFactoryFamilySpi in project geowave by locationtech.

the class BaseDataStoreTest method createDataStore.

protected DataStore createDataStore() throws IOException, GeoWavePluginException {
    final Map<String, Serializable> params = new HashMap<>();
    params.put("gwNamespace", "test_" + getClass().getName() + "_" + name.getMethodName());
    final StoreFactoryFamilySpi storeFactoryFamily = new MemoryStoreFactoryFamily();
    // delete existing data
    new GeoWavePluginConfig(storeFactoryFamily, params).getDataStore().delete(QueryBuilder.newBuilder().build());
    return new GeoWaveGTDataStoreFactory(storeFactoryFamily).createNewDataStore(params);
}
Also used : GeoWavePluginConfig(org.locationtech.geowave.adapter.vector.plugin.GeoWavePluginConfig) Serializable(java.io.Serializable) StoreFactoryFamilySpi(org.locationtech.geowave.core.store.StoreFactoryFamilySpi) MemoryStoreFactoryFamily(org.locationtech.geowave.core.store.memory.MemoryStoreFactoryFamily) HashMap(java.util.HashMap) GeoWaveGTDataStoreFactory(org.locationtech.geowave.adapter.vector.plugin.GeoWaveGTDataStoreFactory)

Example 2 with StoreFactoryFamilySpi

use of org.locationtech.geowave.core.store.StoreFactoryFamilySpi in project geowave by locationtech.

the class NestedGroupCentroidAssignmentTest method test.

@Test
public void test() throws IOException {
    final SimpleFeatureType ftype = AnalyticFeature.createGeometryFeatureAdapter("centroid", new String[] { "extra1" }, BasicFeatureTypes.DEFAULT_NAMESPACE, ClusteringUtils.CLUSTERING_CRS).getFeatureType();
    final GeometryFactory factory = new GeometryFactory();
    final String grp1 = "g1";
    final String grp2 = "g2";
    final SimpleFeature level1b1G1Feature = AnalyticFeature.createGeometryFeature(ftype, "b1", "level1b1G1Feature", "fred", grp1, 20.30203, factory.createPoint(new Coordinate(02.5, 0.25)), new String[] { "extra1" }, new double[] { 0.022 }, 1, 1, 0);
    final Index index = SpatialDimensionalityTypeProvider.createIndexFromOptions(new SpatialOptions());
    final FeatureDataAdapter adapter = new FeatureDataAdapter(ftype);
    final String namespace = "test_" + getClass().getName() + "_" + name.getMethodName();
    final StoreFactoryFamilySpi storeFamily = new MemoryStoreFactoryFamily();
    final StoreFactoryOptions opts = storeFamily.getDataStoreFactory().createOptionsInstance();
    opts.setGeoWaveNamespace(namespace);
    final DataStorePluginOptions storePluginOptions = new DataStorePluginOptions(opts);
    final DataStore dataStore = storeFamily.getDataStoreFactory().createStore(opts);
    final IndexStore indexStore = storeFamily.getIndexStoreFactory().createStore(opts);
    final PersistentAdapterStore adapterStore = storeFamily.getAdapterStoreFactory().createStore(opts);
    ingest(dataStore, adapter, index, level1b1G1Feature);
    final SimpleFeature level1b1G2Feature = AnalyticFeature.createGeometryFeature(ftype, "b1", "level1b1G2Feature", "flood", grp2, 20.30203, factory.createPoint(new Coordinate(02.03, 0.2)), new String[] { "extra1" }, new double[] { 0.022 }, 1, 1, 0);
    ingest(dataStore, adapter, index, level1b1G2Feature);
    final SimpleFeature level2b1G1Feature = AnalyticFeature.createGeometryFeature(ftype, "b1", "level2b1G1Feature", "flou", level1b1G1Feature.getID(), 20.30203, factory.createPoint(new Coordinate(02.5, 0.25)), new String[] { "extra1" }, new double[] { 0.022 }, 2, 1, 0);
    ingest(dataStore, adapter, index, level2b1G1Feature);
    final SimpleFeature level2b1G2Feature = AnalyticFeature.createGeometryFeature(ftype, "b1", "level2b1G2Feature", "flapper", level1b1G2Feature.getID(), 20.30203, factory.createPoint(new Coordinate(02.03, 0.2)), new String[] { "extra1" }, new double[] { 0.022 }, 2, 1, 0);
    ingest(dataStore, adapter, index, level2b1G2Feature);
    // different batch
    final SimpleFeature level2B2G1Feature = AnalyticFeature.createGeometryFeature(ftype, "b2", "level2B2G1Feature", "flapper", level1b1G1Feature.getID(), 20.30203, factory.createPoint(new Coordinate(02.63, 0.25)), new String[] { "extra1" }, new double[] { 0.022 }, 2, 1, 0);
    ingest(dataStore, adapter, index, level2B2G1Feature);
    final SimpleFeatureItemWrapperFactory wrapperFactory = new SimpleFeatureItemWrapperFactory();
    final CentroidManagerGeoWave<SimpleFeature> mananger = new CentroidManagerGeoWave<>(dataStore, indexStore, adapterStore, new SimpleFeatureItemWrapperFactory(), adapter.getTypeName(), storePluginOptions.createInternalAdapterStore().getAdapterId(adapter.getTypeName()), index.getName(), "b1", 1);
    final List<CentroidPairing<SimpleFeature>> capturedPairing = new ArrayList<>();
    final AssociationNotification<SimpleFeature> assoc = new AssociationNotification<SimpleFeature>() {

        @Override
        public void notify(final CentroidPairing<SimpleFeature> pairing) {
            capturedPairing.add(pairing);
        }
    };
    final FeatureCentroidDistanceFn distanceFn = new FeatureCentroidDistanceFn();
    final NestedGroupCentroidAssignment<SimpleFeature> assigmentB1 = new NestedGroupCentroidAssignment<>(mananger, 1, "b1", distanceFn);
    assigmentB1.findCentroidForLevel(wrapperFactory.create(level1b1G1Feature), assoc);
    assertEquals(1, capturedPairing.size());
    assertEquals(level1b1G1Feature.getID(), capturedPairing.get(0).getCentroid().getID());
    capturedPairing.clear();
    final NestedGroupCentroidAssignment<SimpleFeature> assigmentB1L2G1 = new NestedGroupCentroidAssignment<>(mananger, 2, "b1", distanceFn);
    assigmentB1L2G1.findCentroidForLevel(wrapperFactory.create(level1b1G1Feature), assoc);
    assertEquals(1, capturedPairing.size());
    assertEquals(level2b1G1Feature.getID(), capturedPairing.get(0).getCentroid().getID());
    capturedPairing.clear();
    // level 2 and different parent grouping
    final NestedGroupCentroidAssignment<SimpleFeature> assigmentB1L2G2 = new NestedGroupCentroidAssignment<>(mananger, 2, "b1", distanceFn);
    assigmentB1L2G2.findCentroidForLevel(wrapperFactory.create(level1b1G2Feature), assoc);
    assertEquals(1, capturedPairing.size());
    assertEquals(level2b1G2Feature.getID(), capturedPairing.get(0).getCentroid().getID());
    capturedPairing.clear();
    // level two with different batch than parent
    final CentroidManagerGeoWave<SimpleFeature> mananger2 = new CentroidManagerGeoWave<>(dataStore, indexStore, adapterStore, new SimpleFeatureItemWrapperFactory(), adapter.getTypeName(), storePluginOptions.createInternalAdapterStore().getAdapterId(adapter.getTypeName()), index.getName(), "b2", 2);
    final NestedGroupCentroidAssignment<SimpleFeature> assigmentB2L2 = new NestedGroupCentroidAssignment<>(mananger2, 2, "b1", distanceFn);
    assigmentB2L2.findCentroidForLevel(wrapperFactory.create(level1b1G1Feature), assoc);
    assertEquals(1, capturedPairing.size());
    assertEquals(level2B2G1Feature.getID(), capturedPairing.get(0).getCentroid().getID());
    capturedPairing.clear();
}
Also used : GeometryFactory(org.locationtech.jts.geom.GeometryFactory) SimpleFeatureItemWrapperFactory(org.locationtech.geowave.analytic.SimpleFeatureItemWrapperFactory) ArrayList(java.util.ArrayList) Index(org.locationtech.geowave.core.store.api.Index) MemoryStoreFactoryFamily(org.locationtech.geowave.core.store.memory.MemoryStoreFactoryFamily) DataStorePluginOptions(org.locationtech.geowave.core.store.cli.store.DataStorePluginOptions) DataStore(org.locationtech.geowave.core.store.api.DataStore) AssociationNotification(org.locationtech.geowave.analytic.kmeans.AssociationNotification) SpatialOptions(org.locationtech.geowave.core.geotime.index.SpatialOptions) SimpleFeature(org.opengis.feature.simple.SimpleFeature) StoreFactoryFamilySpi(org.locationtech.geowave.core.store.StoreFactoryFamilySpi) PersistentAdapterStore(org.locationtech.geowave.core.store.adapter.PersistentAdapterStore) SimpleFeatureType(org.opengis.feature.simple.SimpleFeatureType) Coordinate(org.locationtech.jts.geom.Coordinate) StoreFactoryOptions(org.locationtech.geowave.core.store.StoreFactoryOptions) FeatureCentroidDistanceFn(org.locationtech.geowave.analytic.distance.FeatureCentroidDistanceFn) FeatureDataAdapter(org.locationtech.geowave.adapter.vector.FeatureDataAdapter) IndexStore(org.locationtech.geowave.core.store.index.IndexStore) Test(org.junit.Test)

Example 3 with StoreFactoryFamilySpi

use of org.locationtech.geowave.core.store.StoreFactoryFamilySpi in project geowave by locationtech.

the class CentroidManagerTest method testSampleRecall.

@Test
public void testSampleRecall() throws IOException {
    final SimpleFeatureType ftype = AnalyticFeature.createGeometryFeatureAdapter("centroid", new String[] { "extra1" }, BasicFeatureTypes.DEFAULT_NAMESPACE, ClusteringUtils.CLUSTERING_CRS).getFeatureType();
    final GeometryFactory factory = new GeometryFactory();
    final String grp1 = "g1";
    final String grp2 = "g2";
    SimpleFeature feature = AnalyticFeature.createGeometryFeature(ftype, "b1", "123", "fred", grp1, 20.30203, factory.createPoint(new Coordinate(02.33, 0.23)), new String[] { "extra1" }, new double[] { 0.022 }, 1, 1, 0);
    final Index index = SpatialDimensionalityTypeProvider.createIndexFromOptions(new SpatialOptions());
    final FeatureDataAdapter adapter = new FeatureDataAdapter(ftype);
    final String namespace = "test_" + getClass().getName() + "_" + name.getMethodName();
    final StoreFactoryFamilySpi storeFamily = new MemoryStoreFactoryFamily();
    final StoreFactoryOptions opts = storeFamily.getDataStoreFactory().createOptionsInstance();
    opts.setGeoWaveNamespace(namespace);
    final DataStore dataStore = storeFamily.getDataStoreFactory().createStore(opts);
    final IndexStore indexStore = storeFamily.getIndexStoreFactory().createStore(opts);
    final PersistentAdapterStore adapterStore = storeFamily.getAdapterStoreFactory().createStore(opts);
    final InternalAdapterStore internalAdapterStore = storeFamily.getInternalAdapterStoreFactory().createStore(opts);
    ingest(dataStore, adapter, index, feature);
    feature = AnalyticFeature.createGeometryFeature(ftype, "b1", "231", "flood", grp1, 20.30203, factory.createPoint(new Coordinate(02.33, 0.23)), new String[] { "extra1" }, new double[] { 0.022 }, 1, 1, 0);
    ingest(dataStore, adapter, index, feature);
    feature = AnalyticFeature.createGeometryFeature(ftype, "b1", "321", "flou", grp2, 20.30203, factory.createPoint(new Coordinate(02.33, 0.23)), new String[] { "extra1" }, new double[] { 0.022 }, 1, 1, 0);
    ingest(dataStore, adapter, index, feature);
    feature = AnalyticFeature.createGeometryFeature(ftype, "b2", "312", "flapper", grp2, 20.30203, factory.createPoint(new Coordinate(02.33, 0.23)), new String[] { "extra1" }, new double[] { 0.022 }, 1, 1, 0);
    ingest(dataStore, adapter, index, feature);
    // and one feature with a different zoom level
    feature = AnalyticFeature.createGeometryFeature(ftype, "b2", "312", "flapper", grp2, 20.30203, factory.createPoint(new Coordinate(02.33, 0.23)), new String[] { "extra1" }, new double[] { 0.022 }, 2, 1, 0);
    ingest(dataStore, adapter, index, feature);
    CentroidManagerGeoWave<SimpleFeature> manager = new CentroidManagerGeoWave<>(dataStore, indexStore, adapterStore, new SimpleFeatureItemWrapperFactory(), adapter.getTypeName(), internalAdapterStore.getAdapterId(adapter.getTypeName()), index.getName(), "b1", 1);
    List<AnalyticItemWrapper<SimpleFeature>> centroids = manager.getCentroidsForGroup(null);
    assertEquals(3, centroids.size());
    feature = centroids.get(0).getWrappedItem();
    assertEquals(0.022, (Double) feature.getAttribute("extra1"), 0.001);
    centroids = manager.getCentroidsForGroup(grp1);
    assertEquals(2, centroids.size());
    centroids = manager.getCentroidsForGroup(grp2);
    assertEquals(1, centroids.size());
    feature = centroids.get(0).getWrappedItem();
    assertEquals(0.022, (Double) feature.getAttribute("extra1"), 0.001);
    manager = new CentroidManagerGeoWave<>(dataStore, indexStore, adapterStore, new SimpleFeatureItemWrapperFactory(), adapter.getTypeName(), internalAdapterStore.getAdapterId(adapter.getTypeName()), index.getName(), "b1", 1);
    manager.processForAllGroups(new CentroidProcessingFn<SimpleFeature>() {

        @Override
        public int processGroup(final String groupID, final List<AnalyticItemWrapper<SimpleFeature>> centroids) {
            if (groupID.equals(grp1)) {
                assertEquals(2, centroids.size());
            } else if (groupID.equals(grp2)) {
                assertEquals(1, centroids.size());
            } else {
                assertTrue("what group is this : " + groupID, false);
            }
            return 0;
        }
    });
}
Also used : GeometryFactory(org.locationtech.jts.geom.GeometryFactory) InternalAdapterStore(org.locationtech.geowave.core.store.adapter.InternalAdapterStore) SimpleFeatureItemWrapperFactory(org.locationtech.geowave.analytic.SimpleFeatureItemWrapperFactory) Index(org.locationtech.geowave.core.store.api.Index) SpatialOptions(org.locationtech.geowave.core.geotime.index.SpatialOptions) SimpleFeature(org.opengis.feature.simple.SimpleFeature) StoreFactoryFamilySpi(org.locationtech.geowave.core.store.StoreFactoryFamilySpi) PersistentAdapterStore(org.locationtech.geowave.core.store.adapter.PersistentAdapterStore) MemoryStoreFactoryFamily(org.locationtech.geowave.core.store.memory.MemoryStoreFactoryFamily) SimpleFeatureType(org.opengis.feature.simple.SimpleFeatureType) Coordinate(org.locationtech.jts.geom.Coordinate) StoreFactoryOptions(org.locationtech.geowave.core.store.StoreFactoryOptions) DataStore(org.locationtech.geowave.core.store.api.DataStore) FeatureDataAdapter(org.locationtech.geowave.adapter.vector.FeatureDataAdapter) AnalyticItemWrapper(org.locationtech.geowave.analytic.AnalyticItemWrapper) IndexStore(org.locationtech.geowave.core.store.index.IndexStore) Test(org.junit.Test)

Example 4 with StoreFactoryFamilySpi

use of org.locationtech.geowave.core.store.StoreFactoryFamilySpi in project geowave by locationtech.

the class GeoWaveInputFormat method validateOptions.

/**
 * Check whether a configuration is fully configured to be used with an Accumulo
 * {@link org.apache.hadoop.mapreduce.InputFormat}.
 *
 * @param context the Hadoop context for the configured job
 * @throws IOException if the context is improperly configured
 * @since 1.5.0
 */
protected static void validateOptions(final JobContext context) throws IOException {
    // from the job context
    try {
        final Map<String, String> configOptions = getStoreOptionsMap(context);
        final StoreFactoryFamilySpi factoryFamily = GeoWaveStoreFinder.findStoreFamily(configOptions);
        if (factoryFamily == null) {
            final String msg = "Unable to find GeoWave data store";
            LOGGER.warn(msg);
            throw new IOException(msg);
        }
    } catch (final Exception e) {
        LOGGER.warn("Error finding GeoWave stores", e);
        throw new IOException("Error finding GeoWave stores", e);
    }
}
Also used : StoreFactoryFamilySpi(org.locationtech.geowave.core.store.StoreFactoryFamilySpi) IOException(java.io.IOException) IOException(java.io.IOException)

Example 5 with StoreFactoryFamilySpi

use of org.locationtech.geowave.core.store.StoreFactoryFamilySpi in project geowave by locationtech.

the class ListStorePluginsCommand method computeResults.

@Override
public String computeResults(final OperationParams params) {
    final StringBuilder builder = new StringBuilder();
    builder.append("Available datastores currently registered:\n");
    final Map<String, StoreFactoryFamilySpi> dataStoreFactories = GeoWaveStoreFinder.getRegisteredStoreFactoryFamilies();
    for (final Entry<String, StoreFactoryFamilySpi> dataStoreFactoryEntry : dataStoreFactories.entrySet()) {
        final StoreFactoryFamilySpi dataStoreFactory = dataStoreFactoryEntry.getValue();
        final String desc = dataStoreFactory.getDescription() == null ? "no description" : dataStoreFactory.getDescription();
        builder.append(String.format("%n  %s:%n    %s%n", dataStoreFactory.getType(), desc));
    }
    return builder.toString();
}
Also used : StoreFactoryFamilySpi(org.locationtech.geowave.core.store.StoreFactoryFamilySpi)

Aggregations

StoreFactoryFamilySpi (org.locationtech.geowave.core.store.StoreFactoryFamilySpi)8 DataStore (org.locationtech.geowave.core.store.api.DataStore)5 Index (org.locationtech.geowave.core.store.api.Index)5 Test (org.junit.Test)4 MemoryStoreFactoryFamily (org.locationtech.geowave.core.store.memory.MemoryStoreFactoryFamily)4 FeatureDataAdapter (org.locationtech.geowave.adapter.vector.FeatureDataAdapter)2 SimpleFeatureItemWrapperFactory (org.locationtech.geowave.analytic.SimpleFeatureItemWrapperFactory)2 SpatialOptions (org.locationtech.geowave.core.geotime.index.SpatialOptions)2 NumericRange (org.locationtech.geowave.core.index.numeric.NumericRange)2 StoreFactoryOptions (org.locationtech.geowave.core.store.StoreFactoryOptions)2 MockComponents (org.locationtech.geowave.core.store.adapter.MockComponents)2 MockAbstractDataAdapter (org.locationtech.geowave.core.store.adapter.MockComponents.MockAbstractDataAdapter)2 PersistentAdapterStore (org.locationtech.geowave.core.store.adapter.PersistentAdapterStore)2 Statistic (org.locationtech.geowave.core.store.api.Statistic)2 VisibilityHandler (org.locationtech.geowave.core.store.api.VisibilityHandler)2 GlobalVisibilityHandler (org.locationtech.geowave.core.store.data.visibility.GlobalVisibilityHandler)2 IndexImpl (org.locationtech.geowave.core.store.index.IndexImpl)2 IndexStore (org.locationtech.geowave.core.store.index.IndexStore)2 DataIdQuery (org.locationtech.geowave.core.store.query.constraints.DataIdQuery)2 DataStatisticsStore (org.locationtech.geowave.core.store.statistics.DataStatisticsStore)2