Repository: locationtech/geowave
Branch: master
Commit: 998f3e4af31a
Files: 3163
Total size: 13.7 MB
Directory structure:
gitextract_mqqhxs54/
├── .gitattributes
├── .github/
│ └── workflows/
│ ├── publish.yml
│ └── test.yml
├── .gitignore
├── .utility/
│ ├── .maven.xml
│ ├── build-dev-resources.sh
│ ├── build-python-docs.sh
│ ├── publish-artifacts.sh
│ ├── publish-docs.sh
│ ├── retry
│ ├── run-python-tests.sh
│ └── run-tests.sh
├── CONTRIBUTING.md
├── LICENSE
├── NOTICE
├── README.md
├── analytics/
│ ├── api/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ ├── java/
│ │ │ │ └── org/
│ │ │ │ └── locationtech/
│ │ │ │ └── geowave/
│ │ │ │ └── analytic/
│ │ │ │ ├── AdapterWithObjectWritable.java
│ │ │ │ ├── AnalyticFeature.java
│ │ │ │ ├── AnalyticItemWrapper.java
│ │ │ │ ├── AnalyticItemWrapperFactory.java
│ │ │ │ ├── AnalyticPersistableRegistry.java
│ │ │ │ ├── GeoObjectDimensionValues.java
│ │ │ │ ├── GeometryCalculations.java
│ │ │ │ ├── GeometryDataSetGenerator.java
│ │ │ │ ├── GeometryHullTool.java
│ │ │ │ ├── IndependentJobRunner.java
│ │ │ │ ├── Projection.java
│ │ │ │ ├── PropertyManagement.java
│ │ │ │ ├── ScopedJobConfiguration.java
│ │ │ │ ├── SerializableAdapterStore.java
│ │ │ │ ├── ShapefileTool.java
│ │ │ │ ├── SimpleFeatureItemWrapperFactory.java
│ │ │ │ ├── SimpleFeatureProjection.java
│ │ │ │ ├── clustering/
│ │ │ │ │ ├── CentroidItemWrapperFactory.java
│ │ │ │ │ ├── CentroidManager.java
│ │ │ │ │ ├── CentroidManagerGeoWave.java
│ │ │ │ │ ├── CentroidPairing.java
│ │ │ │ │ ├── ClusteringUtils.java
│ │ │ │ │ ├── DistortionGroupManagement.java
│ │ │ │ │ ├── LongCentroid.java
│ │ │ │ │ ├── NeighborData.java
│ │ │ │ │ ├── NestedGroupCentroidAssignment.java
│ │ │ │ │ └── exception/
│ │ │ │ │ └── MatchingCentroidNotFoundException.java
│ │ │ │ ├── distance/
│ │ │ │ │ ├── CoordinateCircleDistanceFn.java
│ │ │ │ │ ├── CoordinateCosineDistanceFn.java
│ │ │ │ │ ├── CoordinateEuclideanDistanceFn.java
│ │ │ │ │ ├── DistanceFn.java
│ │ │ │ │ ├── FeatureCentroidDistanceFn.java
│ │ │ │ │ ├── FeatureCentroidOrthodromicDistanceFn.java
│ │ │ │ │ ├── FeatureDistanceFn.java
│ │ │ │ │ ├── FeatureGeometryDistanceFn.java
│ │ │ │ │ └── GeometryCentroidDistanceFn.java
│ │ │ │ ├── extract/
│ │ │ │ │ ├── CentroidExtractor.java
│ │ │ │ │ ├── DimensionExtractor.java
│ │ │ │ │ ├── EmptyDimensionExtractor.java
│ │ │ │ │ ├── SimpleFeatureCentroidExtractor.java
│ │ │ │ │ ├── SimpleFeatureGeometryExtractor.java
│ │ │ │ │ ├── SimpleFeatureInteriorPointExtractor.java
│ │ │ │ │ └── TimeDimensionExtractor.java
│ │ │ │ ├── kmeans/
│ │ │ │ │ ├── AssociationNotification.java
│ │ │ │ │ ├── CentroidAssociationFn.java
│ │ │ │ │ └── serial/
│ │ │ │ │ ├── AnalyticStats.java
│ │ │ │ │ ├── KMeansParallelInitialize.java
│ │ │ │ │ └── StatsMap.java
│ │ │ │ ├── kryo/
│ │ │ │ │ ├── FeatureSerializer.java
│ │ │ │ │ ├── GridCoverageWritableSerializer.java
│ │ │ │ │ └── PersistableSerializer.java
│ │ │ │ ├── model/
│ │ │ │ │ ├── IndexModelBuilder.java
│ │ │ │ │ └── SpatialIndexModelBuilder.java
│ │ │ │ ├── nn/
│ │ │ │ │ ├── DefaultNeighborList.java
│ │ │ │ │ ├── DistanceProfile.java
│ │ │ │ │ ├── DistanceProfileGenerateFn.java
│ │ │ │ │ ├── NNProcessor.java
│ │ │ │ │ ├── NeighborIndex.java
│ │ │ │ │ ├── NeighborList.java
│ │ │ │ │ ├── NeighborListFactory.java
│ │ │ │ │ ├── NullList.java
│ │ │ │ │ └── TypeConverter.java
│ │ │ │ ├── param/
│ │ │ │ │ ├── BasicParameterHelper.java
│ │ │ │ │ ├── CentroidParameters.java
│ │ │ │ │ ├── ClusteringParameters.java
│ │ │ │ │ ├── CommonParameters.java
│ │ │ │ │ ├── ExtractParameters.java
│ │ │ │ │ ├── FormatConfiguration.java
│ │ │ │ │ ├── GlobalParameters.java
│ │ │ │ │ ├── GroupParameterEnum.java
│ │ │ │ │ ├── HullParameters.java
│ │ │ │ │ ├── InputParameters.java
│ │ │ │ │ ├── InputStoreParameterHelper.java
│ │ │ │ │ ├── JumpParameters.java
│ │ │ │ │ ├── MapReduceParameters.java
│ │ │ │ │ ├── OutputParameters.java
│ │ │ │ │ ├── OutputStoreParameterHelper.java
│ │ │ │ │ ├── ParameterEnum.java
│ │ │ │ │ ├── ParameterHelper.java
│ │ │ │ │ ├── PartitionParameters.java
│ │ │ │ │ ├── SampleParameters.java
│ │ │ │ │ ├── StoreParameters.java
│ │ │ │ │ └── annotations/
│ │ │ │ │ ├── CentroidParameter.java
│ │ │ │ │ ├── ClusteringParameter.java
│ │ │ │ │ ├── CommonParameter.java
│ │ │ │ │ ├── ExtractParameter.java
│ │ │ │ │ ├── GlobalParameter.java
│ │ │ │ │ ├── HullParameter.java
│ │ │ │ │ ├── InputParameter.java
│ │ │ │ │ ├── JumpParameter.java
│ │ │ │ │ ├── MapReduceParameter.java
│ │ │ │ │ ├── OutputParameter.java
│ │ │ │ │ ├── PartitionParameter.java
│ │ │ │ │ └── SampleParameter.java
│ │ │ │ ├── partitioner/
│ │ │ │ │ ├── AbstractPartitioner.java
│ │ │ │ │ ├── BoundaryPartitioner.java
│ │ │ │ │ ├── OrthodromicDistancePartitioner.java
│ │ │ │ │ └── Partitioner.java
│ │ │ │ ├── sample/
│ │ │ │ │ ├── BahmanEtAlSampleProbabilityFn.java
│ │ │ │ │ ├── RandomProbabilitySampleFn.java
│ │ │ │ │ ├── SampleNotification.java
│ │ │ │ │ ├── SampleProbabilityFn.java
│ │ │ │ │ ├── Sampler.java
│ │ │ │ │ └── function/
│ │ │ │ │ ├── CentroidDistanceBasedSamplingRankFunction.java
│ │ │ │ │ ├── RandomSamplingRankFunction.java
│ │ │ │ │ └── SamplingRankFunction.java
│ │ │ │ └── store/
│ │ │ │ └── PersistableStore.java
│ │ │ └── resources/
│ │ │ └── META-INF/
│ │ │ └── services/
│ │ │ └── org.locationtech.geowave.core.index.persist.PersistableRegistrySpi
│ │ └── test/
│ │ └── java/
│ │ └── org/
│ │ └── locationtech/
│ │ └── geowave/
│ │ └── analytic/
│ │ ├── AnalyticFeatureTest.java
│ │ ├── GeometryCalculationsTest.java
│ │ ├── GeometryDataSetGeneratorTest.java
│ │ ├── GeometryGenerator.java
│ │ ├── GeometryHullToolTest.java
│ │ ├── PropertyManagementTest.java
│ │ ├── SerializableAdapterStoreTest.java
│ │ ├── SimpleFeatureCentroidExractorTest.java
│ │ ├── clustering/
│ │ │ ├── CentroidManagerTest.java
│ │ │ ├── DistortionGroupManagementTest.java
│ │ │ └── NestedGroupCentroidAssignmentTest.java
│ │ ├── distance/
│ │ │ ├── CoordinateCircleDistanceFnTest.java
│ │ │ └── FeatureDistanceFnTest.java
│ │ ├── kmeans/
│ │ │ ├── CentroidAssociationFnTest.java
│ │ │ └── KMeansParallelInitializeTest.java
│ │ ├── kryo/
│ │ │ └── FeatureSerializationTest.java
│ │ ├── nn/
│ │ │ └── NNProcessorTest.java
│ │ └── partitioner/
│ │ ├── BoundaryDistancePartitionerTest.java
│ │ └── OrthodromicDistancePartitionerTest.java
│ ├── mapreduce/
│ │ ├── .gitignore
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ ├── java/
│ │ │ │ └── org/
│ │ │ │ └── locationtech/
│ │ │ │ └── geowave/
│ │ │ │ └── analytic/
│ │ │ │ └── mapreduce/
│ │ │ │ ├── CountofDoubleWritable.java
│ │ │ │ ├── DoubleOutputFormat.java
│ │ │ │ ├── GeoWaveAnalyticJobRunner.java
│ │ │ │ ├── GeoWaveInputFormatConfiguration.java
│ │ │ │ ├── GeoWaveOutputFormatConfiguration.java
│ │ │ │ ├── GroupIDText.java
│ │ │ │ ├── HadoopOptions.java
│ │ │ │ ├── MapReduceIntegration.java
│ │ │ │ ├── MapReduceJobController.java
│ │ │ │ ├── MapReduceJobRunner.java
│ │ │ │ ├── SequenceFileInputFormatConfiguration.java
│ │ │ │ ├── SequenceFileOutputFormatConfiguration.java
│ │ │ │ ├── ToolRunnerMapReduceIntegration.java
│ │ │ │ ├── clustering/
│ │ │ │ │ ├── ConvexHullMapReduce.java
│ │ │ │ │ ├── GroupAssignmentMapReduce.java
│ │ │ │ │ ├── InputToOutputKeyReducer.java
│ │ │ │ │ ├── SimpleFeatureOutputReducer.java
│ │ │ │ │ └── runner/
│ │ │ │ │ ├── AnalyticJobRunner.java
│ │ │ │ │ ├── ClusteringRunner.java
│ │ │ │ │ ├── ConvexHullJobRunner.java
│ │ │ │ │ ├── GeoWaveAnalyticExtractJobRunner.java
│ │ │ │ │ ├── GeoWaveInputLoadJobRunner.java
│ │ │ │ │ ├── GroupAssigmentJobRunner.java
│ │ │ │ │ ├── MultiLevelClusteringJobRunner.java
│ │ │ │ │ ├── MultiLevelJumpKMeansClusteringJobRunner.java
│ │ │ │ │ └── MultiLevelKMeansClusteringJobRunner.java
│ │ │ │ ├── dbscan/
│ │ │ │ │ ├── Cluster.java
│ │ │ │ │ ├── ClusterItem.java
│ │ │ │ │ ├── ClusterItemDistanceFn.java
│ │ │ │ │ ├── ClusterNeighborList.java
│ │ │ │ │ ├── ClusterUnionList.java
│ │ │ │ │ ├── DBScanClusterList.java
│ │ │ │ │ ├── DBScanIterationsJobRunner.java
│ │ │ │ │ ├── DBScanJobRunner.java
│ │ │ │ │ ├── DBScanMapReduce.java
│ │ │ │ │ ├── PreProcessSingleItemClusterList.java
│ │ │ │ │ └── SingleItemClusterList.java
│ │ │ │ ├── kde/
│ │ │ │ │ ├── CellCounter.java
│ │ │ │ │ ├── CellSummationCombiner.java
│ │ │ │ │ ├── CellSummationReducer.java
│ │ │ │ │ ├── DoubleLevelPartitioner.java
│ │ │ │ │ ├── GaussianCellMapper.java
│ │ │ │ │ ├── GaussianFilter.java
│ │ │ │ │ ├── IdentityMapper.java
│ │ │ │ │ ├── KDECommandLineOptions.java
│ │ │ │ │ ├── KDEJobRunner.java
│ │ │ │ │ ├── KDEReducer.java
│ │ │ │ │ ├── LevelPartitioner.java
│ │ │ │ │ ├── MapContextCellCounter.java
│ │ │ │ │ └── compare/
│ │ │ │ │ ├── ComparisonAccumuloStatsReducer.java
│ │ │ │ │ ├── ComparisonCellData.java
│ │ │ │ │ ├── ComparisonCellDataReducer.java
│ │ │ │ │ ├── ComparisonCellLevelPartitioner.java
│ │ │ │ │ ├── ComparisonCellSummationReducer.java
│ │ │ │ │ ├── ComparisonCombinedLevelPartitioner.java
│ │ │ │ │ ├── ComparisonCombiningStatsMapper.java
│ │ │ │ │ ├── ComparisonCombiningStatsReducer.java
│ │ │ │ │ ├── ComparisonCommandLineOptions.java
│ │ │ │ │ ├── ComparisonDoubleLevelPartitioner.java
│ │ │ │ │ ├── ComparisonGaussianCellMapper.java
│ │ │ │ │ ├── ComparisonIdentityMapper.java
│ │ │ │ │ ├── ComparisonLevelPartitioner.java
│ │ │ │ │ ├── ComparisonStatsJobRunner.java
│ │ │ │ │ └── NegativeCellIdCounter.java
│ │ │ │ ├── kmeans/
│ │ │ │ │ ├── KMeansDistortionMapReduce.java
│ │ │ │ │ ├── KMeansMapReduce.java
│ │ │ │ │ ├── KSamplerMapReduce.java
│ │ │ │ │ ├── UpdateCentroidCostMapReduce.java
│ │ │ │ │ └── runner/
│ │ │ │ │ ├── IterationCountCalculateRunner.java
│ │ │ │ │ ├── KMeansDistortionJobRunner.java
│ │ │ │ │ ├── KMeansIterationsJobRunner.java
│ │ │ │ │ ├── KMeansJobRunner.java
│ │ │ │ │ ├── KMeansJumpJobRunner.java
│ │ │ │ │ ├── KMeansParallelJobRunner.java
│ │ │ │ │ ├── KMeansSingleSampleJobRunner.java
│ │ │ │ │ ├── KSamplerJobRunner.java
│ │ │ │ │ ├── RankSamplerJobRunner.java
│ │ │ │ │ ├── SampleMultipleSetsJobRunner.java
│ │ │ │ │ ├── StripWeakCentroidsRunner.java
│ │ │ │ │ └── UpdateCentroidCostJobRunner.java
│ │ │ │ ├── nn/
│ │ │ │ │ ├── GeoWaveExtractNNJobRunner.java
│ │ │ │ │ ├── NNData.java
│ │ │ │ │ ├── NNJobRunner.java
│ │ │ │ │ └── NNMapReduce.java
│ │ │ │ └── operations/
│ │ │ │ ├── AnalyticOperationCLIProvider.java
│ │ │ │ ├── AnalyticSection.java
│ │ │ │ ├── DBScanCommand.java
│ │ │ │ ├── KdeCommand.java
│ │ │ │ ├── KmeansJumpCommand.java
│ │ │ │ ├── KmeansParallelCommand.java
│ │ │ │ ├── NearestNeighborCommand.java
│ │ │ │ └── options/
│ │ │ │ ├── CommonOptions.java
│ │ │ │ ├── DBScanOptions.java
│ │ │ │ ├── KMeansCommonOptions.java
│ │ │ │ ├── KMeansJumpOptions.java
│ │ │ │ ├── KMeansParallelOptions.java
│ │ │ │ ├── NearestNeighborOptions.java
│ │ │ │ ├── PropertyManagementConverter.java
│ │ │ │ └── QueryOptionsCommand.java
│ │ │ └── resources/
│ │ │ └── META-INF/
│ │ │ └── services/
│ │ │ └── org.locationtech.geowave.core.cli.spi.CLIOperationProviderSpi
│ │ └── test/
│ │ ├── java/
│ │ │ └── org/
│ │ │ └── locationtech/
│ │ │ └── geowave/
│ │ │ └── analytic/
│ │ │ └── mapreduce/
│ │ │ ├── TestMapReducePersistableRegistry.java
│ │ │ ├── clustering/
│ │ │ │ └── runner/
│ │ │ │ ├── ConvexHullJobRunnerTest.java
│ │ │ │ └── GroupAssigmentJobRunnerTest.java
│ │ │ ├── dbscan/
│ │ │ │ └── DBScanMapReduceTest.java
│ │ │ ├── kmeans/
│ │ │ │ ├── KMeansDistortionMapReduceTest.java
│ │ │ │ ├── KSamplerMapReduceTest.java
│ │ │ │ ├── SimpleFeatureImplSerialization.java
│ │ │ │ ├── TestObject.java
│ │ │ │ ├── TestObjectDataAdapter.java
│ │ │ │ ├── TestObjectDimExtractor.java
│ │ │ │ ├── TestObjectDistanceFn.java
│ │ │ │ ├── TestObjectExtractor.java
│ │ │ │ ├── TestObjectItemWrapperFactory.java
│ │ │ │ ├── TestObjectSerialization.java
│ │ │ │ ├── TestObjectWritable.java
│ │ │ │ └── runner/
│ │ │ │ ├── KMeansIterationsJobRunnerTest.java
│ │ │ │ └── StripWeakCentroidsRunnerTest.java
│ │ │ ├── nn/
│ │ │ │ ├── NNJobRunnerTest.java
│ │ │ │ └── NNMapReduceTest.java
│ │ │ └── operations/
│ │ │ └── options/
│ │ │ └── PropertyManagementConverterTest.java
│ │ └── resources/
│ │ ├── META-INF/
│ │ │ └── services/
│ │ │ └── org.locationtech.geowave.core.index.persist.PersistableRegistrySpi
│ │ └── log4j.properties
│ ├── pom.xml
│ ├── pyspark/
│ │ ├── .gitignore
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── python/
│ │ ├── geowave_pyspark/
│ │ │ ├── __init__.py
│ │ │ └── types.py
│ │ └── setup.py
│ └── spark/
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── java/
│ │ └── org/
│ │ └── locationtech/
│ │ └── geowave/
│ │ └── analytic/
│ │ └── spark/
│ │ ├── AnalyticOperationCLIProvider.java
│ │ ├── GeoWaveIndexedRDD.java
│ │ ├── GeoWaveRDD.java
│ │ ├── GeoWaveRDDLoader.java
│ │ ├── GeoWaveRasterRDD.java
│ │ ├── GeoWaveRegistrator.java
│ │ ├── GeoWaveSparkConf.java
│ │ ├── RDDOptions.java
│ │ ├── RDDUtils.java
│ │ ├── kde/
│ │ │ ├── KDERunner.java
│ │ │ └── operations/
│ │ │ ├── KDESparkCommand.java
│ │ │ └── KDESparkOptions.java
│ │ ├── kmeans/
│ │ │ ├── KMeansHullGenerator.java
│ │ │ ├── KMeansRunner.java
│ │ │ ├── KMeansUtils.java
│ │ │ └── operations/
│ │ │ ├── KMeansSparkOptions.java
│ │ │ └── KmeansSparkCommand.java
│ │ ├── resize/
│ │ │ ├── RasterTileResizeSparkRunner.java
│ │ │ └── ResizeSparkCommand.java
│ │ ├── sparksql/
│ │ │ ├── GeoWaveSpatialEncoders.java
│ │ │ ├── SimpleFeatureDataFrame.java
│ │ │ ├── SimpleFeatureDataType.java
│ │ │ ├── SimpleFeatureMapper.java
│ │ │ ├── SqlQueryRunner.java
│ │ │ ├── SqlResultsWriter.java
│ │ │ ├── operations/
│ │ │ │ ├── SparkSqlCommand.java
│ │ │ │ └── SparkSqlOptions.java
│ │ │ ├── udf/
│ │ │ │ ├── BufferOperation.java
│ │ │ │ ├── GeomContains.java
│ │ │ │ ├── GeomCovers.java
│ │ │ │ ├── GeomCrosses.java
│ │ │ │ ├── GeomDisjoint.java
│ │ │ │ ├── GeomDistance.java
│ │ │ │ ├── GeomEquals.java
│ │ │ │ ├── GeomFromWKT.java
│ │ │ │ ├── GeomFunction.java
│ │ │ │ ├── GeomFunctionRegistry.java
│ │ │ │ ├── GeomIntersects.java
│ │ │ │ ├── GeomOverlaps.java
│ │ │ │ ├── GeomTouches.java
│ │ │ │ ├── GeomWithin.java
│ │ │ │ ├── GeomWithinDistance.java
│ │ │ │ └── UDFRegistrySPI.java
│ │ │ ├── udt/
│ │ │ │ ├── AbstractGeometryUDT.java
│ │ │ │ ├── GeometryUDT.java
│ │ │ │ ├── LineStringUDT.java
│ │ │ │ ├── MultiLineStringUDT.java
│ │ │ │ ├── MultiPointUDT.java
│ │ │ │ ├── MultiPolygonUDT.java
│ │ │ │ ├── PointUDT.java
│ │ │ │ └── PolygonUDT.java
│ │ │ └── util/
│ │ │ ├── GeomReader.java
│ │ │ ├── GeomWriter.java
│ │ │ └── SchemaConverter.java
│ │ └── spatial/
│ │ ├── JoinOptions.java
│ │ ├── JoinStrategy.java
│ │ ├── SpatialJoin.java
│ │ ├── SpatialJoinRunner.java
│ │ ├── TieredSpatialJoin.java
│ │ └── operations/
│ │ ├── SpatialJoinCmdOptions.java
│ │ └── SpatialJoinCommand.java
│ └── resources/
│ └── META-INF/
│ └── services/
│ └── org.locationtech.geowave.core.cli.spi.CLIOperationProviderSpi
├── core/
│ ├── cli/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ ├── java/
│ │ │ │ └── org/
│ │ │ │ └── locationtech/
│ │ │ │ └── geowave/
│ │ │ │ └── core/
│ │ │ │ └── cli/
│ │ │ │ ├── Constants.java
│ │ │ │ ├── GeoWaveMain.java
│ │ │ │ ├── VersionUtils.java
│ │ │ │ ├── annotations/
│ │ │ │ │ ├── GeowaveOperation.java
│ │ │ │ │ └── PrefixParameter.java
│ │ │ │ ├── api/
│ │ │ │ │ ├── Command.java
│ │ │ │ │ ├── DefaultOperation.java
│ │ │ │ │ ├── DefaultPluginOptions.java
│ │ │ │ │ ├── Operation.java
│ │ │ │ │ ├── OperationParams.java
│ │ │ │ │ ├── PluginOptions.java
│ │ │ │ │ ├── ServiceEnabledCommand.java
│ │ │ │ │ └── ServiceStatus.java
│ │ │ │ ├── converters/
│ │ │ │ │ ├── GeoWaveBaseConverter.java
│ │ │ │ │ ├── OptionalPasswordConverter.java
│ │ │ │ │ ├── PasswordConverter.java
│ │ │ │ │ └── RequiredFieldConverter.java
│ │ │ │ ├── exceptions/
│ │ │ │ │ ├── DuplicateEntryException.java
│ │ │ │ │ └── TargetNotFoundException.java
│ │ │ │ ├── operations/
│ │ │ │ │ ├── ExplainCommand.java
│ │ │ │ │ ├── GeoWaveTopLevelSection.java
│ │ │ │ │ ├── HelpCommand.java
│ │ │ │ │ ├── TopLevelOperationProvider.java
│ │ │ │ │ ├── config/
│ │ │ │ │ │ ├── ConfigOperationProvider.java
│ │ │ │ │ │ ├── ConfigSection.java
│ │ │ │ │ │ ├── ListCommand.java
│ │ │ │ │ │ ├── SetCommand.java
│ │ │ │ │ │ ├── options/
│ │ │ │ │ │ │ └── ConfigOptions.java
│ │ │ │ │ │ └── security/
│ │ │ │ │ │ ├── NewTokenCommand.java
│ │ │ │ │ │ ├── crypto/
│ │ │ │ │ │ │ ├── BaseEncryption.java
│ │ │ │ │ │ │ └── GeoWaveEncryption.java
│ │ │ │ │ │ └── utils/
│ │ │ │ │ │ └── SecurityUtils.java
│ │ │ │ │ └── util/
│ │ │ │ │ ├── UtilOperationProvider.java
│ │ │ │ │ └── UtilSection.java
│ │ │ │ ├── parser/
│ │ │ │ │ ├── CommandLineOperationParams.java
│ │ │ │ │ ├── ManualOperationParams.java
│ │ │ │ │ └── OperationParser.java
│ │ │ │ ├── prefix/
│ │ │ │ │ ├── JCommanderPrefixTranslator.java
│ │ │ │ │ ├── JCommanderPropertiesTransformer.java
│ │ │ │ │ ├── JCommanderTranslationMap.java
│ │ │ │ │ ├── JavassistUtils.java
│ │ │ │ │ ├── PrefixedJCommander.java
│ │ │ │ │ └── TranslationEntry.java
│ │ │ │ ├── spi/
│ │ │ │ │ ├── CLIOperationProviderSpi.java
│ │ │ │ │ ├── DefaultConfigProviderSpi.java
│ │ │ │ │ ├── OperationEntry.java
│ │ │ │ │ └── OperationRegistry.java
│ │ │ │ └── utils/
│ │ │ │ ├── ConsoleTablePrinter.java
│ │ │ │ ├── FileUtils.java
│ │ │ │ ├── FirstElementListComparator.java
│ │ │ │ ├── JCommanderParameterUtils.java
│ │ │ │ ├── PropertiesUtils.java
│ │ │ │ ├── URLUtils.java
│ │ │ │ └── ValueConverter.java
│ │ │ └── resources/
│ │ │ └── META-INF/
│ │ │ └── services/
│ │ │ └── org.locationtech.geowave.core.cli.spi.CLIOperationProviderSpi
│ │ └── test/
│ │ └── java/
│ │ └── org/
│ │ └── locationtech/
│ │ └── geowave/
│ │ └── core/
│ │ └── cli/
│ │ ├── VersionUtilsTest.java
│ │ ├── api/
│ │ │ └── ServiceEnableCommandTest.java
│ │ ├── operations/
│ │ │ ├── ExplainCommandTest.java
│ │ │ ├── HelpCommandTest.java
│ │ │ └── config/
│ │ │ ├── SetCommandTest.java
│ │ │ ├── options/
│ │ │ │ └── ConfigOptionsTest.java
│ │ │ └── security/
│ │ │ └── SecurityUtilsTest.java
│ │ ├── parser/
│ │ │ └── OperationParserTest.java
│ │ ├── prefix/
│ │ │ ├── JCommanderPrefixTranslatorTest.java
│ │ │ ├── JCommanderPropertiesTransformerTest.java
│ │ │ ├── JCommanderTranslationMapTest.java
│ │ │ ├── JavassistUtilsTest.java
│ │ │ ├── PrefixedJCommanderTest.java
│ │ │ └── TranslationEntryTest.java
│ │ └── spi/
│ │ └── OperationRegistryTest.java
│ ├── geotime/
│ │ ├── .gitignore
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ ├── java/
│ │ │ │ └── org/
│ │ │ │ └── locationtech/
│ │ │ │ └── geowave/
│ │ │ │ └── core/
│ │ │ │ └── geotime/
│ │ │ │ ├── GeoTimePersistableRegistry.java
│ │ │ │ ├── adapter/
│ │ │ │ │ ├── GeometryFieldMapper.java
│ │ │ │ │ ├── GeotimeRegisteredIndexFieldMappers.java
│ │ │ │ │ ├── LatLonFieldMapper.java
│ │ │ │ │ ├── SpatialFieldDescriptor.java
│ │ │ │ │ ├── SpatialFieldDescriptorBuilder.java
│ │ │ │ │ ├── SpatialFieldMapper.java
│ │ │ │ │ ├── TemporalFieldDescriptor.java
│ │ │ │ │ ├── TemporalFieldDescriptorBuilder.java
│ │ │ │ │ ├── TemporalIntervalFieldMapper.java
│ │ │ │ │ ├── TemporalLongFieldMapper.java
│ │ │ │ │ ├── TimeInstantFieldMapper.java
│ │ │ │ │ ├── TimeRangeFieldMapper.java
│ │ │ │ │ └── annotation/
│ │ │ │ │ ├── GeoWaveSpatialField.java
│ │ │ │ │ ├── GeoWaveTemporalField.java
│ │ │ │ │ ├── SpatialAnnotatedFieldDescriptorBuilder.java
│ │ │ │ │ └── TemporalAnnotatedFieldDescriptorBuilder.java
│ │ │ │ ├── binning/
│ │ │ │ │ ├── ComplexGeometryBinningOption.java
│ │ │ │ │ ├── GeohashBinningHelper.java
│ │ │ │ │ ├── H3BinningHelper.java
│ │ │ │ │ ├── S2BinningHelper.java
│ │ │ │ │ ├── SpatialBinningHelper.java
│ │ │ │ │ └── SpatialBinningType.java
│ │ │ │ ├── index/
│ │ │ │ │ ├── CommonSpatialOptions.java
│ │ │ │ │ ├── SpatialAttributeIndexProvider.java
│ │ │ │ │ ├── SpatialDimensionalityTypeProvider.java
│ │ │ │ │ ├── SpatialIndexFilter.java
│ │ │ │ │ ├── SpatialOptions.java
│ │ │ │ │ ├── SpatialTemporalDimensionalityTypeProvider.java
│ │ │ │ │ ├── SpatialTemporalOptions.java
│ │ │ │ │ ├── TemporalAttributeIndexProvider.java
│ │ │ │ │ ├── TemporalDimensionalityTypeProvider.java
│ │ │ │ │ ├── TemporalOptions.java
│ │ │ │ │ ├── api/
│ │ │ │ │ │ ├── SpatialIndexBuilder.java
│ │ │ │ │ │ ├── SpatialTemporalIndexBuilder.java
│ │ │ │ │ │ └── TemporalIndexBuilder.java
│ │ │ │ │ └── dimension/
│ │ │ │ │ ├── LatitudeDefinition.java
│ │ │ │ │ ├── LongitudeDefinition.java
│ │ │ │ │ ├── SimpleTimeDefinition.java
│ │ │ │ │ ├── SimpleTimeIndexStrategy.java
│ │ │ │ │ ├── TemporalBinningStrategy.java
│ │ │ │ │ └── TimeDefinition.java
│ │ │ │ ├── store/
│ │ │ │ │ ├── GeotoolsFeatureDataAdapter.java
│ │ │ │ │ ├── InternalGeotoolsDataAdapterWrapper.java
│ │ │ │ │ ├── InternalGeotoolsFeatureDataAdapter.java
│ │ │ │ │ ├── dimension/
│ │ │ │ │ │ ├── BaseCustomCRSSpatialDimension.java
│ │ │ │ │ │ ├── CustomCRSBoundedSpatialDimension.java
│ │ │ │ │ │ ├── CustomCRSBoundedSpatialDimensionX.java
│ │ │ │ │ │ ├── CustomCRSBoundedSpatialDimensionY.java
│ │ │ │ │ │ ├── CustomCRSSpatialDimension.java
│ │ │ │ │ │ ├── CustomCRSSpatialField.java
│ │ │ │ │ │ ├── CustomCRSUnboundedSpatialDimension.java
│ │ │ │ │ │ ├── CustomCRSUnboundedSpatialDimensionX.java
│ │ │ │ │ │ ├── CustomCRSUnboundedSpatialDimensionY.java
│ │ │ │ │ │ ├── CustomCrsIndexModel.java
│ │ │ │ │ │ ├── LatitudeField.java
│ │ │ │ │ │ ├── LongitudeField.java
│ │ │ │ │ │ ├── SpatialField.java
│ │ │ │ │ │ └── TimeField.java
│ │ │ │ │ ├── field/
│ │ │ │ │ │ ├── CalendarArraySerializationProvider.java
│ │ │ │ │ │ ├── CalendarSerializationProvider.java
│ │ │ │ │ │ ├── DateArraySerializationProvider.java
│ │ │ │ │ │ ├── DateSerializationProvider.java
│ │ │ │ │ │ ├── GeometryArraySerializationProvider.java
│ │ │ │ │ │ ├── GeometrySerializationProvider.java
│ │ │ │ │ │ ├── IntervalArraySerializationProvider.java
│ │ │ │ │ │ └── IntervalSerializationProvider.java
│ │ │ │ │ ├── query/
│ │ │ │ │ │ ├── AbstractVectorConstraints.java
│ │ │ │ │ │ ├── BaseVectorQueryBuilder.java
│ │ │ │ │ │ ├── ExplicitCQLQuery.java
│ │ │ │ │ │ ├── ExplicitSpatialQuery.java
│ │ │ │ │ │ ├── ExplicitSpatialTemporalQuery.java
│ │ │ │ │ │ ├── ExplicitTemporalQuery.java
│ │ │ │ │ │ ├── IndexOnlySpatialQuery.java
│ │ │ │ │ │ ├── OptimalCQLQuery.java
│ │ │ │ │ │ ├── ScaledTemporalRange.java
│ │ │ │ │ │ ├── SpatialQuery.java
│ │ │ │ │ │ ├── SpatialTemporalConstraintsBuilderImpl.java
│ │ │ │ │ │ ├── SpatialTemporalQuery.java
│ │ │ │ │ │ ├── TemporalConstraints.java
│ │ │ │ │ │ ├── TemporalConstraintsSet.java
│ │ │ │ │ │ ├── TemporalQuery.java
│ │ │ │ │ │ ├── TemporalRange.java
│ │ │ │ │ │ ├── VectorQueryBuilderImpl.java
│ │ │ │ │ │ ├── VectorQueryConstraintsFactoryImpl.java
│ │ │ │ │ │ ├── aggregate/
│ │ │ │ │ │ │ ├── BaseOptimalVectorAggregation.java
│ │ │ │ │ │ │ ├── BoundingBoxAggregation.java
│ │ │ │ │ │ │ ├── CommonIndexBoundingBoxAggregation.java
│ │ │ │ │ │ │ ├── CommonIndexTimeRangeAggregation.java
│ │ │ │ │ │ │ ├── OptimalVectorBoundingBoxAggregation.java
│ │ │ │ │ │ │ ├── OptimalVectorTimeRangeAggregation.java
│ │ │ │ │ │ │ ├── SpatialBinningStrategy.java
│ │ │ │ │ │ │ ├── SpatialCommonIndexedBinningStrategy.java
│ │ │ │ │ │ │ ├── SpatialFieldBinningStrategy.java
│ │ │ │ │ │ │ ├── SpatialSimpleFeatureBinningStrategy.java
│ │ │ │ │ │ │ ├── TimeRangeAggregation.java
│ │ │ │ │ │ │ ├── VectorAggregationQueryBuilderImpl.java
│ │ │ │ │ │ │ ├── VectorBoundingBoxAggregation.java
│ │ │ │ │ │ │ └── VectorTimeRangeAggregation.java
│ │ │ │ │ │ ├── api/
│ │ │ │ │ │ │ ├── SpatialTemporalConstraintsBuilder.java
│ │ │ │ │ │ │ ├── VectorAggregationQueryBuilder.java
│ │ │ │ │ │ │ ├── VectorQueryBuilder.java
│ │ │ │ │ │ │ └── VectorQueryConstraintsFactory.java
│ │ │ │ │ │ ├── filter/
│ │ │ │ │ │ │ ├── CQLQueryFilter.java
│ │ │ │ │ │ │ ├── SpatialQueryFilter.java
│ │ │ │ │ │ │ └── expression/
│ │ │ │ │ │ │ ├── CQLToGeoWaveConversionException.java
│ │ │ │ │ │ │ ├── CQLToGeoWaveFilterVisitor.java
│ │ │ │ │ │ │ ├── spatial/
│ │ │ │ │ │ │ │ ├── BBox.java
│ │ │ │ │ │ │ │ ├── BinarySpatialPredicate.java
│ │ │ │ │ │ │ │ ├── Crosses.java
│ │ │ │ │ │ │ │ ├── Disjoint.java
│ │ │ │ │ │ │ │ ├── FilterGeometry.java
│ │ │ │ │ │ │ │ ├── Intersects.java
│ │ │ │ │ │ │ │ ├── Overlaps.java
│ │ │ │ │ │ │ │ ├── PreparedFilterGeometry.java
│ │ │ │ │ │ │ │ ├── SpatialContains.java
│ │ │ │ │ │ │ │ ├── SpatialEqualTo.java
│ │ │ │ │ │ │ │ ├── SpatialExpression.java
│ │ │ │ │ │ │ │ ├── SpatialFieldValue.java
│ │ │ │ │ │ │ │ ├── SpatialLiteral.java
│ │ │ │ │ │ │ │ ├── SpatialNotEqualTo.java
│ │ │ │ │ │ │ │ ├── TextToSpatialExpression.java
│ │ │ │ │ │ │ │ ├── Touches.java
│ │ │ │ │ │ │ │ ├── UnpreparedFilterGeometry.java
│ │ │ │ │ │ │ │ └── Within.java
│ │ │ │ │ │ │ └── temporal/
│ │ │ │ │ │ │ ├── After.java
│ │ │ │ │ │ │ ├── Before.java
│ │ │ │ │ │ │ ├── BeforeOrDuring.java
│ │ │ │ │ │ │ ├── BinaryTemporalPredicate.java
│ │ │ │ │ │ │ ├── During.java
│ │ │ │ │ │ │ ├── DuringOrAfter.java
│ │ │ │ │ │ │ ├── TemporalBetween.java
│ │ │ │ │ │ │ ├── TemporalEqualTo.java
│ │ │ │ │ │ │ ├── TemporalExpression.java
│ │ │ │ │ │ │ ├── TemporalFieldValue.java
│ │ │ │ │ │ │ ├── TemporalLiteral.java
│ │ │ │ │ │ │ ├── TemporalNotEqualTo.java
│ │ │ │ │ │ │ └── TimeOverlaps.java
│ │ │ │ │ │ └── gwql/
│ │ │ │ │ │ ├── BboxFunction.java
│ │ │ │ │ │ ├── DateCastableType.java
│ │ │ │ │ │ ├── GWQLSpatialTemporalExtensions.java
│ │ │ │ │ │ ├── GeometryCastableType.java
│ │ │ │ │ │ ├── SpatialPredicates.java
│ │ │ │ │ │ ├── TemporalOperators.java
│ │ │ │ │ │ └── TemporalPredicates.java
│ │ │ │ │ └── statistics/
│ │ │ │ │ ├── AbstractBoundingBoxValue.java
│ │ │ │ │ ├── AbstractTimeRangeValue.java
│ │ │ │ │ ├── BoundingBoxStatistic.java
│ │ │ │ │ ├── GeotimeRegisteredStatistics.java
│ │ │ │ │ ├── SpatialTemporalStatisticQueryBuilder.java
│ │ │ │ │ ├── TimeRangeStatistic.java
│ │ │ │ │ └── binning/
│ │ │ │ │ ├── SpatialFieldValueBinningStrategy.java
│ │ │ │ │ └── TimeRangeFieldValueBinningStrategy.java
│ │ │ │ └── util/
│ │ │ │ ├── DWithinFilterVisitor.java
│ │ │ │ ├── ExtractAttributesFilter.java
│ │ │ │ ├── ExtractGeometryFilterVisitor.java
│ │ │ │ ├── ExtractGeometryFilterVisitorResult.java
│ │ │ │ ├── ExtractTimeFilterVisitor.java
│ │ │ │ ├── FilterToCQLTool.java
│ │ │ │ ├── GeometryUtils.java
│ │ │ │ ├── HasDWithinFilterVisitor.java
│ │ │ │ ├── IndexOptimizationUtils.java
│ │ │ │ ├── SimpleFeatureUserDataConfiguration.java
│ │ │ │ ├── SpatialIndexUtils.java
│ │ │ │ ├── TWKBReader.java
│ │ │ │ ├── TWKBUtils.java
│ │ │ │ ├── TWKBWriter.java
│ │ │ │ ├── TimeDescriptors.java
│ │ │ │ └── TimeUtils.java
│ │ │ └── resources/
│ │ │ └── META-INF/
│ │ │ └── services/
│ │ │ ├── org.locationtech.geowave.core.index.persist.PersistableRegistrySpi
│ │ │ ├── org.locationtech.geowave.core.store.data.field.FieldSerializationProviderSpi
│ │ │ ├── org.locationtech.geowave.core.store.index.AttributeIndexProviderSpi
│ │ │ ├── org.locationtech.geowave.core.store.index.IndexFieldMapperRegistrySPI
│ │ │ ├── org.locationtech.geowave.core.store.query.gwql.GWQLExtensionRegistrySpi
│ │ │ ├── org.locationtech.geowave.core.store.spi.DimensionalityTypeProviderSpi
│ │ │ └── org.locationtech.geowave.core.store.statistics.StatisticsRegistrySPI
│ │ └── test/
│ │ ├── java/
│ │ │ └── org/
│ │ │ └── locationtech/
│ │ │ └── geowave/
│ │ │ └── core/
│ │ │ └── geotime/
│ │ │ ├── TestGeoTimePersistableRegistry.java
│ │ │ ├── adapter/
│ │ │ │ ├── SpatialFieldDescriptorTest.java
│ │ │ │ ├── SpatialFieldMapperTest.java
│ │ │ │ └── annotation/
│ │ │ │ └── SpatialTemporalAnnotationsTest.java
│ │ │ ├── binning/
│ │ │ │ └── SpatialBinningTypeTest.java
│ │ │ ├── index/
│ │ │ │ ├── dimension/
│ │ │ │ │ ├── LongitudeDefinitionTest.java
│ │ │ │ │ ├── TemporalBinningStrategyTest.java
│ │ │ │ │ └── TimeDefinitionTest.java
│ │ │ │ └── sfc/
│ │ │ │ └── hilbert/
│ │ │ │ ├── HilbertSFCTest.java
│ │ │ │ ├── PrimitiveHilbertSFCTest.java
│ │ │ │ └── tiered/
│ │ │ │ └── TieredSFCIndexStrategyTest.java
│ │ │ ├── store/
│ │ │ │ ├── data/
│ │ │ │ │ └── PersistenceEncodingTest.java
│ │ │ │ ├── field/
│ │ │ │ │ └── GeoTimeReaderWriterTest.java
│ │ │ │ ├── query/
│ │ │ │ │ ├── BasicQueryTest.java
│ │ │ │ │ ├── SpatialQueryTest.java
│ │ │ │ │ ├── SpatialTemporalQueryTest.java
│ │ │ │ │ ├── TemporalConstraintsTest.java
│ │ │ │ │ ├── TemporalRangeTest.java
│ │ │ │ │ ├── aggregate/
│ │ │ │ │ │ ├── AbstractVectorAggregationTest.java
│ │ │ │ │ │ ├── CompositeAggregationTest.java
│ │ │ │ │ │ ├── GeohashBinningStrategyTest.java
│ │ │ │ │ │ ├── VectorBoundingBoxAggregationTest.java
│ │ │ │ │ │ ├── VectorCountAggregationTest.java
│ │ │ │ │ │ └── VectorMathAggregationTest.java
│ │ │ │ │ ├── filter/
│ │ │ │ │ │ └── expression/
│ │ │ │ │ │ ├── CQLToGeoWaveFilterTest.java
│ │ │ │ │ │ └── SpatialTemporalFilterExpressionTest.java
│ │ │ │ │ └── gwql/
│ │ │ │ │ └── GWQLParserTest.java
│ │ │ │ └── statistics/
│ │ │ │ └── BoundingBoxStatisticTest.java
│ │ │ └── util/
│ │ │ ├── GeometryUtilsTest.java
│ │ │ └── TWKBTest.java
│ │ └── resources/
│ │ └── META-INF/
│ │ └── services/
│ │ └── org.locationtech.geowave.core.index.persist.PersistableRegistrySpi
│ ├── index/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ ├── java/
│ │ │ │ └── org/
│ │ │ │ └── locationtech/
│ │ │ │ └── geowave/
│ │ │ │ └── core/
│ │ │ │ └── index/
│ │ │ │ ├── ByteArray.java
│ │ │ │ ├── ByteArrayRange.java
│ │ │ │ ├── ByteArrayUtils.java
│ │ │ │ ├── CompoundIndexStrategy.java
│ │ │ │ ├── Coordinate.java
│ │ │ │ ├── CoordinateRange.java
│ │ │ │ ├── CustomIndexStrategy.java
│ │ │ │ ├── FloatCompareUtils.java
│ │ │ │ ├── GeoWaveSerializationException.java
│ │ │ │ ├── HierarchicalNumericIndexStrategy.java
│ │ │ │ ├── IndexConstraints.java
│ │ │ │ ├── IndexData.java
│ │ │ │ ├── IndexDimensionHint.java
│ │ │ │ ├── IndexMetaData.java
│ │ │ │ ├── IndexPersistableRegistry.java
│ │ │ │ ├── IndexStrategy.java
│ │ │ │ ├── IndexUtils.java
│ │ │ │ ├── InsertionIds.java
│ │ │ │ ├── Mergeable.java
│ │ │ │ ├── MultiDimensionalCoordinateRanges.java
│ │ │ │ ├── MultiDimensionalCoordinateRangesArray.java
│ │ │ │ ├── MultiDimensionalCoordinates.java
│ │ │ │ ├── MultiDimensionalIndexData.java
│ │ │ │ ├── NullNumericIndexStrategy.java
│ │ │ │ ├── NumericIndexStrategy.java
│ │ │ │ ├── NumericIndexStrategyWrapper.java
│ │ │ │ ├── PartitionIndexStrategy.java
│ │ │ │ ├── PartitionIndexStrategyWrapper.java
│ │ │ │ ├── QueryRanges.java
│ │ │ │ ├── SPIServiceRegistry.java
│ │ │ │ ├── SinglePartitionInsertionIds.java
│ │ │ │ ├── SinglePartitionQueryRanges.java
│ │ │ │ ├── SortedIndexStrategy.java
│ │ │ │ ├── StringUtils.java
│ │ │ │ ├── VarintUtils.java
│ │ │ │ ├── dimension/
│ │ │ │ │ ├── BasicDimensionDefinition.java
│ │ │ │ │ ├── NumericDimensionDefinition.java
│ │ │ │ │ └── UnboundedDimensionDefinition.java
│ │ │ │ ├── lexicoder/
│ │ │ │ │ ├── ByteLexicoder.java
│ │ │ │ │ ├── DoubleLexicoder.java
│ │ │ │ │ ├── FloatLexicoder.java
│ │ │ │ │ ├── IntegerLexicoder.java
│ │ │ │ │ ├── Lexicoders.java
│ │ │ │ │ ├── LongLexicoder.java
│ │ │ │ │ ├── NumberLexicoder.java
│ │ │ │ │ └── ShortLexicoder.java
│ │ │ │ ├── numeric/
│ │ │ │ │ ├── BasicNumericDataset.java
│ │ │ │ │ ├── BinnedNumericDataset.java
│ │ │ │ │ ├── MultiDimensionalNumericData.java
│ │ │ │ │ ├── NumericData.java
│ │ │ │ │ ├── NumericRange.java
│ │ │ │ │ └── NumericValue.java
│ │ │ │ ├── persist/
│ │ │ │ │ ├── InternalPersistableRegistry.java
│ │ │ │ │ ├── Persistable.java
│ │ │ │ │ ├── PersistableFactory.java
│ │ │ │ │ ├── PersistableList.java
│ │ │ │ │ ├── PersistableRegistrySpi.java
│ │ │ │ │ └── PersistenceUtils.java
│ │ │ │ ├── sfc/
│ │ │ │ │ ├── BasicSFCIndexStrategy.java
│ │ │ │ │ ├── RangeDecomposition.java
│ │ │ │ │ ├── SFCDimensionDefinition.java
│ │ │ │ │ ├── SFCFactory.java
│ │ │ │ │ ├── SpaceFillingCurve.java
│ │ │ │ │ ├── binned/
│ │ │ │ │ │ └── BinnedSFCUtils.java
│ │ │ │ │ ├── hilbert/
│ │ │ │ │ │ ├── HilbertSFC.java
│ │ │ │ │ │ ├── HilbertSFCOperations.java
│ │ │ │ │ │ ├── PrimitiveHilbertSFCOperations.java
│ │ │ │ │ │ └── UnboundedHilbertSFCOperations.java
│ │ │ │ │ ├── tiered/
│ │ │ │ │ │ ├── SingleTierSubStrategy.java
│ │ │ │ │ │ ├── TieredSFCIndexFactory.java
│ │ │ │ │ │ └── TieredSFCIndexStrategy.java
│ │ │ │ │ ├── xz/
│ │ │ │ │ │ ├── XZHierarchicalIndexFactory.java
│ │ │ │ │ │ ├── XZHierarchicalIndexStrategy.java
│ │ │ │ │ │ └── XZOrderSFC.java
│ │ │ │ │ └── zorder/
│ │ │ │ │ ├── ZOrderSFC.java
│ │ │ │ │ └── ZOrderUtils.java
│ │ │ │ ├── simple/
│ │ │ │ │ ├── HashKeyIndexStrategy.java
│ │ │ │ │ ├── RoundRobinKeyIndexStrategy.java
│ │ │ │ │ ├── SimpleByteIndexStrategy.java
│ │ │ │ │ ├── SimpleDoubleIndexStrategy.java
│ │ │ │ │ ├── SimpleFloatIndexStrategy.java
│ │ │ │ │ ├── SimpleIntegerIndexStrategy.java
│ │ │ │ │ ├── SimpleLongIndexStrategy.java
│ │ │ │ │ ├── SimpleNumericIndexStrategy.java
│ │ │ │ │ └── SimpleShortIndexStrategy.java
│ │ │ │ └── text/
│ │ │ │ ├── BasicTextDataset.java
│ │ │ │ ├── CaseSensitivity.java
│ │ │ │ ├── EnumIndexStrategy.java
│ │ │ │ ├── EnumSearch.java
│ │ │ │ ├── ExplicitTextSearch.java
│ │ │ │ ├── MultiDimensionalTextData.java
│ │ │ │ ├── TextConstraints.java
│ │ │ │ ├── TextData.java
│ │ │ │ ├── TextIndexEntryConverter.java
│ │ │ │ ├── TextIndexStrategy.java
│ │ │ │ ├── TextIndexType.java
│ │ │ │ ├── TextIndexUtils.java
│ │ │ │ ├── TextRange.java
│ │ │ │ ├── TextSearch.java
│ │ │ │ ├── TextSearchPredicate.java
│ │ │ │ ├── TextSearchType.java
│ │ │ │ └── TextValue.java
│ │ │ └── resources/
│ │ │ └── META-INF/
│ │ │ └── services/
│ │ │ └── org.locationtech.geowave.core.index.persist.PersistableRegistrySpi
│ │ └── test/
│ │ ├── java/
│ │ │ └── org/
│ │ │ └── locationtech/
│ │ │ └── geowave/
│ │ │ └── core/
│ │ │ └── index/
│ │ │ ├── ByteArrayRangeTest.java
│ │ │ ├── ByteArrayUtilsTest.java
│ │ │ ├── CompoundIndexStrategyTest.java
│ │ │ ├── PersistenceUtilsTest.java
│ │ │ ├── StringUtilsTest.java
│ │ │ ├── TestIndexPersistableRegistry.java
│ │ │ ├── VarintUtilsTest.java
│ │ │ ├── dimension/
│ │ │ │ └── BasicDimensionDefinitionTest.java
│ │ │ ├── lexicoder/
│ │ │ │ ├── AbstractLexicoderTest.java
│ │ │ │ ├── ByteLexicoderTest.java
│ │ │ │ ├── DoubleLexicoderTest.java
│ │ │ │ ├── FloatLexicoderTest.java
│ │ │ │ ├── IntegerLexicoderTest.java
│ │ │ │ ├── LongLexicoderTest.java
│ │ │ │ └── ShortLexicoderTest.java
│ │ │ ├── sfc/
│ │ │ │ ├── data/
│ │ │ │ │ ├── BasicNumericDatasetTest.java
│ │ │ │ │ ├── NumericRangeTest.java
│ │ │ │ │ └── NumericValueTest.java
│ │ │ │ ├── xz/
│ │ │ │ │ └── XZOrderSFCTest.java
│ │ │ │ └── zorder/
│ │ │ │ └── ZOrderSFCTest.java
│ │ │ └── simple/
│ │ │ ├── HashKeyIndexStrategyTest.java
│ │ │ ├── RoundRobinKeyIndexStrategyTest.java
│ │ │ └── SimpleNumericIndexStrategyTest.java
│ │ └── resources/
│ │ └── META-INF/
│ │ └── services/
│ │ └── org.locationtech.geowave.core.index.persist.PersistableRegistrySpi
│ ├── ingest/
│ │ ├── .gitignore
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ ├── avro/
│ │ │ │ └── wholefile.avsc
│ │ │ ├── java/
│ │ │ │ └── org/
│ │ │ │ └── locationtech/
│ │ │ │ └── geowave/
│ │ │ │ └── core/
│ │ │ │ └── ingest/
│ │ │ │ ├── HdfsIngestHandler.java
│ │ │ │ ├── S3IngestHandler.java
│ │ │ │ ├── URLIngestUtils.java
│ │ │ │ ├── avro/
│ │ │ │ │ ├── AbstractStageWholeFileToAvro.java
│ │ │ │ │ ├── GenericAvroSerializer.java
│ │ │ │ │ ├── GeoWaveAvroFormatPlugin.java
│ │ │ │ │ ├── GeoWaveAvroPluginBase.java
│ │ │ │ │ └── GeoWaveAvroSchemaProvider.java
│ │ │ │ ├── hdfs/
│ │ │ │ │ ├── HdfsFile.java
│ │ │ │ │ ├── StageRunData.java
│ │ │ │ │ ├── StageToHdfsDriver.java
│ │ │ │ │ └── mapreduce/
│ │ │ │ │ ├── AbstractLocalIngestWithMapper.java
│ │ │ │ │ ├── AbstractMapReduceIngest.java
│ │ │ │ │ ├── ByteBufferBackedInputStream.java
│ │ │ │ │ ├── IngestFromHdfsDriver.java
│ │ │ │ │ ├── IngestFromHdfsPlugin.java
│ │ │ │ │ ├── IngestMapper.java
│ │ │ │ │ ├── IngestPersistableRegistry.java
│ │ │ │ │ ├── IngestReducer.java
│ │ │ │ │ ├── IngestWithMapper.java
│ │ │ │ │ ├── IngestWithMapperJobRunner.java
│ │ │ │ │ ├── IngestWithReducer.java
│ │ │ │ │ ├── IngestWithReducerJobRunner.java
│ │ │ │ │ ├── IntermediateKeyValueMapper.java
│ │ │ │ │ ├── KeyValueData.java
│ │ │ │ │ └── MapReduceCommandLineOptions.java
│ │ │ │ ├── kafka/
│ │ │ │ │ ├── IngestFromKafkaDriver.java
│ │ │ │ │ ├── KafkaCommandLineArgument.java
│ │ │ │ │ ├── KafkaCommandLineOptions.java
│ │ │ │ │ ├── KafkaConsumerCommandLineOptions.java
│ │ │ │ │ ├── KafkaIngestRunData.java
│ │ │ │ │ ├── KafkaProducerCommandLineOptions.java
│ │ │ │ │ ├── PropertyReference.java
│ │ │ │ │ ├── StageKafkaData.java
│ │ │ │ │ └── StageToKafkaDriver.java
│ │ │ │ ├── local/
│ │ │ │ │ └── LocalFileIngestCLIDriver.java
│ │ │ │ ├── operations/
│ │ │ │ │ ├── AddTypeCommand.java
│ │ │ │ │ ├── ConfigAWSCommand.java
│ │ │ │ │ ├── IngestOperationProvider.java
│ │ │ │ │ ├── IngestSection.java
│ │ │ │ │ ├── KafkaToGeoWaveCommand.java
│ │ │ │ │ ├── ListIngestPluginsCommand.java
│ │ │ │ │ ├── LocalToGeoWaveCommand.java
│ │ │ │ │ ├── LocalToHdfsCommand.java
│ │ │ │ │ ├── LocalToKafkaCommand.java
│ │ │ │ │ ├── LocalToMapReduceToGeoWaveCommand.java
│ │ │ │ │ ├── MapReduceToGeoWaveCommand.java
│ │ │ │ │ ├── SparkToGeoWaveCommand.java
│ │ │ │ │ └── options/
│ │ │ │ │ └── IngestFormatPluginOptions.java
│ │ │ │ ├── spark/
│ │ │ │ │ ├── SparkCommandLineOptions.java
│ │ │ │ │ └── SparkIngestDriver.java
│ │ │ │ └── spi/
│ │ │ │ ├── IngestFormatPluginProviderSpi.java
│ │ │ │ └── IngestFormatPluginRegistry.java
│ │ │ └── resources/
│ │ │ └── META-INF/
│ │ │ └── services/
│ │ │ ├── java.nio.file.spi.FileSystemProvider
│ │ │ ├── org.locationtech.geowave.core.cli.spi.CLIOperationProviderSpi
│ │ │ ├── org.locationtech.geowave.core.index.persist.PersistableRegistrySpi
│ │ │ ├── org.locationtech.geowave.core.store.ingest.IngestUrlHandlerSpi
│ │ │ └── org.locationtech.geowave.core.store.ingest.LocalFileIngestPluginRegistrySpi
│ │ └── test/
│ │ └── java/
│ │ └── org/
│ │ └── locationtech/
│ │ └── geowave/
│ │ └── ingest/
│ │ └── s3/
│ │ └── DefaultGeoWaveAWSCredentialsProviderTest.java
│ ├── mapreduce/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ ├── java/
│ │ │ └── org/
│ │ │ └── locationtech/
│ │ │ └── geowave/
│ │ │ └── mapreduce/
│ │ │ ├── AbstractGeoWaveJobRunner.java
│ │ │ ├── BaseMapReduceDataStore.java
│ │ │ ├── GeoWaveConfiguratorBase.java
│ │ │ ├── GeoWaveKey.java
│ │ │ ├── GeoWaveMapper.java
│ │ │ ├── GeoWaveReducer.java
│ │ │ ├── GeoWaveWritableInputMapper.java
│ │ │ ├── GeoWaveWritableInputReducer.java
│ │ │ ├── GeoWaveWritableOutputMapper.java
│ │ │ ├── GeoWaveWritableOutputReducer.java
│ │ │ ├── HadoopDataAdapter.java
│ │ │ ├── HadoopWritableSerializationTool.java
│ │ │ ├── HadoopWritableSerializer.java
│ │ │ ├── JobContextAdapterIndexMappingStore.java
│ │ │ ├── JobContextAdapterStore.java
│ │ │ ├── JobContextIndexStore.java
│ │ │ ├── JobContextInternalAdapterStore.java
│ │ │ ├── MapReduceDataStore.java
│ │ │ ├── MapReduceDataStoreOperations.java
│ │ │ ├── MapReduceUtils.java
│ │ │ ├── NativeMapContext.java
│ │ │ ├── NativeReduceContext.java
│ │ │ ├── URLClassloaderUtils.java
│ │ │ ├── VFSClassLoaderTransformer.java
│ │ │ ├── copy/
│ │ │ │ ├── StoreCopyJobRunner.java
│ │ │ │ ├── StoreCopyMapper.java
│ │ │ │ └── StoreCopyReducer.java
│ │ │ ├── dedupe/
│ │ │ │ ├── GeoWaveDedupeCombiner.java
│ │ │ │ ├── GeoWaveDedupeJobRunner.java
│ │ │ │ ├── GeoWaveDedupeMapper.java
│ │ │ │ └── GeoWaveDedupeReducer.java
│ │ │ ├── hdfs/
│ │ │ │ └── HdfsUrlStreamHandlerFactory.java
│ │ │ ├── input/
│ │ │ │ ├── AsyncInputFormatIteratorWrapper.java
│ │ │ │ ├── GeoWaveInputConfigurator.java
│ │ │ │ ├── GeoWaveInputFormat.java
│ │ │ │ ├── GeoWaveInputKey.java
│ │ │ │ └── InputFormatIteratorWrapper.java
│ │ │ ├── operations/
│ │ │ │ ├── ConfigHDFSCommand.java
│ │ │ │ ├── CopyCommand.java
│ │ │ │ ├── CopyCommandOptions.java
│ │ │ │ ├── HdfsHostPortConverter.java
│ │ │ │ └── MapReduceOperationProvider.java
│ │ │ ├── output/
│ │ │ │ ├── GeoWaveOutputFormat.java
│ │ │ │ └── GeoWaveOutputKey.java
│ │ │ ├── s3/
│ │ │ │ ├── DefaultGeoWaveAWSCredentialsProvider.java
│ │ │ │ ├── GeoWaveAmazonS3Factory.java
│ │ │ │ ├── S3Params.java
│ │ │ │ ├── S3ParamsExtractor.java
│ │ │ │ ├── S3URLConnection.java
│ │ │ │ ├── S3URLStreamHandler.java
│ │ │ │ └── S3URLStreamHandlerFactory.java
│ │ │ └── splits/
│ │ │ ├── GeoWaveInputSplit.java
│ │ │ ├── GeoWaveRecordReader.java
│ │ │ ├── GeoWaveRowRange.java
│ │ │ ├── IntermediateSplitInfo.java
│ │ │ ├── RangeLocationPair.java
│ │ │ ├── RecordReaderParams.java
│ │ │ ├── SplitInfo.java
│ │ │ └── SplitsProvider.java
│ │ └── resources/
│ │ └── META-INF/
│ │ └── services/
│ │ ├── org.locationtech.geowave.core.cli.spi.CLIOperationProviderSpi
│ │ └── org.locationtech.geowave.core.store.spi.ClassLoaderTransformerSpi
│ ├── pom.xml
│ └── store/
│ ├── .gitignore
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ ├── antlr4/
│ │ │ └── org/
│ │ │ └── locationtech/
│ │ │ └── geowave/
│ │ │ └── core/
│ │ │ └── store/
│ │ │ └── query/
│ │ │ └── gwql/
│ │ │ └── parse/
│ │ │ └── GWQL.g4
│ │ ├── java/
│ │ │ └── org/
│ │ │ └── locationtech/
│ │ │ └── geowave/
│ │ │ └── core/
│ │ │ └── store/
│ │ │ ├── AdapterMapping.java
│ │ │ ├── AdapterToIndexMapping.java
│ │ │ ├── BaseDataStoreFactory.java
│ │ │ ├── BaseDataStoreFamily.java
│ │ │ ├── BaseDataStoreOptions.java
│ │ │ ├── BaseStoreFactory.java
│ │ │ ├── CloseableIterator.java
│ │ │ ├── CloseableIteratorWrapper.java
│ │ │ ├── DataStoreOptions.java
│ │ │ ├── DataStoreProperty.java
│ │ │ ├── EntryVisibilityHandler.java
│ │ │ ├── GenericFactory.java
│ │ │ ├── GenericStoreFactory.java
│ │ │ ├── GeoWaveStoreFinder.java
│ │ │ ├── PropertyStore.java
│ │ │ ├── StoreFactoryFamilySpi.java
│ │ │ ├── StoreFactoryHelper.java
│ │ │ ├── StoreFactoryOptions.java
│ │ │ ├── StorePersistableRegistry.java
│ │ │ ├── adapter/
│ │ │ │ ├── AbstractAdapterPersistenceEncoding.java
│ │ │ │ ├── AbstractDataTypeAdapter.java
│ │ │ │ ├── AdapterIndexMappingStore.java
│ │ │ │ ├── AdapterPersistenceEncoding.java
│ │ │ │ ├── AdapterStore.java
│ │ │ │ ├── AdapterStoreWrapper.java
│ │ │ │ ├── AsyncPersistenceEncoding.java
│ │ │ │ ├── BaseFieldDescriptor.java
│ │ │ │ ├── BasicDataTypeAdapter.java
│ │ │ │ ├── BinaryDataAdapter.java
│ │ │ │ ├── FieldDescriptor.java
│ │ │ │ ├── FieldDescriptorBuilder.java
│ │ │ │ ├── FitToIndexPersistenceEncoding.java
│ │ │ │ ├── FullAsyncPersistenceEncoding.java
│ │ │ │ ├── IndexDependentDataAdapter.java
│ │ │ │ ├── IndexedAdapterPersistenceEncoding.java
│ │ │ │ ├── InternalAdapterStore.java
│ │ │ │ ├── InternalAdapterUtils.java
│ │ │ │ ├── InternalDataAdapter.java
│ │ │ │ ├── InternalDataAdapterImpl.java
│ │ │ │ ├── LazyReadPersistenceEncoding.java
│ │ │ │ ├── MapRowBuilder.java
│ │ │ │ ├── PartialAsyncPersistenceEncoding.java
│ │ │ │ ├── PersistentAdapterStore.java
│ │ │ │ ├── RowMergingDataAdapter.java
│ │ │ │ ├── SimpleAbstractDataAdapter.java
│ │ │ │ ├── SimpleRowTransform.java
│ │ │ │ ├── SingletonFieldRowBuilder.java
│ │ │ │ ├── TransientAdapterStore.java
│ │ │ │ ├── annotation/
│ │ │ │ │ ├── AnnotatedFieldDescriptorBuilder.java
│ │ │ │ │ ├── BaseAnnotatedFieldDescriptorBuilder.java
│ │ │ │ │ ├── GeoWaveDataType.java
│ │ │ │ │ ├── GeoWaveField.java
│ │ │ │ │ └── GeoWaveFieldAnnotation.java
│ │ │ │ ├── exceptions/
│ │ │ │ │ └── AdapterException.java
│ │ │ │ └── statistics/
│ │ │ │ └── histogram/
│ │ │ │ ├── ByteUtils.java
│ │ │ │ ├── FixedBinNumericHistogram.java
│ │ │ │ ├── MinimalBinDistanceHistogram.java
│ │ │ │ ├── NumericHistogram.java
│ │ │ │ ├── NumericHistogramFactory.java
│ │ │ │ └── TDigestNumericHistogram.java
│ │ │ ├── api/
│ │ │ │ ├── Aggregation.java
│ │ │ │ ├── AggregationQuery.java
│ │ │ │ ├── AggregationQueryBuilder.java
│ │ │ │ ├── AttributeIndex.java
│ │ │ │ ├── BinConstraints.java
│ │ │ │ ├── BinningStrategy.java
│ │ │ │ ├── DataStore.java
│ │ │ │ ├── DataStoreFactory.java
│ │ │ │ ├── DataTypeAdapter.java
│ │ │ │ ├── DataTypeStatistic.java
│ │ │ │ ├── FieldStatistic.java
│ │ │ │ ├── Index.java
│ │ │ │ ├── IndexFieldMapper.java
│ │ │ │ ├── IndexStatistic.java
│ │ │ │ ├── IngestOptions.java
│ │ │ │ ├── Query.java
│ │ │ │ ├── QueryBuilder.java
│ │ │ │ ├── QueryConstraintsFactory.java
│ │ │ │ ├── RowBuilder.java
│ │ │ │ ├── Statistic.java
│ │ │ │ ├── StatisticBinningStrategy.java
│ │ │ │ ├── StatisticQuery.java
│ │ │ │ ├── StatisticQueryBuilder.java
│ │ │ │ ├── StatisticValue.java
│ │ │ │ ├── VisibilityHandler.java
│ │ │ │ ├── WriteResults.java
│ │ │ │ └── Writer.java
│ │ │ ├── base/
│ │ │ │ ├── AbstractBaseRowQuery.java
│ │ │ │ ├── BaseConstraintsQuery.java
│ │ │ │ ├── BaseDataIndexWriter.java
│ │ │ │ ├── BaseDataStore.java
│ │ │ │ ├── BaseDataStoreUtils.java
│ │ │ │ ├── BaseFilteredIndexQuery.java
│ │ │ │ ├── BaseIndexWriter.java
│ │ │ │ ├── BaseInsertionIdQuery.java
│ │ │ │ ├── BaseQuery.java
│ │ │ │ ├── BaseQueryOptions.java
│ │ │ │ ├── BaseRowPrefixQuery.java
│ │ │ │ ├── CastIterator.java
│ │ │ │ ├── DataStoreCallbackManager.java
│ │ │ │ ├── GeoWaveValueStore.java
│ │ │ │ ├── IntermediaryReadEntryInfo.java
│ │ │ │ ├── IntermediaryWriteEntryInfo.java
│ │ │ │ └── dataidx/
│ │ │ │ ├── BatchDataIndexRetrieval.java
│ │ │ │ ├── BatchDataIndexRetrievalIteratorHelper.java
│ │ │ │ ├── BatchIndexRetrievalImpl.java
│ │ │ │ ├── DataIndexRetrieval.java
│ │ │ │ ├── DataIndexRetrievalImpl.java
│ │ │ │ ├── DataIndexUtils.java
│ │ │ │ ├── DefaultDataIndexRowDeleterWrapper.java
│ │ │ │ └── DefaultDataIndexRowWriterWrapper.java
│ │ │ ├── callback/
│ │ │ │ ├── DeleteCallback.java
│ │ │ │ ├── DeleteCallbackList.java
│ │ │ │ ├── DeleteOtherIndicesCallback.java
│ │ │ │ ├── DuplicateDeletionCallback.java
│ │ │ │ ├── IngestCallback.java
│ │ │ │ ├── IngestCallbackList.java
│ │ │ │ ├── ScanCallback.java
│ │ │ │ └── ScanCallbackList.java
│ │ │ ├── cli/
│ │ │ │ ├── CLIUtils.java
│ │ │ │ ├── VisibilityOptions.java
│ │ │ │ ├── index/
│ │ │ │ │ ├── AddIndexCommand.java
│ │ │ │ │ ├── CompactIndexCommand.java
│ │ │ │ │ ├── IndexOperationProvider.java
│ │ │ │ │ ├── IndexSection.java
│ │ │ │ │ ├── ListIndexPluginsCommand.java
│ │ │ │ │ ├── ListIndicesCommand.java
│ │ │ │ │ └── RemoveIndexCommand.java
│ │ │ │ ├── query/
│ │ │ │ │ ├── CSVQueryOutputFormat.java
│ │ │ │ │ ├── ConsoleQueryOutputFormat.java
│ │ │ │ │ ├── GWQLQuery.java
│ │ │ │ │ ├── QueryOperationProvider.java
│ │ │ │ │ └── QueryOutputFormatSpi.java
│ │ │ │ ├── stats/
│ │ │ │ │ ├── AbstractStatsCommand.java
│ │ │ │ │ ├── AddStatCommand.java
│ │ │ │ │ ├── CompactStatsCommand.java
│ │ │ │ │ ├── ListStatTypesCommand.java
│ │ │ │ │ ├── ListStatsCommand.java
│ │ │ │ │ ├── RecalculateStatsCommand.java
│ │ │ │ │ ├── RemoveStatCommand.java
│ │ │ │ │ ├── StatsCommandLineOptions.java
│ │ │ │ │ ├── StatsOperationProvider.java
│ │ │ │ │ └── StatsSection.java
│ │ │ │ ├── store/
│ │ │ │ │ ├── AbstractRemoveCommand.java
│ │ │ │ │ ├── AddStoreCommand.java
│ │ │ │ │ ├── ClearStoreCommand.java
│ │ │ │ │ ├── CopyConfigStoreCommand.java
│ │ │ │ │ ├── CopyStoreCommand.java
│ │ │ │ │ ├── DataStorePluginOptions.java
│ │ │ │ │ ├── DescribeStoreCommand.java
│ │ │ │ │ ├── ListStorePluginsCommand.java
│ │ │ │ │ ├── ListStoresCommand.java
│ │ │ │ │ ├── RemoveStoreCommand.java
│ │ │ │ │ ├── StoreLoader.java
│ │ │ │ │ ├── StoreOperationProvider.java
│ │ │ │ │ ├── StoreSection.java
│ │ │ │ │ └── VersionCommand.java
│ │ │ │ └── type/
│ │ │ │ ├── DescribeTypeCommand.java
│ │ │ │ ├── ListTypesCommand.java
│ │ │ │ ├── RemoveTypeCommand.java
│ │ │ │ ├── TypeOperationProvider.java
│ │ │ │ └── TypeSection.java
│ │ │ ├── config/
│ │ │ │ ├── ConfigOption.java
│ │ │ │ └── ConfigUtils.java
│ │ │ ├── data/
│ │ │ │ ├── CommonIndexedPersistenceEncoding.java
│ │ │ │ ├── DataReader.java
│ │ │ │ ├── DataWriter.java
│ │ │ │ ├── DeferredReadCommonIndexedPersistenceEncoding.java
│ │ │ │ ├── IndexedPersistenceEncoding.java
│ │ │ │ ├── MultiFieldPersistentDataset.java
│ │ │ │ ├── PersistenceEncoding.java
│ │ │ │ ├── PersistentDataset.java
│ │ │ │ ├── PersistentValue.java
│ │ │ │ ├── SingleFieldPersistentDataset.java
│ │ │ │ ├── UnreadFieldDataList.java
│ │ │ │ ├── field/
│ │ │ │ │ ├── ArrayReader.java
│ │ │ │ │ ├── ArrayWriter.java
│ │ │ │ │ ├── FieldReader.java
│ │ │ │ │ ├── FieldSerializationProviderSpi.java
│ │ │ │ │ ├── FieldUtils.java
│ │ │ │ │ ├── FieldWriter.java
│ │ │ │ │ ├── PersistableReader.java
│ │ │ │ │ ├── PersistableWriter.java
│ │ │ │ │ └── base/
│ │ │ │ │ ├── BigDecimalArraySerializationProvider.java
│ │ │ │ │ ├── BigDecimalSerializationProvider.java
│ │ │ │ │ ├── BigIntegerArraySerializationProvider.java
│ │ │ │ │ ├── BigIntegerSerializationProvider.java
│ │ │ │ │ ├── BooleanArraySerializationProvider.java
│ │ │ │ │ ├── BooleanSerializationProvider.java
│ │ │ │ │ ├── ByteArraySerializationProvider.java
│ │ │ │ │ ├── ByteSerializationProvider.java
│ │ │ │ │ ├── DoubleArraySerializationProvider.java
│ │ │ │ │ ├── DoubleSerializationProvider.java
│ │ │ │ │ ├── FloatArraySerializationProvider.java
│ │ │ │ │ ├── FloatSerializationProvider.java
│ │ │ │ │ ├── IntegerArraySerializationProvider.java
│ │ │ │ │ ├── IntegerSerializationProvider.java
│ │ │ │ │ ├── LongArraySerializationProvider.java
│ │ │ │ │ ├── LongSerializationProvider.java
│ │ │ │ │ ├── PrimitiveBooleanArraySerializationProvider.java
│ │ │ │ │ ├── PrimitiveByteArraySerializationProvider.java
│ │ │ │ │ ├── PrimitiveDoubleArraySerializationProvider.java
│ │ │ │ │ ├── PrimitiveFloatArraySerializationProvider.java
│ │ │ │ │ ├── PrimitiveIntArraySerializationProvider.java
│ │ │ │ │ ├── PrimitiveLongArraySerializationProvider.java
│ │ │ │ │ ├── PrimitiveShortArraySerializationProvider.java
│ │ │ │ │ ├── ShortArraySerializationProvider.java
│ │ │ │ │ ├── ShortSerializationProvider.java
│ │ │ │ │ ├── StringArraySerializationProvider.java
│ │ │ │ │ └── StringSerializationProvider.java
│ │ │ │ └── visibility/
│ │ │ │ ├── FallbackVisibilityHandler.java
│ │ │ │ ├── FieldLevelVisibilityHandler.java
│ │ │ │ ├── FieldMappedVisibilityHandler.java
│ │ │ │ ├── GlobalVisibilityHandler.java
│ │ │ │ ├── JsonFieldLevelVisibilityHandler.java
│ │ │ │ ├── UnconstrainedVisibilityHandler.java
│ │ │ │ ├── VisibilityComposer.java
│ │ │ │ └── VisibilityExpression.java
│ │ │ ├── dimension/
│ │ │ │ ├── AbstractNumericDimensionField.java
│ │ │ │ ├── BasicNumericDimensionField.java
│ │ │ │ └── NumericDimensionField.java
│ │ │ ├── entities/
│ │ │ │ ├── GeoWaveKey.java
│ │ │ │ ├── GeoWaveKeyImpl.java
│ │ │ │ ├── GeoWaveMetadata.java
│ │ │ │ ├── GeoWaveRow.java
│ │ │ │ ├── GeoWaveRowImpl.java
│ │ │ │ ├── GeoWaveRowIteratorTransformer.java
│ │ │ │ ├── GeoWaveRowMergingIterator.java
│ │ │ │ ├── GeoWaveRowMergingTransform.java
│ │ │ │ ├── GeoWaveValue.java
│ │ │ │ ├── GeoWaveValueImpl.java
│ │ │ │ └── MergeableGeoWaveRow.java
│ │ │ ├── flatten/
│ │ │ │ ├── BitmaskUtils.java
│ │ │ │ ├── BitmaskedPairComparator.java
│ │ │ │ ├── FlattenedDataSet.java
│ │ │ │ ├── FlattenedFieldInfo.java
│ │ │ │ ├── FlattenedUnreadData.java
│ │ │ │ └── FlattenedUnreadDataSingleRow.java
│ │ │ ├── index/
│ │ │ │ ├── AttributeDimensionalityTypeProvider.java
│ │ │ │ ├── AttributeIndexImpl.java
│ │ │ │ ├── AttributeIndexOptions.java
│ │ │ │ ├── AttributeIndexProviderSpi.java
│ │ │ │ ├── BaseIndexBuilder.java
│ │ │ │ ├── BasicIndexModel.java
│ │ │ │ ├── CommonIndexModel.java
│ │ │ │ ├── CompositeConstraints.java
│ │ │ │ ├── CoreRegisteredIndexFieldMappers.java
│ │ │ │ ├── CustomAttributeIndex.java
│ │ │ │ ├── CustomIndex.java
│ │ │ │ ├── CustomNameIndex.java
│ │ │ │ ├── FilterableConstraints.java
│ │ │ │ ├── IndexBuilder.java
│ │ │ │ ├── IndexFieldMapperPersistableRegistry.java
│ │ │ │ ├── IndexFieldMapperRegistry.java
│ │ │ │ ├── IndexFieldMapperRegistrySPI.java
│ │ │ │ ├── IndexFilter.java
│ │ │ │ ├── IndexImpl.java
│ │ │ │ ├── IndexPluginOptions.java
│ │ │ │ ├── IndexStore.java
│ │ │ │ ├── NoOpIndexFieldMapper.java
│ │ │ │ ├── NullIndex.java
│ │ │ │ ├── NumericAttributeIndexProvider.java
│ │ │ │ ├── TextAttributeIndexProvider.java
│ │ │ │ └── writer/
│ │ │ │ ├── IndependentAdapterIndexWriter.java
│ │ │ │ └── IndexCompositeWriter.java
│ │ │ ├── ingest/
│ │ │ │ ├── AbstractLocalFileDriver.java
│ │ │ │ ├── AbstractLocalFileIngestDriver.java
│ │ │ │ ├── BaseDataStoreIngestDriver.java
│ │ │ │ ├── DataAdapterProvider.java
│ │ │ │ ├── GeoWaveData.java
│ │ │ │ ├── IndexProvider.java
│ │ │ │ ├── IngestFormatOptions.java
│ │ │ │ ├── IngestOptionsBuilderImpl.java
│ │ │ │ ├── IngestPluginBase.java
│ │ │ │ ├── IngestTask.java
│ │ │ │ ├── IngestUrlHandlerSpi.java
│ │ │ │ ├── IngestUtils.java
│ │ │ │ ├── LocalFileIngestPlugin.java
│ │ │ │ ├── LocalFileIngestPluginRegistrySpi.java
│ │ │ │ ├── LocalIngestRunData.java
│ │ │ │ ├── LocalInputCommandLineOptions.java
│ │ │ │ ├── LocalPluginBase.java
│ │ │ │ └── LocalPluginFileVisitor.java
│ │ │ ├── memory/
│ │ │ │ ├── MemoryAdapterIndexMappingStore.java
│ │ │ │ ├── MemoryAdapterStore.java
│ │ │ │ ├── MemoryDataStoreOperations.java
│ │ │ │ ├── MemoryFactoryHelper.java
│ │ │ │ ├── MemoryIndexStore.java
│ │ │ │ ├── MemoryMetadataFilteringIterator.java
│ │ │ │ ├── MemoryPersistentAdapterStore.java
│ │ │ │ ├── MemoryRequiredOptions.java
│ │ │ │ ├── MemoryStoreFactoryFamily.java
│ │ │ │ └── MemoryStoreUtils.java
│ │ │ ├── metadata/
│ │ │ │ ├── AbstractGeoWavePersistence.java
│ │ │ │ ├── AdapterIndexMappingStoreFactory.java
│ │ │ │ ├── AdapterIndexMappingStoreImpl.java
│ │ │ │ ├── AdapterStoreFactory.java
│ │ │ │ ├── AdapterStoreImpl.java
│ │ │ │ ├── DataStatisticsStoreFactory.java
│ │ │ │ ├── DataStatisticsStoreImpl.java
│ │ │ │ ├── IndexStoreFactory.java
│ │ │ │ ├── IndexStoreImpl.java
│ │ │ │ ├── InternalAdapterStoreFactory.java
│ │ │ │ ├── InternalAdapterStoreImpl.java
│ │ │ │ ├── MetadataIterators.java
│ │ │ │ ├── PropertyStoreFactory.java
│ │ │ │ └── PropertyStoreImpl.java
│ │ │ ├── operations/
│ │ │ │ ├── BaseReaderParams.java
│ │ │ │ ├── BaseReaderParamsBuilder.java
│ │ │ │ ├── DataIndexReaderParams.java
│ │ │ │ ├── DataIndexReaderParamsBuilder.java
│ │ │ │ ├── DataStoreOperations.java
│ │ │ │ ├── DataStoreOperationsFactory.java
│ │ │ │ ├── Deleter.java
│ │ │ │ ├── MetadataDeleter.java
│ │ │ │ ├── MetadataQuery.java
│ │ │ │ ├── MetadataReader.java
│ │ │ │ ├── MetadataType.java
│ │ │ │ ├── MetadataWriter.java
│ │ │ │ ├── ParallelDecoder.java
│ │ │ │ ├── QueryAndDeleteByRow.java
│ │ │ │ ├── RangeReaderParams.java
│ │ │ │ ├── RangeReaderParamsBuilder.java
│ │ │ │ ├── ReaderParams.java
│ │ │ │ ├── ReaderParamsBuilder.java
│ │ │ │ ├── RowDeleter.java
│ │ │ │ ├── RowReader.java
│ │ │ │ ├── RowReaderWrapper.java
│ │ │ │ ├── RowWriter.java
│ │ │ │ ├── SimpleParallelDecoder.java
│ │ │ │ ├── config/
│ │ │ │ │ └── IndexDefaultConfigProvider.java
│ │ │ │ └── remote/
│ │ │ │ └── options/
│ │ │ │ └── BasicIndexOptions.java
│ │ │ ├── query/
│ │ │ │ ├── BaseQuery.java
│ │ │ │ ├── BaseQueryBuilder.java
│ │ │ │ ├── BaseQueryBuilderImpl.java
│ │ │ │ ├── QueryBuilderImpl.java
│ │ │ │ ├── aggregate/
│ │ │ │ │ ├── AdapterAndIndexBasedAggregation.java
│ │ │ │ │ ├── AggregationQueryBuilderImpl.java
│ │ │ │ │ ├── BinningAggregation.java
│ │ │ │ │ ├── BinningAggregationOptions.java
│ │ │ │ │ ├── CommonIndexAggregation.java
│ │ │ │ │ ├── CompositeAggregation.java
│ │ │ │ │ ├── CountAggregation.java
│ │ │ │ │ ├── FieldMathAggregation.java
│ │ │ │ │ ├── FieldMaxAggregation.java
│ │ │ │ │ ├── FieldMinAggregation.java
│ │ │ │ │ ├── FieldNameParam.java
│ │ │ │ │ ├── FieldSumAggregation.java
│ │ │ │ │ ├── MergingAggregation.java
│ │ │ │ │ ├── OptimalCountAggregation.java
│ │ │ │ │ └── OptimalFieldAggregation.java
│ │ │ │ ├── constraints/
│ │ │ │ │ ├── AdapterAndIndexBasedQueryConstraints.java
│ │ │ │ │ ├── BasicOrderedConstraintQuery.java
│ │ │ │ │ ├── BasicQuery.java
│ │ │ │ │ ├── BasicQueryByClass.java
│ │ │ │ │ ├── Constraints.java
│ │ │ │ │ ├── CoordinateRangeQuery.java
│ │ │ │ │ ├── CoordinateRangeUtils.java
│ │ │ │ │ ├── CustomQueryConstraints.java
│ │ │ │ │ ├── CustomQueryConstraintsWithFilter.java
│ │ │ │ │ ├── DataIdQuery.java
│ │ │ │ │ ├── DataIdRangeQuery.java
│ │ │ │ │ ├── EverythingQuery.java
│ │ │ │ │ ├── ExplicitFilteredQuery.java
│ │ │ │ │ ├── FilteredEverythingQuery.java
│ │ │ │ │ ├── InsertionIdQuery.java
│ │ │ │ │ ├── OptimalExpressionQuery.java
│ │ │ │ │ ├── PrefixIdQuery.java
│ │ │ │ │ ├── QueryConstraints.java
│ │ │ │ │ ├── QueryConstraintsFactoryImpl.java
│ │ │ │ │ ├── SimpleNumericQuery.java
│ │ │ │ │ └── TypeConstraintQuery.java
│ │ │ │ ├── filter/
│ │ │ │ │ ├── AdapterIdQueryFilter.java
│ │ │ │ │ ├── BasicQueryFilter.java
│ │ │ │ │ ├── ClientVisibilityFilter.java
│ │ │ │ │ ├── CoordinateRangeQueryFilter.java
│ │ │ │ │ ├── DataIdQueryFilter.java
│ │ │ │ │ ├── DataIdRangeQueryFilter.java
│ │ │ │ │ ├── DedupeFilter.java
│ │ │ │ │ ├── ExpressionQueryFilter.java
│ │ │ │ │ ├── FilterList.java
│ │ │ │ │ ├── FixedResolutionSubsampleQueryFilter.java
│ │ │ │ │ ├── InsertionIdQueryFilter.java
│ │ │ │ │ ├── PrefixIdQueryFilter.java
│ │ │ │ │ ├── QueryFilter.java
│ │ │ │ │ └── expression/
│ │ │ │ │ ├── And.java
│ │ │ │ │ ├── Between.java
│ │ │ │ │ ├── BinaryPredicate.java
│ │ │ │ │ ├── BooleanExpression.java
│ │ │ │ │ ├── BooleanFieldValue.java
│ │ │ │ │ ├── BooleanLiteral.java
│ │ │ │ │ ├── ComparableExpression.java
│ │ │ │ │ ├── ComparisonOperator.java
│ │ │ │ │ ├── Exclude.java
│ │ │ │ │ ├── Expression.java
│ │ │ │ │ ├── FieldValue.java
│ │ │ │ │ ├── Filter.java
│ │ │ │ │ ├── FilterConstraints.java
│ │ │ │ │ ├── FilterRange.java
│ │ │ │ │ ├── GenericEqualTo.java
│ │ │ │ │ ├── GenericExpression.java
│ │ │ │ │ ├── GenericFieldValue.java
│ │ │ │ │ ├── GenericLiteral.java
│ │ │ │ │ ├── GenericNotEqualTo.java
│ │ │ │ │ ├── Include.java
│ │ │ │ │ ├── IndexFieldConstraints.java
│ │ │ │ │ ├── InvalidFilterException.java
│ │ │ │ │ ├── IsNotNull.java
│ │ │ │ │ ├── IsNull.java
│ │ │ │ │ ├── Literal.java
│ │ │ │ │ ├── MultiFilterOperator.java
│ │ │ │ │ ├── Not.java
│ │ │ │ │ ├── Or.java
│ │ │ │ │ ├── Predicate.java
│ │ │ │ │ ├── numeric/
│ │ │ │ │ │ ├── Abs.java
│ │ │ │ │ │ ├── Add.java
│ │ │ │ │ │ ├── Divide.java
│ │ │ │ │ │ ├── MathExpression.java
│ │ │ │ │ │ ├── Multiply.java
│ │ │ │ │ │ ├── NumericBetween.java
│ │ │ │ │ │ ├── NumericComparisonOperator.java
│ │ │ │ │ │ ├── NumericExpression.java
│ │ │ │ │ │ ├── NumericFieldConstraints.java
│ │ │ │ │ │ ├── NumericFieldValue.java
│ │ │ │ │ │ ├── NumericLiteral.java
│ │ │ │ │ │ └── Subtract.java
│ │ │ │ │ └── text/
│ │ │ │ │ ├── Concat.java
│ │ │ │ │ ├── Contains.java
│ │ │ │ │ ├── EndsWith.java
│ │ │ │ │ ├── StartsWith.java
│ │ │ │ │ ├── TextBetween.java
│ │ │ │ │ ├── TextBinaryPredicate.java
│ │ │ │ │ ├── TextComparisonOperator.java
│ │ │ │ │ ├── TextExpression.java
│ │ │ │ │ ├── TextFieldConstraints.java
│ │ │ │ │ ├── TextFieldValue.java
│ │ │ │ │ ├── TextFilterRange.java
│ │ │ │ │ └── TextLiteral.java
│ │ │ │ ├── gwql/
│ │ │ │ │ ├── AdapterEntryResultSet.java
│ │ │ │ │ ├── AggregationSelector.java
│ │ │ │ │ ├── CastableType.java
│ │ │ │ │ ├── ColumnSelector.java
│ │ │ │ │ ├── ErrorListener.java
│ │ │ │ │ ├── GWQLCoreExtensions.java
│ │ │ │ │ ├── GWQLExtensionRegistry.java
│ │ │ │ │ ├── GWQLExtensionRegistrySpi.java
│ │ │ │ │ ├── GWQLParseException.java
│ │ │ │ │ ├── GWQLParseHelper.java
│ │ │ │ │ ├── QLFunction.java
│ │ │ │ │ ├── Result.java
│ │ │ │ │ ├── ResultSet.java
│ │ │ │ │ ├── Selector.java
│ │ │ │ │ ├── SingletonResultSet.java
│ │ │ │ │ ├── function/
│ │ │ │ │ │ ├── aggregation/
│ │ │ │ │ │ │ ├── AggregationFunction.java
│ │ │ │ │ │ │ ├── CountFunction.java
│ │ │ │ │ │ │ ├── MathAggregationFunction.java
│ │ │ │ │ │ │ ├── MaxFunction.java
│ │ │ │ │ │ │ ├── MinFunction.java
│ │ │ │ │ │ │ └── SumFunction.java
│ │ │ │ │ │ ├── expression/
│ │ │ │ │ │ │ ├── AbsFunction.java
│ │ │ │ │ │ │ ├── ConcatFunction.java
│ │ │ │ │ │ │ └── ExpressionFunction.java
│ │ │ │ │ │ ├── operator/
│ │ │ │ │ │ │ └── OperatorFunction.java
│ │ │ │ │ │ └── predicate/
│ │ │ │ │ │ ├── PredicateFunction.java
│ │ │ │ │ │ └── TextPredicates.java
│ │ │ │ │ ├── statement/
│ │ │ │ │ │ ├── DeleteStatement.java
│ │ │ │ │ │ ├── SelectStatement.java
│ │ │ │ │ │ └── Statement.java
│ │ │ │ │ └── type/
│ │ │ │ │ ├── NumberCastableType.java
│ │ │ │ │ └── TextCastableType.java
│ │ │ │ └── options/
│ │ │ │ ├── AggregateTypeQueryOptions.java
│ │ │ │ ├── CommonQueryOptions.java
│ │ │ │ ├── DataTypeQueryOptions.java
│ │ │ │ ├── FilterByTypeQueryOptions.java
│ │ │ │ ├── IndexQueryOptions.java
│ │ │ │ ├── QueryAllIndices.java
│ │ │ │ ├── QueryAllTypes.java
│ │ │ │ └── QuerySingleIndex.java
│ │ │ ├── server/
│ │ │ │ ├── BasicOptionProvider.java
│ │ │ │ ├── RowMergingAdapterOptionProvider.java
│ │ │ │ ├── ServerOpConfig.java
│ │ │ │ ├── ServerOpHelper.java
│ │ │ │ └── ServerSideOperations.java
│ │ │ ├── spi/
│ │ │ │ ├── ClassLoaderTransformerSpi.java
│ │ │ │ ├── DimensionalityTypeOptions.java
│ │ │ │ ├── DimensionalityTypeProviderSpi.java
│ │ │ │ └── DimensionalityTypeRegistry.java
│ │ │ ├── statistics/
│ │ │ │ ├── CoreRegisteredStatistics.java
│ │ │ │ ├── DataStatisticsStore.java
│ │ │ │ ├── DefaultStatisticsProvider.java
│ │ │ │ ├── InternalStatisticsHelper.java
│ │ │ │ ├── StatisticId.java
│ │ │ │ ├── StatisticType.java
│ │ │ │ ├── StatisticUpdateCallback.java
│ │ │ │ ├── StatisticUpdateHandler.java
│ │ │ │ ├── StatisticValueReader.java
│ │ │ │ ├── StatisticValueWriter.java
│ │ │ │ ├── StatisticsDeleteCallback.java
│ │ │ │ ├── StatisticsIngestCallback.java
│ │ │ │ ├── StatisticsPersistableRegistry.java
│ │ │ │ ├── StatisticsRegistry.java
│ │ │ │ ├── StatisticsRegistrySPI.java
│ │ │ │ ├── StatisticsValueIterator.java
│ │ │ │ ├── adapter/
│ │ │ │ │ ├── CountStatistic.java
│ │ │ │ │ └── DataTypeStatisticType.java
│ │ │ │ ├── binning/
│ │ │ │ │ ├── BinningStrategyUtils.java
│ │ │ │ │ ├── CompositeBinningStrategy.java
│ │ │ │ │ ├── DataTypeBinningStrategy.java
│ │ │ │ │ ├── FieldValueBinningStrategy.java
│ │ │ │ │ ├── NumericRangeFieldValueBinningStrategy.java
│ │ │ │ │ └── PartitionBinningStrategy.java
│ │ │ │ ├── field/
│ │ │ │ │ ├── BloomFilterStatistic.java
│ │ │ │ │ ├── CountMinSketchStatistic.java
│ │ │ │ │ ├── FieldStatisticId.java
│ │ │ │ │ ├── FieldStatisticType.java
│ │ │ │ │ ├── FixedBinNumericHistogramStatistic.java
│ │ │ │ │ ├── HyperLogLogStatistic.java
│ │ │ │ │ ├── NumericHistogramStatistic.java
│ │ │ │ │ ├── NumericMeanStatistic.java
│ │ │ │ │ ├── NumericRangeStatistic.java
│ │ │ │ │ ├── NumericStatsStatistic.java
│ │ │ │ │ ├── Stats.java
│ │ │ │ │ └── StatsAccumulator.java
│ │ │ │ ├── index/
│ │ │ │ │ ├── DifferingVisibilityCountStatistic.java
│ │ │ │ │ ├── DuplicateEntryCountStatistic.java
│ │ │ │ │ ├── FieldVisibilityCountStatistic.java
│ │ │ │ │ ├── IndexMetaDataSetStatistic.java
│ │ │ │ │ ├── IndexStatisticType.java
│ │ │ │ │ ├── MaxDuplicatesStatistic.java
│ │ │ │ │ ├── PartitionsStatistic.java
│ │ │ │ │ └── RowRangeHistogramStatistic.java
│ │ │ │ ├── query/
│ │ │ │ │ ├── AbstractStatisticQuery.java
│ │ │ │ │ ├── AbstractStatisticQueryBuilder.java
│ │ │ │ │ ├── BinConstraintsImpl.java
│ │ │ │ │ ├── DataTypeStatisticQuery.java
│ │ │ │ │ ├── DataTypeStatisticQueryBuilder.java
│ │ │ │ │ ├── FieldStatisticQuery.java
│ │ │ │ │ ├── FieldStatisticQueryBuilder.java
│ │ │ │ │ ├── IndexStatisticQuery.java
│ │ │ │ │ └── IndexStatisticQueryBuilder.java
│ │ │ │ └── visibility/
│ │ │ │ ├── DefaultStatisticVisibility.java
│ │ │ │ └── FieldDependentStatisticVisibility.java
│ │ │ └── util/
│ │ │ ├── AsyncNativeEntryIteratorWrapper.java
│ │ │ ├── ClasspathUtils.java
│ │ │ ├── CompoundHierarchicalIndexStrategyWrapper.java
│ │ │ ├── DataAdapterAndIndexCache.java
│ │ │ ├── DataStoreUtils.java
│ │ │ ├── GenericTypeResolver.java
│ │ │ ├── GeoWaveRowIteratorFactory.java
│ │ │ ├── IteratorWrapper.java
│ │ │ ├── MergingEntryIterator.java
│ │ │ ├── NativeEntryIteratorWrapper.java
│ │ │ ├── NativeEntryTransformer.java
│ │ │ ├── RewritingMergingEntryIterator.java
│ │ │ ├── RowConsumer.java
│ │ │ └── SecondaryIndexEntryIteratorWrapper.java
│ │ └── resources/
│ │ └── META-INF/
│ │ └── services/
│ │ ├── org.locationtech.geowave.core.cli.spi.CLIOperationProviderSpi
│ │ ├── org.locationtech.geowave.core.cli.spi.DefaultConfigProviderSpi
│ │ ├── org.locationtech.geowave.core.index.persist.PersistableRegistrySpi
│ │ ├── org.locationtech.geowave.core.store.cli.query.QueryOutputFormatSpi
│ │ ├── org.locationtech.geowave.core.store.data.field.FieldSerializationProviderSpi
│ │ ├── org.locationtech.geowave.core.store.index.AttributeIndexProviderSpi
│ │ ├── org.locationtech.geowave.core.store.index.IndexFieldMapperRegistrySPI
│ │ ├── org.locationtech.geowave.core.store.query.gwql.GWQLExtensionRegistrySpi
│ │ ├── org.locationtech.geowave.core.store.spi.DimensionalityTypeProviderSpi
│ │ └── org.locationtech.geowave.core.store.statistics.StatisticsRegistrySPI
│ └── test/
│ ├── java/
│ │ └── org/
│ │ └── locationtech/
│ │ └── geowave/
│ │ └── core/
│ │ └── store/
│ │ ├── DataStorePropertyTest.java
│ │ ├── TestStorePersistableRegistry.java
│ │ ├── adapter/
│ │ │ ├── AbstractDataTypeAdapterTest.java
│ │ │ ├── BasicDataTypeAdapterTest.java
│ │ │ ├── FieldDescriptorTest.java
│ │ │ ├── IndexFieldMapperTest.java
│ │ │ ├── MockComponents.java
│ │ │ ├── MockRegisteredIndexFieldMappers.java
│ │ │ └── statistics/
│ │ │ └── histogram/
│ │ │ ├── ByteUtilsTest.java
│ │ │ └── NumericHistogramTest.java
│ │ ├── api/
│ │ │ ├── DataStoreAddTest.java
│ │ │ └── DataStoreRemoveTest.java
│ │ ├── data/
│ │ │ ├── field/
│ │ │ │ └── BasicReaderWriterTest.java
│ │ │ └── visibility/
│ │ │ ├── JsonFieldLevelVisibilityHandlerTest.java
│ │ │ └── VisibilityExpressionTest.java
│ │ ├── flatten/
│ │ │ └── BitmaskUtilsTest.java
│ │ ├── memory/
│ │ │ ├── MemoryDataStoreTest.java
│ │ │ └── MemoryStoreUtilsTest.java
│ │ ├── query/
│ │ │ ├── BasicQueryByClassTest.java
│ │ │ ├── aggregate/
│ │ │ │ ├── AbstractAggregationTest.java
│ │ │ │ ├── AbstractCommonIndexAggregationTest.java
│ │ │ │ ├── BinningAggregationOptionsTest.java
│ │ │ │ ├── BinningAggregationTest.java
│ │ │ │ └── CountAggregationTest.java
│ │ │ ├── filter/
│ │ │ │ ├── DistributedQueryFilterTest.java
│ │ │ │ └── expression/
│ │ │ │ ├── FilterExpressionTest.java
│ │ │ │ └── FilterRangeTest.java
│ │ │ └── gwql/
│ │ │ ├── AbstractGWQLTest.java
│ │ │ ├── DeleteStatementTest.java
│ │ │ ├── GWQLParserTest.java
│ │ │ └── SelectStatementTest.java
│ │ └── statistics/
│ │ └── index/
│ │ ├── PartitionsStatisticTest.java
│ │ └── RowRangeHistogramStatisticTest.java
│ └── resources/
│ └── META-INF/
│ └── services/
│ ├── org.locationtech.geowave.core.index.persist.PersistableRegistrySpi
│ └── org.locationtech.geowave.core.store.index.IndexFieldMapperRegistrySPI
├── deploy/
│ ├── Jenkinsfile
│ ├── packaging/
│ │ ├── docker/
│ │ │ ├── .gitignore
│ │ │ ├── README.md
│ │ │ ├── build-args-matrix.sh.example
│ │ │ ├── build-rpm/
│ │ │ │ ├── build-rpm.sh
│ │ │ │ ├── build-services-rpm.sh
│ │ │ │ ├── deploy-geowave-to-hdfs.sh.template
│ │ │ │ └── fpm_scripts/
│ │ │ │ ├── gwgeoserver_logrotate
│ │ │ │ ├── gwgrpc.environment
│ │ │ │ ├── gwgrpc.rsyslog
│ │ │ │ ├── gwgrpc.service
│ │ │ │ ├── gwgrpc_logrotate
│ │ │ │ ├── gwgrpc_post_install.sh
│ │ │ │ ├── gwgrpc_post_uninstall.sh
│ │ │ │ ├── gwtomcat
│ │ │ │ ├── gwtomcat.service
│ │ │ │ ├── gwtomcat_logrotate
│ │ │ │ ├── gwtomcat_post_install.sh
│ │ │ │ ├── gwtomcat_post_uninstall.sh
│ │ │ │ ├── gwtomcat_pre_uninstall.sh
│ │ │ │ └── gwtomcat_tools.sh.template
│ │ │ ├── build-src/
│ │ │ │ ├── build-geowave-common.sh
│ │ │ │ └── build-geowave-vendor.sh
│ │ │ ├── docker-build-rpms.sh
│ │ │ ├── geowave-centos7-java7-build.dockerfile
│ │ │ ├── geowave-centos7-java8-build.dockerfile
│ │ │ ├── geowave-centos7-publish.dockerfile
│ │ │ ├── geowave-centos7-rpm-build.dockerfile
│ │ │ ├── init.sh
│ │ │ ├── publish/
│ │ │ │ ├── publish-common-rpm.sh
│ │ │ │ └── publish-vendor-rpm.sh
│ │ │ └── pull-s3-caches.sh
│ │ ├── emr/
│ │ │ ├── README.md
│ │ │ ├── generate-emr-scripts.sh
│ │ │ └── template/
│ │ │ ├── accumulo/
│ │ │ │ ├── DATASTORE_BOOTSTRAP_TOKEN
│ │ │ │ ├── DATASTORE_CONFIGURE_GEOWAVE_TOKEN
│ │ │ │ ├── DATASTORE_LIB_TOKEN
│ │ │ │ ├── DATASTORE_PARAMS_TOKEN
│ │ │ │ └── DATASTORE_PUPPET_TOKEN
│ │ │ ├── bootstrap-geowave.sh.template
│ │ │ ├── bootstrap-zeppelin.sh.template
│ │ │ ├── cassandra/
│ │ │ │ ├── DATASTORE_BOOTSTRAP_TOKEN
│ │ │ │ └── DATASTORE_PARAMS_TOKEN
│ │ │ ├── configure-zeppelin.sh.template
│ │ │ ├── geowave-install-lib.sh.template
│ │ │ ├── hbase/
│ │ │ │ ├── DATASTORE_PARAMS_TOKEN
│ │ │ │ └── DATASTORE_PUPPET_TOKEN
│ │ │ ├── jupyter/
│ │ │ │ ├── bootstrap-jupyter.sh.template
│ │ │ │ ├── bootstrap-jupyterhub.sh.template
│ │ │ │ ├── create-configure-kernel.sh.template
│ │ │ │ ├── gw-base.yml
│ │ │ │ ├── install-conda.sh
│ │ │ │ ├── jupyterhub_config.py
│ │ │ │ └── pre-spawn.sh
│ │ │ └── quickstart/
│ │ │ ├── QUICKSTART_BOOTSTRAP_TOKEN
│ │ │ ├── geowave-env.sh.template
│ │ │ ├── ingest-and-kde-gdelt.sh.template
│ │ │ └── setup-geoserver-geowave-workspace.sh
│ │ ├── puppet/
│ │ │ └── geowave/
│ │ │ └── manifests/
│ │ │ ├── accumulo.pp
│ │ │ ├── app.pp
│ │ │ ├── gwgeoserver.pp
│ │ │ ├── gwgrpc.pp
│ │ │ ├── gwtomcat_server.pp
│ │ │ ├── gwtomcat_service.pp
│ │ │ ├── hbase.pp
│ │ │ ├── init.pp
│ │ │ ├── params.pp
│ │ │ ├── repo.pp
│ │ │ └── restservices.pp
│ │ ├── rpm/
│ │ │ ├── .gitignore
│ │ │ ├── centos/
│ │ │ │ └── 7/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── SOURCES/
│ │ │ │ │ ├── bash_profile.sh
│ │ │ │ │ ├── default.xml
│ │ │ │ │ ├── geowave-tools.sh
│ │ │ │ │ ├── namespace.xml
│ │ │ │ │ └── workspace.xml
│ │ │ │ ├── SPECS/
│ │ │ │ │ ├── geowave-common.spec
│ │ │ │ │ └── geowave-vendor.spec
│ │ │ │ └── rpm.sh
│ │ │ ├── repo-dev/
│ │ │ │ ├── SOURCES/
│ │ │ │ │ └── geowave-dev.repo
│ │ │ │ ├── SPECS/
│ │ │ │ │ └── geowave-dev.spec
│ │ │ │ └── rpm.sh
│ │ │ ├── repo-release/
│ │ │ │ ├── SOURCES/
│ │ │ │ │ └── geowave.repo
│ │ │ │ ├── SPECS/
│ │ │ │ │ └── geowave-release.spec
│ │ │ │ └── rpm.sh
│ │ │ └── rpm-functions.sh
│ │ ├── sandbox/
│ │ │ ├── generate-sandbox-scripts.sh
│ │ │ └── template/
│ │ │ └── quickstart/
│ │ │ └── geowave-env.sh.template
│ │ └── standalone/
│ │ └── standalone-installer.install4j
│ ├── pom.xml
│ ├── scripts/
│ │ └── clean-up.py
│ └── src/
│ └── main/
│ └── resources/
│ ├── GeoWaveLabels.properties
│ ├── build.properties
│ └── log4j2.properties
├── dev-resources/
│ ├── pom.xml
│ └── src/
│ └── main/
│ └── resources/
│ ├── assemblies/
│ │ ├── default-installer-main.xml
│ │ └── default-installer-plugin.xml
│ ├── eclipse/
│ │ ├── eclipse-cleanup.xml
│ │ └── eclipse-formatter.xml
│ └── findbugs/
│ └── findbugs-exclude.xml
├── docs/
│ ├── .gitignore
│ ├── content/
│ │ ├── commands/
│ │ │ ├── 000-header.adoc
│ │ │ ├── 005-commands-and-flags.adoc
│ │ │ ├── 010-config-commands.adoc
│ │ │ ├── 011-store-commands.adoc
│ │ │ ├── 012-index-commands.adoc
│ │ │ ├── 013-type-commands.adoc
│ │ │ ├── 014-stat-commands.adoc
│ │ │ ├── 015-ingest-commands.adoc
│ │ │ ├── 017-query-command.adoc
│ │ │ ├── 020-analytic-commands.adoc
│ │ │ ├── 025-vector-commands.adoc
│ │ │ ├── 030-raster-commands.adoc
│ │ │ ├── 035-geoserver-commands.adoc
│ │ │ ├── 040-util-commands.adoc
│ │ │ ├── 041-util-migrate.adoc
│ │ │ ├── 045-util-standalone-commands.adoc
│ │ │ ├── 050-util-accumulo-commands.adoc
│ │ │ ├── 050-util-osm-commands.adoc
│ │ │ ├── 055-util-python-commands.adoc
│ │ │ ├── 060-util-landsat-commands.adoc
│ │ │ ├── 065-util-grpc-commands.adoc
│ │ │ ├── 070-util-filesystem-commands.adoc
│ │ │ └── manpages/
│ │ │ ├── analytic/
│ │ │ │ ├── geowave-dbscan.txt
│ │ │ │ ├── geowave-kde.txt
│ │ │ │ ├── geowave-kdespark.txt
│ │ │ │ ├── geowave-kmeansjump.txt
│ │ │ │ ├── geowave-kmeansparallel.txt
│ │ │ │ ├── geowave-kmeansspark.txt
│ │ │ │ ├── geowave-nn.txt
│ │ │ │ ├── geowave-spatialjoin.txt
│ │ │ │ └── geowave-sql.txt
│ │ │ ├── config/
│ │ │ │ ├── geowave-aws.txt
│ │ │ │ ├── geowave-geoserver.txt
│ │ │ │ ├── geowave-hdfs.txt
│ │ │ │ ├── geowave-list.txt
│ │ │ │ ├── geowave-newcryptokey.txt
│ │ │ │ └── geowave-set.txt
│ │ │ ├── geoserver/
│ │ │ │ ├── geowave-addcs.txt
│ │ │ │ ├── geowave-addcv.txt
│ │ │ │ ├── geowave-addds.txt
│ │ │ │ ├── geowave-addfl.txt
│ │ │ │ ├── geowave-addlayer.txt
│ │ │ │ ├── geowave-addstyle.txt
│ │ │ │ ├── geowave-addws.txt
│ │ │ │ ├── geowave-getcs.txt
│ │ │ │ ├── geowave-getcv.txt
│ │ │ │ ├── geowave-getds.txt
│ │ │ │ ├── geowave-getfl.txt
│ │ │ │ ├── geowave-getsa.txt
│ │ │ │ ├── geowave-getstyle.txt
│ │ │ │ ├── geowave-listcs.txt
│ │ │ │ ├── geowave-listcv.txt
│ │ │ │ ├── geowave-listds.txt
│ │ │ │ ├── geowave-listfl.txt
│ │ │ │ ├── geowave-liststyles.txt
│ │ │ │ ├── geowave-listws.txt
│ │ │ │ ├── geowave-rmcs.txt
│ │ │ │ ├── geowave-rmcv.txt
│ │ │ │ ├── geowave-rmds.txt
│ │ │ │ ├── geowave-rmfl.txt
│ │ │ │ ├── geowave-rmstyle.txt
│ │ │ │ ├── geowave-rmws.txt
│ │ │ │ ├── geowave-rungs.txt
│ │ │ │ └── geowave-setls.txt
│ │ │ ├── index/
│ │ │ │ ├── geowave-addindex.txt
│ │ │ │ ├── geowave-compactindex.txt
│ │ │ │ ├── geowave-listindex.txt
│ │ │ │ ├── geowave-listindexplugins.txt
│ │ │ │ └── geowave-rmindex.txt
│ │ │ ├── ingest/
│ │ │ │ ├── geowave-kafkaToGW.txt
│ │ │ │ ├── geowave-listplugins.txt
│ │ │ │ ├── geowave-localToGW.txt
│ │ │ │ ├── geowave-localToHdfs.txt
│ │ │ │ ├── geowave-localToKafka.txt
│ │ │ │ ├── geowave-localToMrGW.txt
│ │ │ │ ├── geowave-mrToGW.txt
│ │ │ │ └── geowave-sparkToGW.txt
│ │ │ ├── query/
│ │ │ │ └── geowave-query.txt
│ │ │ ├── raster/
│ │ │ │ ├── geowave-installgdal.txt
│ │ │ │ ├── geowave-resizemr.txt
│ │ │ │ └── geowave-resizespark.txt
│ │ │ ├── stat/
│ │ │ │ ├── geowave-addstat.txt
│ │ │ │ ├── geowave-compactstats.txt
│ │ │ │ ├── geowave-liststats.txt
│ │ │ │ ├── geowave-liststattypes.txt
│ │ │ │ ├── geowave-recalcstats.txt
│ │ │ │ └── geowave-rmstat.txt
│ │ │ ├── store/
│ │ │ │ ├── geowave-addstore.txt
│ │ │ │ ├── geowave-clear.txt
│ │ │ │ ├── geowave-copy.txt
│ │ │ │ ├── geowave-copymr.txt
│ │ │ │ ├── geowave-copystorecfg.txt
│ │ │ │ ├── geowave-describestore.txt
│ │ │ │ ├── geowave-liststoreplugins.txt
│ │ │ │ ├── geowave-liststores.txt
│ │ │ │ ├── geowave-rmstore.txt
│ │ │ │ └── geowave-version.txt
│ │ │ ├── type/
│ │ │ │ ├── geowave-addtype.txt
│ │ │ │ ├── geowave-describetype.txt
│ │ │ │ ├── geowave-listtypes.txt
│ │ │ │ └── geowave-rmtype.txt
│ │ │ ├── util/
│ │ │ │ ├── accumulo/
│ │ │ │ │ ├── geowave-presplitpartitionid.txt
│ │ │ │ │ ├── geowave-runserver.txt
│ │ │ │ │ ├── geowave-splitequalinterval.txt
│ │ │ │ │ ├── geowave-splitnumrecords.txt
│ │ │ │ │ └── geowave-splitquantile.txt
│ │ │ │ ├── bigtable/
│ │ │ │ │ └── geowave-runbigtable.txt
│ │ │ │ ├── cassandra/
│ │ │ │ │ └── geowave-runcassandra.txt
│ │ │ │ ├── dynamodb/
│ │ │ │ │ └── geowave-rundynamodb.txt
│ │ │ │ ├── filesystem/
│ │ │ │ │ └── geowave-filesystem-listformats.txt
│ │ │ │ ├── grpc/
│ │ │ │ │ ├── geowave-grpc-start.txt
│ │ │ │ │ └── geowave-grpc-stop.txt
│ │ │ │ ├── hbase/
│ │ │ │ │ └── geowave-runhbase.txt
│ │ │ │ ├── kudu/
│ │ │ │ │ └── geowave-runkudu.txt
│ │ │ │ ├── landsat/
│ │ │ │ │ ├── geowave-analyze.txt
│ │ │ │ │ ├── geowave-download.txt
│ │ │ │ │ ├── geowave-ingest.txt
│ │ │ │ │ ├── geowave-ingestraster.txt
│ │ │ │ │ └── geowave-ingestvector.txt
│ │ │ │ ├── migrate/
│ │ │ │ │ └── geowave-util-migrate.txt
│ │ │ │ ├── osm/
│ │ │ │ │ ├── geowave-ingest.txt
│ │ │ │ │ └── geowave-stage.txt
│ │ │ │ ├── python/
│ │ │ │ │ └── geowave-python-rungateway.txt
│ │ │ │ └── redis/
│ │ │ │ └── geowave-runredis.txt
│ │ │ └── vector/
│ │ │ ├── geowave-cqldelete.txt
│ │ │ ├── geowave-localexport.txt
│ │ │ └── geowave-mrexport.txt
│ │ ├── devguide/
│ │ │ ├── 000-header.adoc
│ │ │ ├── 005-introduction.adoc
│ │ │ ├── 010-development-setup.adoc
│ │ │ ├── 015-building.adoc
│ │ │ ├── 020-packaging.adoc
│ │ │ ├── 025-contributions.adoc
│ │ │ ├── 030-architecture.adoc
│ │ │ ├── 035-statistics.adoc
│ │ │ ├── 040-ingest.adoc
│ │ │ ├── 045-query.adoc
│ │ │ ├── 050-services.adoc
│ │ │ ├── 075-programmatic-api.adoc
│ │ │ ├── 100-appendices.adoc
│ │ │ ├── 102-extending-geowave.adoc
│ │ │ ├── 105-appendix-documentation.adoc
│ │ │ ├── 105-appendix-project-descriptions.adoc
│ │ │ ├── 110-appendix-maven-artifacts.adoc
│ │ │ ├── 115-appendix-python-api.adoc
│ │ │ ├── 120-appendix-jace.adoc
│ │ │ └── 125-appendix-theory.adoc
│ │ ├── docs-common/
│ │ │ ├── 00-attrs.adoc
│ │ │ ├── 900-version.adoc
│ │ │ └── docinfo.html
│ │ ├── downloads/
│ │ │ ├── 001-imports.adoc
│ │ │ ├── 002-navbar.adoc
│ │ │ ├── 003-container.adoc
│ │ │ └── 004-scripts.adoc
│ │ ├── geowave-index/
│ │ │ ├── 001-imports.adoc
│ │ │ ├── 002-navbar.adoc
│ │ │ ├── 003-container.adoc
│ │ │ ├── docinfo.html
│ │ │ ├── js/
│ │ │ │ ├── geowave.js
│ │ │ │ └── versions.js
│ │ │ ├── site.webmanifest
│ │ │ └── stylesheets/
│ │ │ ├── blank.css
│ │ │ ├── font-awesome.css
│ │ │ ├── geowave-boostrap-theme.css
│ │ │ ├── geowave-docs.css
│ │ │ └── geowave.css
│ │ ├── installation-guide/
│ │ │ ├── 000-header.adoc
│ │ │ ├── 005-standalone.adoc
│ │ │ └── 010-rpm.adoc
│ │ ├── overview/
│ │ │ ├── 000-header.adoc
│ │ │ ├── 005-introduction.adoc
│ │ │ ├── 010-overview.adoc
│ │ │ ├── 015-screenshots.adoc
│ │ │ └── 020-deeper.adoc
│ │ ├── quickstart/
│ │ │ ├── 000-header.adoc
│ │ │ ├── 005-preparation.adoc
│ │ │ ├── 010-vector-demo.adoc
│ │ │ ├── 015-raster-demo.adoc
│ │ │ └── 020-further-documentation.adoc
│ │ ├── quickstart-emr/
│ │ │ ├── aws-env/
│ │ │ │ ├── 000-quickstart-guide-intro.adoc
│ │ │ │ ├── 007-quickstart-guide-scripts.adoc
│ │ │ │ ├── 010-quickstart-guide-CLI.adoc
│ │ │ │ ├── 015-quickstart-guide-GUI.adoc
│ │ │ │ ├── 020-quickstart-guide-GUI-step-1.adoc
│ │ │ │ ├── 025-quickstart-guide-GUI-step-2.adoc
│ │ │ │ ├── 030-quickstart-guide-GUI-step-3.adoc
│ │ │ │ ├── 035-quickstart-guide-GUI-step-4.adoc
│ │ │ │ ├── 036-quickstart-guide-enable-jupyter.adoc
│ │ │ │ ├── 037-quickstart-steps-overview.adoc
│ │ │ │ └── 110-appendices.adoc
│ │ │ ├── interact-cluster/
│ │ │ │ └── 001-hw-quickstart-guide-interact.adoc
│ │ │ ├── jupyter/
│ │ │ │ └── 000-jupyter-main-page.adoc
│ │ │ ├── quickstart-emr/
│ │ │ │ ├── 000-header.adoc
│ │ │ │ ├── 005-environment-setup.adoc
│ │ │ │ ├── 010-preparation.adoc
│ │ │ │ ├── 015-vector-demo.adoc
│ │ │ │ ├── 020-raster-demo.adoc
│ │ │ │ ├── 025-notebook-examples.adoc
│ │ │ │ └── 030-further-documentation.adoc
│ │ │ ├── spatial-join/
│ │ │ │ └── 000-join-main-page.adoc
│ │ │ └── zeppelin/
│ │ │ └── 000-zeppelin-main-page.adoc
│ │ └── userguide/
│ │ ├── 000-header.adoc
│ │ ├── 005-introduction.adoc
│ │ ├── 010-cli.adoc
│ │ ├── 015-datastores.adoc
│ │ ├── 020-indices.adoc
│ │ ├── 025-ingest.adoc
│ │ ├── 030-queries.adoc
│ │ ├── 031-statistics.adoc
│ │ ├── 035-analytics.adoc
│ │ ├── 045-geoserver.adoc
│ │ ├── 100-appendices.adoc
│ │ ├── 101-migrating.adoc
│ │ ├── 105-accumulo-config.adoc
│ │ ├── 110-visibility-management.adoc
│ │ ├── 115-appendix-security.adoc
│ │ └── 120-puppet.adoc
│ └── pom.xml
├── examples/
│ ├── README.md
│ ├── data/
│ │ ├── notebooks/
│ │ │ ├── jupyter/
│ │ │ │ ├── geowave-gdelt.ipynb
│ │ │ │ ├── geowave-gpx.ipynb
│ │ │ │ ├── geowave-spatial-join.ipynb
│ │ │ │ └── pygw-showcase.ipynb
│ │ │ └── zeppelin/
│ │ │ ├── GDELT-Quick-Start.json
│ │ │ ├── GeoWave-GPX-Demo.json
│ │ │ └── README.md
│ │ └── slds/
│ │ ├── DistributedRender.sld
│ │ ├── KDEColorMap.sld
│ │ └── SubsamplePoints.sld
│ └── java-api/
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── org/
│ │ │ └── locationtech/
│ │ │ └── geowave/
│ │ │ └── examples/
│ │ │ ├── ExamplePersistableRegistry.java
│ │ │ ├── adapter/
│ │ │ │ ├── BasicDataTypeAdapterExample.java
│ │ │ │ └── CustomAdapterExample.java
│ │ │ ├── aggregation/
│ │ │ │ └── binning/
│ │ │ │ └── SpatialBinningAggregationExample.java
│ │ │ ├── index/
│ │ │ │ └── CustomIndexExample.java
│ │ │ ├── ingest/
│ │ │ │ ├── SimpleIngest.java
│ │ │ │ ├── bulk/
│ │ │ │ │ ├── GeonamesDataFileInputFormat.java
│ │ │ │ │ ├── GeonamesSimpleFeatureType.java
│ │ │ │ │ └── SimpleFeatureToAccumuloKeyValueMapper.java
│ │ │ │ └── plugin/
│ │ │ │ ├── CustomIngestFormat.java
│ │ │ │ ├── CustomIngestPlugin.java
│ │ │ │ └── CustomIngestPluginExample.java
│ │ │ ├── query/
│ │ │ │ ├── CQLQueryExample.java
│ │ │ │ ├── SpatialQueryExample.java
│ │ │ │ └── SpatialTemporalQueryExample.java
│ │ │ ├── spark/
│ │ │ │ └── GeoWaveRDDExample.java
│ │ │ └── stats/
│ │ │ ├── CustomStatisticExample.java
│ │ │ ├── ExampleRegisteredStatistics.java
│ │ │ ├── SpatialBinningStatisticExample.java
│ │ │ └── WordCountStatistic.java
│ │ └── resources/
│ │ ├── META-INF/
│ │ │ └── services/
│ │ │ ├── org.locationtech.geowave.core.index.persist.PersistableRegistrySpi
│ │ │ ├── org.locationtech.geowave.core.ingest.spi.IngestFormatPluginProviderSpi
│ │ │ └── org.locationtech.geowave.core.store.statistics.StatisticsRegistrySPI
│ │ ├── geonames.txt
│ │ └── stateCapitals.csv
│ └── test/
│ ├── java/
│ │ └── org/
│ │ └── locationtech/
│ │ └── geowave/
│ │ └── examples/
│ │ └── ingest/
│ │ ├── BulkIngestInputGenerationTest.java
│ │ └── SimpleIngestTest.java
│ └── resources/
│ ├── hbase.properties
│ └── org/
│ └── locationtech/
│ └── geowave/
│ └── examples/
│ └── ingest/
│ └── geonames/
│ ├── barbados/
│ │ └── BB.txt
│ └── readme.txt
├── extensions/
│ ├── adapters/
│ │ ├── auth/
│ │ │ ├── pom.xml
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── org/
│ │ │ │ │ └── locationtech/
│ │ │ │ │ └── geowave/
│ │ │ │ │ └── adapter/
│ │ │ │ │ └── auth/
│ │ │ │ │ ├── AuthorizationEntry.java
│ │ │ │ │ ├── AuthorizationFactorySPI.java
│ │ │ │ │ ├── AuthorizationSPI.java
│ │ │ │ │ ├── AuthorizationSet.java
│ │ │ │ │ ├── EmptyAuthorizationFactory.java
│ │ │ │ │ ├── EmptyAuthorizationProvider.java
│ │ │ │ │ ├── JsonFileAuthorizationFactory.java
│ │ │ │ │ └── JsonFileAuthorizationProvider.java
│ │ │ │ └── resources/
│ │ │ │ └── META-INF/
│ │ │ │ └── services/
│ │ │ │ └── org.locationtech.geowave.adapter.auth.AuthorizationFactorySPI
│ │ │ └── test/
│ │ │ ├── java/
│ │ │ │ └── org/
│ │ │ │ └── locationtech/
│ │ │ │ └── geowave/
│ │ │ │ └── adapter/
│ │ │ │ └── auth/
│ │ │ │ └── JsonFileAuthorizationAdapterTest.java
│ │ │ └── resources/
│ │ │ └── jsonAuthfile.json
│ │ ├── raster/
│ │ │ ├── .gitignore
│ │ │ ├── pom.xml
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── org/
│ │ │ │ │ └── locationtech/
│ │ │ │ │ └── geowave/
│ │ │ │ │ └── adapter/
│ │ │ │ │ └── raster/
│ │ │ │ │ ├── FitToIndexGridCoverage.java
│ │ │ │ │ ├── ImageWorkerPredefineStats.java
│ │ │ │ │ ├── RasterAdapterPersistableRegistry.java
│ │ │ │ │ ├── RasterUtils.java
│ │ │ │ │ ├── Resolution.java
│ │ │ │ │ ├── adapter/
│ │ │ │ │ │ ├── ClientMergeableRasterTile.java
│ │ │ │ │ │ ├── GridCoverageWritable.java
│ │ │ │ │ │ ├── InternalRasterDataAdapter.java
│ │ │ │ │ │ ├── MosaicPropertyGenerator.java
│ │ │ │ │ │ ├── RasterDataAdapter.java
│ │ │ │ │ │ ├── RasterRegisteredIndexFieldMappers.java
│ │ │ │ │ │ ├── RasterTile.java
│ │ │ │ │ │ ├── RasterTileReader.java
│ │ │ │ │ │ ├── RasterTileSpatialFieldMapper.java
│ │ │ │ │ │ ├── RasterTileWriter.java
│ │ │ │ │ │ ├── ServerMergeableRasterTile.java
│ │ │ │ │ │ ├── SourceThresholdFixMosaicDescriptor.java
│ │ │ │ │ │ ├── SourceThresholdMosaicDescriptor.java
│ │ │ │ │ │ ├── merge/
│ │ │ │ │ │ │ ├── MultiAdapterServerMergeStrategy.java
│ │ │ │ │ │ │ ├── RasterTileMergeStrategy.java
│ │ │ │ │ │ │ ├── RasterTileRowTransform.java
│ │ │ │ │ │ │ ├── ServerMergeStrategy.java
│ │ │ │ │ │ │ ├── SimpleAbstractMergeStrategy.java
│ │ │ │ │ │ │ ├── SingleAdapterServerMergeStrategy.java
│ │ │ │ │ │ │ └── nodata/
│ │ │ │ │ │ │ ├── NoDataByFilter.java
│ │ │ │ │ │ │ ├── NoDataBySampleIndex.java
│ │ │ │ │ │ │ ├── NoDataMergeStrategy.java
│ │ │ │ │ │ │ ├── NoDataMetadata.java
│ │ │ │ │ │ │ └── NoDataMetadataFactory.java
│ │ │ │ │ │ └── warp/
│ │ │ │ │ │ ├── WarpNearestOpImage.java
│ │ │ │ │ │ ├── WarpOpImage.java
│ │ │ │ │ │ └── WarpRIF.java
│ │ │ │ │ ├── operations/
│ │ │ │ │ │ ├── DeletePyramidLevelCommand.java
│ │ │ │ │ │ ├── InstallGdalCommand.java
│ │ │ │ │ │ ├── RasterOperationCLIProvider.java
│ │ │ │ │ │ ├── RasterSection.java
│ │ │ │ │ │ ├── ResizeMRCommand.java
│ │ │ │ │ │ └── options/
│ │ │ │ │ │ └── RasterTileResizeCommandLineOptions.java
│ │ │ │ │ ├── plugin/
│ │ │ │ │ │ ├── GeoWaveGTRasterFormat.java
│ │ │ │ │ │ ├── GeoWaveGTRasterFormatFactory.java
│ │ │ │ │ │ ├── GeoWaveRasterConfig.java
│ │ │ │ │ │ ├── GeoWaveRasterReader.java
│ │ │ │ │ │ ├── GeoWaveRasterReaderState.java
│ │ │ │ │ │ └── gdal/
│ │ │ │ │ │ ├── GDALGeoTiffFormat.java
│ │ │ │ │ │ ├── GDALGeoTiffFormatFactory.java
│ │ │ │ │ │ ├── GDALGeoTiffReader.java
│ │ │ │ │ │ └── InstallGdal.java
│ │ │ │ │ ├── resize/
│ │ │ │ │ │ ├── RasterTileResizeCombiner.java
│ │ │ │ │ │ ├── RasterTileResizeHelper.java
│ │ │ │ │ │ ├── RasterTileResizeJobRunner.java
│ │ │ │ │ │ ├── RasterTileResizeMapper.java
│ │ │ │ │ │ └── RasterTileResizeReducer.java
│ │ │ │ │ ├── stats/
│ │ │ │ │ │ ├── HistogramConfig.java
│ │ │ │ │ │ ├── RasterBoundingBoxStatistic.java
│ │ │ │ │ │ ├── RasterFootprintStatistic.java
│ │ │ │ │ │ ├── RasterHistogramStatistic.java
│ │ │ │ │ │ ├── RasterOverviewStatistic.java
│ │ │ │ │ │ ├── RasterRegisteredStatistics.java
│ │ │ │ │ │ └── RasterStatisticQueryBuilder.java
│ │ │ │ │ └── util/
│ │ │ │ │ ├── DataBufferPersistenceUtils.java
│ │ │ │ │ ├── SampleModelPersistenceUtils.java
│ │ │ │ │ └── ZipUtils.java
│ │ │ │ ├── protobuf/
│ │ │ │ │ ├── DataBuffer.proto
│ │ │ │ │ └── SampleModel.proto
│ │ │ │ └── resources/
│ │ │ │ └── META-INF/
│ │ │ │ └── services/
│ │ │ │ ├── org.geotools.coverage.grid.io.GridFormatFactorySpi
│ │ │ │ ├── org.locationtech.geowave.core.cli.spi.CLIOperationProviderSpi
│ │ │ │ ├── org.locationtech.geowave.core.index.persist.PersistableRegistrySpi
│ │ │ │ ├── org.locationtech.geowave.core.store.index.IndexFieldMapperRegistrySPI
│ │ │ │ └── org.locationtech.geowave.core.store.statistics.StatisticsRegistrySPI
│ │ │ └── test/
│ │ │ └── java/
│ │ │ └── org/
│ │ │ └── locationtech/
│ │ │ └── geowave/
│ │ │ └── adapter/
│ │ │ └── raster/
│ │ │ ├── RasterUtilsTest.java
│ │ │ └── WebMercatorRasterTest.java
│ │ └── vector/
│ │ ├── .gitignore
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ ├── avro/
│ │ │ │ └── AvroSimpleFeature.avsc
│ │ │ ├── java/
│ │ │ │ └── org/
│ │ │ │ ├── geotools/
│ │ │ │ │ ├── feature/
│ │ │ │ │ │ └── simple/
│ │ │ │ │ │ └── OptimizedSimpleFeatureBuilder.java
│ │ │ │ │ ├── process/
│ │ │ │ │ │ └── function/
│ │ │ │ │ │ └── DistributedRenderProcessUtils.java
│ │ │ │ │ └── renderer/
│ │ │ │ │ └── lite/
│ │ │ │ │ └── DistributedRenderer.java
│ │ │ │ └── locationtech/
│ │ │ │ └── geowave/
│ │ │ │ └── adapter/
│ │ │ │ └── vector/
│ │ │ │ ├── FeatureAdapterPersistableRegistry.java
│ │ │ │ ├── FeatureDataAdapter.java
│ │ │ │ ├── FeatureRowBuilder.java
│ │ │ │ ├── FeatureWritable.java
│ │ │ │ ├── GeoWaveAvroFeatureUtils.java
│ │ │ │ ├── cli/
│ │ │ │ │ ├── VectorCLIProvider.java
│ │ │ │ │ └── VectorSection.java
│ │ │ │ ├── delete/
│ │ │ │ │ └── CQLDelete.java
│ │ │ │ ├── export/
│ │ │ │ │ ├── VectorExportMapper.java
│ │ │ │ │ ├── VectorExportOptions.java
│ │ │ │ │ ├── VectorLocalExportCommand.java
│ │ │ │ │ ├── VectorLocalExportOptions.java
│ │ │ │ │ ├── VectorMRExportCommand.java
│ │ │ │ │ ├── VectorMRExportJobRunner.java
│ │ │ │ │ └── VectorMRExportOptions.java
│ │ │ │ ├── field/
│ │ │ │ │ └── SimpleFeatureSerializationProvider.java
│ │ │ │ ├── index/
│ │ │ │ │ ├── ChooseBestMatchIndexQueryStrategy.java
│ │ │ │ │ ├── ChooseHeuristicMatchIndexQueryStrategy.java
│ │ │ │ │ ├── ChooseLocalityPreservingQueryStrategy.java
│ │ │ │ │ ├── IndexQueryStrategySPI.java
│ │ │ │ │ ├── SimpleFeaturePrimaryIndexConfiguration.java
│ │ │ │ │ ├── SimpleFeatureSecondaryIndexConfiguration.java
│ │ │ │ │ └── VectorTextIndexEntryConverter.java
│ │ │ │ ├── ingest/
│ │ │ │ │ ├── AbstractSimpleFeatureIngestFormat.java
│ │ │ │ │ ├── AbstractSimpleFeatureIngestPlugin.java
│ │ │ │ │ ├── CQLFilterOptionProvider.java
│ │ │ │ │ ├── DataSchemaOptionProvider.java
│ │ │ │ │ ├── FeatureSerializationOptionProvider.java
│ │ │ │ │ ├── GeometrySimpOptionProvider.java
│ │ │ │ │ ├── MinimalSimpleFeatureIngestFormat.java
│ │ │ │ │ ├── MinimalSimpleFeatureIngestPlugin.java
│ │ │ │ │ ├── SerializableSimpleFeatureIngestOptions.java
│ │ │ │ │ ├── SimpleFeatureIngestOptions.java
│ │ │ │ │ └── TypeNameOptionProvider.java
│ │ │ │ ├── plugin/
│ │ │ │ │ ├── DecimationProcess.java
│ │ │ │ │ ├── DistributedRenderProcess.java
│ │ │ │ │ ├── GeoWaveDataStoreComponents.java
│ │ │ │ │ ├── GeoWaveFeatureCollection.java
│ │ │ │ │ ├── GeoWaveFeatureReader.java
│ │ │ │ │ ├── GeoWaveFeatureSource.java
│ │ │ │ │ ├── GeoWaveFeatureWriter.java
│ │ │ │ │ ├── GeoWaveGSProcessFactory.java
│ │ │ │ │ ├── GeoWaveGTDataStore.java
│ │ │ │ │ ├── GeoWaveGTDataStoreFactory.java
│ │ │ │ │ ├── GeoWaveGTPluginUtils.java
│ │ │ │ │ ├── GeoWavePluginConfig.java
│ │ │ │ │ ├── GeoWavePluginException.java
│ │ │ │ │ ├── GeoWaveQueryCaps.java
│ │ │ │ │ ├── InternalProcessFactory.java
│ │ │ │ │ ├── QueryIssuer.java
│ │ │ │ │ ├── SubsampleProcess.java
│ │ │ │ │ ├── lock/
│ │ │ │ │ │ ├── AbstractLockingManagement.java
│ │ │ │ │ │ ├── AuthorizedLock.java
│ │ │ │ │ │ ├── LockingManagement.java
│ │ │ │ │ │ ├── LockingManagementFactory.java
│ │ │ │ │ │ ├── MemoryLockManager.java
│ │ │ │ │ │ └── MemoryLockManagerFactory.java
│ │ │ │ │ └── transaction/
│ │ │ │ │ ├── AbstractTransactionManagement.java
│ │ │ │ │ ├── GeoWaveAutoCommitTransactionState.java
│ │ │ │ │ ├── GeoWaveEmptyTransaction.java
│ │ │ │ │ ├── GeoWaveTransaction.java
│ │ │ │ │ ├── GeoWaveTransactionManagement.java
│ │ │ │ │ ├── GeoWaveTransactionManagementState.java
│ │ │ │ │ ├── GeoWaveTransactionState.java
│ │ │ │ │ ├── MemoryTransactionsAllocator.java
│ │ │ │ │ ├── StatisticsCache.java
│ │ │ │ │ └── TransactionsAllocator.java
│ │ │ │ ├── query/
│ │ │ │ │ ├── GeoJsonQueryOutputFormat.java
│ │ │ │ │ ├── ShapefileQueryOutputFormat.java
│ │ │ │ │ └── aggregation/
│ │ │ │ │ └── VectorCountAggregation.java
│ │ │ │ ├── render/
│ │ │ │ │ ├── AsyncQueueFeatureCollection.java
│ │ │ │ │ ├── DistributedRenderAggregation.java
│ │ │ │ │ ├── DistributedRenderCallback.java
│ │ │ │ │ ├── DistributedRenderMapOutputFormat.java
│ │ │ │ │ ├── DistributedRenderOptions.java
│ │ │ │ │ ├── DistributedRenderResult.java
│ │ │ │ │ ├── DistributedRenderWMSFacade.java
│ │ │ │ │ ├── InternalDistributedRenderProcess.java
│ │ │ │ │ ├── PersistableComposite.java
│ │ │ │ │ └── PersistableRenderedImage.java
│ │ │ │ └── util/
│ │ │ │ ├── DateUtilities.java
│ │ │ │ ├── FeatureDataUtils.java
│ │ │ │ ├── FeatureGeometryUtils.java
│ │ │ │ ├── FeatureTranslatingIterator.java
│ │ │ │ ├── PolygonAreaCalculator.java
│ │ │ │ ├── QueryIndexHelper.java
│ │ │ │ ├── SimpleFeatureUserDataConfigurationSet.java
│ │ │ │ └── SimpleFeatureWrapper.java
│ │ │ ├── protobuf/
│ │ │ │ └── CqlHBaseQueryFilters.proto
│ │ │ └── resources/
│ │ │ ├── META-INF/
│ │ │ │ └── services/
│ │ │ │ ├── org.geotools.data.DataStoreFactorySpi
│ │ │ │ ├── org.geotools.process.ProcessFactory
│ │ │ │ ├── org.locationtech.geowave.adapter.vector.index.IndexQueryStrategySPI
│ │ │ │ ├── org.locationtech.geowave.adapter.vector.plugin.lock.LockingManagementFactory
│ │ │ │ ├── org.locationtech.geowave.core.cli.spi.CLIOperationProviderSpi
│ │ │ │ ├── org.locationtech.geowave.core.index.persist.PersistableRegistrySpi
│ │ │ │ └── org.locationtech.geowave.core.store.cli.query.QueryOutputFormatSpi
│ │ │ └── applicationContext.xml
│ │ └── test/
│ │ ├── java/
│ │ │ └── org/
│ │ │ └── locationtech/
│ │ │ └── geowave/
│ │ │ └── adapter/
│ │ │ └── vector/
│ │ │ ├── BaseDataStoreTest.java
│ │ │ ├── FeatureDataAdapterTest.java
│ │ │ ├── FeatureWritableTest.java
│ │ │ ├── index/
│ │ │ │ ├── ChooseBestMatchIndexQueryStrategyTest.java
│ │ │ │ ├── ChooseHeuristicMatchQueryStrategyTest.java
│ │ │ │ └── ChooseLocalityPreservingQueryStrategyTest.java
│ │ │ ├── plugin/
│ │ │ │ ├── ExtractGeometryFilterVisitorTest.java
│ │ │ │ ├── ExtractTimeFilterVisitorTest.java
│ │ │ │ ├── GeoToolsAttributesSubsetTest.java
│ │ │ │ ├── GeoWaveFeatureReaderTest.java
│ │ │ │ ├── GeoWaveFeatureSourceTest.java
│ │ │ │ ├── GeoWavePluginConfigTest.java
│ │ │ │ ├── WFSBoundedQueryTest.java
│ │ │ │ ├── WFSBoundedSpatialQueryTest.java
│ │ │ │ ├── WFSSpatialTest.java
│ │ │ │ ├── WFSTemporalQueryTest.java
│ │ │ │ ├── WFSTransactionTest.java
│ │ │ │ └── lock/
│ │ │ │ └── MemoryLockManagerTest.java
│ │ │ ├── query/
│ │ │ │ ├── CqlQueryFilterIteratorTest.java
│ │ │ │ ├── TemporalRangeTest.java
│ │ │ │ └── cql/
│ │ │ │ ├── CQLQueryFilterTest.java
│ │ │ │ ├── CQLQueryTest.java
│ │ │ │ └── FilterToCQLToolTest.java
│ │ │ ├── stats/
│ │ │ │ ├── CountMinSketchStatisticsTest.java
│ │ │ │ ├── FixedBinNumericHistogramStatisticTest.java
│ │ │ │ ├── HyperLogLogStaticticsTest.java
│ │ │ │ └── NumericHistogramStatisticsTest.java
│ │ │ └── util/
│ │ │ ├── FeatureDataUtilsTest.java
│ │ │ ├── QueryIndexHelperTest.java
│ │ │ └── TimeDescriptorsTest.java
│ │ └── resources/
│ │ └── statsFile.json
│ ├── cli/
│ │ ├── accumulo-embed/
│ │ │ ├── pom.xml
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── org/
│ │ │ │ └── locationtech/
│ │ │ │ └── geowave/
│ │ │ │ └── datastore/
│ │ │ │ └── accumulo/
│ │ │ │ └── cli/
│ │ │ │ ├── AccumuloMiniCluster.java
│ │ │ │ ├── AccumuloMiniClusterShell.java
│ │ │ │ ├── AccumuloRunServerCommand.java
│ │ │ │ ├── EmbeddedAccumuloOperationProvider.java
│ │ │ │ ├── MiniAccumuloClusterFactory.java
│ │ │ │ └── MiniAccumuloUtils.java
│ │ │ └── resources/
│ │ │ └── META-INF/
│ │ │ └── services/
│ │ │ └── org.locationtech.geowave.core.cli.spi.CLIOperationProviderSpi
│ │ ├── bigtable-embed/
│ │ │ ├── pom.xml
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── org/
│ │ │ │ └── locationtech/
│ │ │ │ └── geowave/
│ │ │ │ └── datastore/
│ │ │ │ └── bigtable/
│ │ │ │ └── cli/
│ │ │ │ ├── BigtableEmulator.java
│ │ │ │ ├── BigtableOperationProvider.java
│ │ │ │ ├── BigtableSection.java
│ │ │ │ ├── RunBigtableEmulator.java
│ │ │ │ └── RunBigtableEmulatorOptions.java
│ │ │ └── resources/
│ │ │ └── META-INF/
│ │ │ └── services/
│ │ │ └── org.locationtech.geowave.core.cli.spi.CLIOperationProviderSpi
│ │ ├── cassandra-embed/
│ │ │ ├── pom.xml
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── org/
│ │ │ │ └── locationtech/
│ │ │ │ └── geowave/
│ │ │ │ └── datastore/
│ │ │ │ └── cassandra/
│ │ │ │ └── cli/
│ │ │ │ ├── CassandraOperationProvider.java
│ │ │ │ ├── CassandraSection.java
│ │ │ │ ├── CassandraServer.java
│ │ │ │ └── RunCassandraServer.java
│ │ │ └── resources/
│ │ │ ├── META-INF/
│ │ │ │ └── services/
│ │ │ │ └── org.locationtech.geowave.core.cli.spi.CLIOperationProviderSpi
│ │ │ └── cassandra-default.yaml
│ │ ├── debug/
│ │ │ ├── pom.xml
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── org/
│ │ │ │ └── locationtech/
│ │ │ │ └── geowave/
│ │ │ │ └── cli/
│ │ │ │ └── debug/
│ │ │ │ ├── AbstractGeoWaveQuery.java
│ │ │ │ ├── BBOXQuery.java
│ │ │ │ ├── CQLQuery.java
│ │ │ │ ├── ClientSideCQLQuery.java
│ │ │ │ ├── DebugOperationsProvider.java
│ │ │ │ ├── DebugSection.java
│ │ │ │ ├── FullTableScan.java
│ │ │ │ ├── MinimalFullTable.java
│ │ │ │ └── SparkQuery.java
│ │ │ └── resources/
│ │ │ └── META-INF/
│ │ │ └── services/
│ │ │ └── org.locationtech.geowave.core.cli.spi.CLIOperationProviderSpi
│ │ ├── dynamodb-embed/
│ │ │ ├── pom.xml
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── org/
│ │ │ │ └── locationtech/
│ │ │ │ └── geowave/
│ │ │ │ └── datastore/
│ │ │ │ └── dynamodb/
│ │ │ │ └── cli/
│ │ │ │ ├── DynamoDBLocal.java
│ │ │ │ ├── DynamoDBOperationProvider.java
│ │ │ │ ├── DynamoDBSection.java
│ │ │ │ ├── RunDynamoDBLocal.java
│ │ │ │ └── RunDynamoDBLocalOptions.java
│ │ │ └── resources/
│ │ │ └── META-INF/
│ │ │ └── services/
│ │ │ └── org.locationtech.geowave.core.cli.spi.CLIOperationProviderSpi
│ │ ├── geoserver/
│ │ │ ├── pom.xml
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── org/
│ │ │ │ │ └── locationtech/
│ │ │ │ │ └── geowave/
│ │ │ │ │ └── cli/
│ │ │ │ │ └── geoserver/
│ │ │ │ │ ├── ConfigGeoServerCommand.java
│ │ │ │ │ ├── GeoServerCommand.java
│ │ │ │ │ ├── GeoServerConfig.java
│ │ │ │ │ ├── GeoServerOperationProvider.java
│ │ │ │ │ ├── GeoServerRemoveCommand.java
│ │ │ │ │ ├── GeoServerRestClient.java
│ │ │ │ │ ├── GeoServerSSLConfigurationOptions.java
│ │ │ │ │ ├── GeoServerSection.java
│ │ │ │ │ ├── SSLOptionAnnotation.java
│ │ │ │ │ ├── StoreSSLConfigurationOptions.java
│ │ │ │ │ ├── constants/
│ │ │ │ │ │ └── GeoServerConstants.java
│ │ │ │ │ ├── coverage/
│ │ │ │ │ │ ├── CoverageOperationProvider.java
│ │ │ │ │ │ ├── CoverageSection.java
│ │ │ │ │ │ ├── GeoServerAddCoverageCommand.java
│ │ │ │ │ │ ├── GeoServerGetCoverageCommand.java
│ │ │ │ │ │ ├── GeoServerListCoveragesCommand.java
│ │ │ │ │ │ └── GeoServerRemoveCoverageCommand.java
│ │ │ │ │ ├── cvstore/
│ │ │ │ │ │ ├── CoverageStoreOperationProvider.java
│ │ │ │ │ │ ├── CoverageStoreSection.java
│ │ │ │ │ │ ├── GeoServerAddCoverageStoreCommand.java
│ │ │ │ │ │ ├── GeoServerGetCoverageStoreCommand.java
│ │ │ │ │ │ ├── GeoServerListCoverageStoresCommand.java
│ │ │ │ │ │ └── GeoServerRemoveCoverageStoreCommand.java
│ │ │ │ │ ├── datastore/
│ │ │ │ │ │ ├── DatastoreOperationProvider.java
│ │ │ │ │ │ ├── DatastoreSection.java
│ │ │ │ │ │ ├── GeoServerAddDatastoreCommand.java
│ │ │ │ │ │ ├── GeoServerGetDatastoreCommand.java
│ │ │ │ │ │ ├── GeoServerGetStoreAdapterCommand.java
│ │ │ │ │ │ ├── GeoServerListDatastoresCommand.java
│ │ │ │ │ │ └── GeoServerRemoveDatastoreCommand.java
│ │ │ │ │ ├── featurelayer/
│ │ │ │ │ │ ├── FeatureLayerOperationProvider.java
│ │ │ │ │ │ ├── FeatureLayerSection.java
│ │ │ │ │ │ ├── GeoServerAddFeatureLayerCommand.java
│ │ │ │ │ │ ├── GeoServerGetFeatureLayerCommand.java
│ │ │ │ │ │ ├── GeoServerListFeatureLayersCommand.java
│ │ │ │ │ │ └── GeoServerRemoveFeatureLayerCommand.java
│ │ │ │ │ ├── layer/
│ │ │ │ │ │ ├── GeoServerAddLayerCommand.java
│ │ │ │ │ │ ├── LayerOperationProvider.java
│ │ │ │ │ │ └── LayerSection.java
│ │ │ │ │ ├── style/
│ │ │ │ │ │ ├── GeoServerAddStyleCommand.java
│ │ │ │ │ │ ├── GeoServerGetStyleCommand.java
│ │ │ │ │ │ ├── GeoServerListStylesCommand.java
│ │ │ │ │ │ ├── GeoServerRemoveStyleCommand.java
│ │ │ │ │ │ ├── GeoServerSetLayerStyleCommand.java
│ │ │ │ │ │ ├── StyleOperationProvider.java
│ │ │ │ │ │ └── StyleSection.java
│ │ │ │ │ └── workspace/
│ │ │ │ │ ├── GeoServerAddWorkspaceCommand.java
│ │ │ │ │ ├── GeoServerListWorkspacesCommand.java
│ │ │ │ │ ├── GeoServerRemoveWorkspaceCommand.java
│ │ │ │ │ ├── WorkspaceOperationProvider.java
│ │ │ │ │ └── WorkspaceSection.java
│ │ │ │ └── resources/
│ │ │ │ └── META-INF/
│ │ │ │ └── services/
│ │ │ │ └── org.locationtech.geowave.core.cli.spi.CLIOperationProviderSpi
│ │ │ └── test/
│ │ │ └── java/
│ │ │ └── org/
│ │ │ └── locationtech/
│ │ │ └── geowave/
│ │ │ └── cli/
│ │ │ └── geoserver/
│ │ │ └── GeoServerRestClientTest.java
│ │ ├── geoserver-embed/
│ │ │ ├── pom.xml
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── org/
│ │ │ │ └── locationtech/
│ │ │ │ └── geowave/
│ │ │ │ └── cli/
│ │ │ │ └── geoserver/
│ │ │ │ ├── RunGeoServer.java
│ │ │ │ ├── RunGeoServerOperationProvider.java
│ │ │ │ └── RunGeoServerOptions.java
│ │ │ └── resources/
│ │ │ ├── META-INF/
│ │ │ │ └── services/
│ │ │ │ └── org.locationtech.geowave.core.cli.spi.CLIOperationProviderSpi
│ │ │ └── log4j-geoserver.properties
│ │ ├── hbase-embed/
│ │ │ ├── pom.xml
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── org/
│ │ │ │ └── locationtech/
│ │ │ │ └── geowave/
│ │ │ │ └── datastore/
│ │ │ │ └── hbase/
│ │ │ │ └── cli/
│ │ │ │ ├── GeoWaveHBaseUtility.java
│ │ │ │ ├── HBaseMiniCluster.java
│ │ │ │ ├── HBaseMiniClusterClassLoader.java
│ │ │ │ ├── HBaseSection.java
│ │ │ │ ├── HBaseTestVisibilityLabelServiceImpl.java
│ │ │ │ ├── RunHBaseServer.java
│ │ │ │ ├── RunHBaseServerOperationProvider.java
│ │ │ │ ├── RunHBaseServerOptions.java
│ │ │ │ └── ZookeeperMiniCluster.java
│ │ │ └── resources/
│ │ │ ├── META-INF/
│ │ │ │ └── services/
│ │ │ │ └── org.locationtech.geowave.core.cli.spi.CLIOperationProviderSpi
│ │ │ └── hbase.properties
│ │ ├── kudu-embed/
│ │ │ ├── pom.xml
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── org/
│ │ │ │ └── locationtech/
│ │ │ │ └── geowave/
│ │ │ │ └── datastore/
│ │ │ │ └── kudu/
│ │ │ │ └── cli/
│ │ │ │ ├── KuduLocal.java
│ │ │ │ ├── KuduOperationProvider.java
│ │ │ │ ├── KuduSection.java
│ │ │ │ ├── RunKuduLocal.java
│ │ │ │ └── RunKuduLocalOptions.java
│ │ │ └── resources/
│ │ │ └── META-INF/
│ │ │ └── services/
│ │ │ └── org.locationtech.geowave.core.cli.spi.CLIOperationProviderSpi
│ │ ├── landsat8/
│ │ │ ├── README.md
│ │ │ ├── pom.xml
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── org/
│ │ │ │ │ └── locationtech/
│ │ │ │ │ └── geowave/
│ │ │ │ │ └── format/
│ │ │ │ │ └── landsat8/
│ │ │ │ │ ├── AnalyzeRunner.java
│ │ │ │ │ ├── BandFeatureIterator.java
│ │ │ │ │ ├── DownloadRunner.java
│ │ │ │ │ ├── IngestRunner.java
│ │ │ │ │ ├── Landsat8AnalyzeCommand.java
│ │ │ │ │ ├── Landsat8BandConverterSpi.java
│ │ │ │ │ ├── Landsat8BasicCommandLineOptions.java
│ │ │ │ │ ├── Landsat8DownloadCommand.java
│ │ │ │ │ ├── Landsat8DownloadCommandLineOptions.java
│ │ │ │ │ ├── Landsat8IngestCommand.java
│ │ │ │ │ ├── Landsat8IngestRasterCommand.java
│ │ │ │ │ ├── Landsat8IngestVectorCommand.java
│ │ │ │ │ ├── Landsat8OperationProvider.java
│ │ │ │ │ ├── Landsat8RasterIngestCommandLineOptions.java
│ │ │ │ │ ├── Landsat8Section.java
│ │ │ │ │ ├── PropertyIgnoringFilterVisitor.java
│ │ │ │ │ ├── RasterIngestRunner.java
│ │ │ │ │ ├── SceneFeatureIterator.java
│ │ │ │ │ ├── VectorIngestRunner.java
│ │ │ │ │ ├── VectorOverrideCommandLineOptions.java
│ │ │ │ │ ├── WRS2GeometryStore.java
│ │ │ │ │ ├── index/
│ │ │ │ │ │ ├── Landsat8PersistableRegistry.java
│ │ │ │ │ │ └── Landsat8TemporalBinningStrategy.java
│ │ │ │ │ └── qa/
│ │ │ │ │ └── QABandToIceMaskConverter.java
│ │ │ │ └── resources/
│ │ │ │ └── META-INF/
│ │ │ │ └── services/
│ │ │ │ ├── org.locationtech.geowave.core.cli.spi.CLIOperationProviderSpi
│ │ │ │ ├── org.locationtech.geowave.core.index.persist.PersistableRegistrySpi
│ │ │ │ └── org.locationtech.geowave.format.landsat.Landsat8BandConverterSpi
│ │ │ └── test/
│ │ │ ├── java/
│ │ │ │ └── org/
│ │ │ │ └── locationtech/
│ │ │ │ └── geowave/
│ │ │ │ └── format/
│ │ │ │ └── landsat8/
│ │ │ │ ├── AnalyzeRunnerTest.java
│ │ │ │ ├── DownloadRunnerTest.java
│ │ │ │ ├── IngestRunnerTest.java
│ │ │ │ ├── RasterIngestRunnerTest.java
│ │ │ │ ├── SceneFeatureIteratorTest.java
│ │ │ │ ├── Tests.java
│ │ │ │ ├── VectorIngestRunnerTest.java
│ │ │ │ └── WRS2GeometryStoreTest.java
│ │ │ └── resources/
│ │ │ └── geowave-config.properties
│ │ ├── osm/
│ │ │ ├── .gitignore
│ │ │ ├── pom.xml
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── avro/
│ │ │ │ │ ├── LongArray.avsc
│ │ │ │ │ └── OsmAvro.avsc
│ │ │ │ ├── java/
│ │ │ │ │ └── org/
│ │ │ │ │ └── locationtech/
│ │ │ │ │ └── geowave/
│ │ │ │ │ └── cli/
│ │ │ │ │ └── osm/
│ │ │ │ │ ├── accumulo/
│ │ │ │ │ │ └── osmschema/
│ │ │ │ │ │ ├── ColumnFamily.java
│ │ │ │ │ │ ├── ColumnQualifier.java
│ │ │ │ │ │ ├── Constants.java
│ │ │ │ │ │ └── Schema.java
│ │ │ │ │ ├── mapreduce/
│ │ │ │ │ │ ├── Convert/
│ │ │ │ │ │ │ ├── OSMConversionMapper.java
│ │ │ │ │ │ │ ├── OSMConversionRunner.java
│ │ │ │ │ │ │ ├── OsmProvider/
│ │ │ │ │ │ │ │ └── OsmProvider.java
│ │ │ │ │ │ │ └── SimpleFeatureGenerator.java
│ │ │ │ │ │ └── Ingest/
│ │ │ │ │ │ ├── OSMMapperBase.java
│ │ │ │ │ │ ├── OSMNodeMapper.java
│ │ │ │ │ │ ├── OSMRelationMapper.java
│ │ │ │ │ │ ├── OSMRunner.java
│ │ │ │ │ │ └── OSMWayMapper.java
│ │ │ │ │ ├── operations/
│ │ │ │ │ │ ├── IngestOSMToGeoWaveCommand.java
│ │ │ │ │ │ ├── OSMOperationProvider.java
│ │ │ │ │ │ ├── OSMSection.java
│ │ │ │ │ │ ├── StageOSMToHDFSCommand.java
│ │ │ │ │ │ └── options/
│ │ │ │ │ │ └── OSMIngestCommandArgs.java
│ │ │ │ │ ├── osmfeature/
│ │ │ │ │ │ ├── FeatureConfigParser.java
│ │ │ │ │ │ └── types/
│ │ │ │ │ │ ├── attributes/
│ │ │ │ │ │ │ ├── AttributeDefinition.java
│ │ │ │ │ │ │ ├── AttributeType.java
│ │ │ │ │ │ │ └── AttributeTypes.java
│ │ │ │ │ │ └── features/
│ │ │ │ │ │ ├── FeatureDefinition.java
│ │ │ │ │ │ ├── FeatureDefinitionSet.java
│ │ │ │ │ │ └── FeatureType.java
│ │ │ │ │ ├── parser/
│ │ │ │ │ │ ├── OsmPbfParser.java
│ │ │ │ │ │ ├── OsmPbfParserOptions.java
│ │ │ │ │ │ └── OsmXmlLoader.java
│ │ │ │ │ └── types/
│ │ │ │ │ └── TypeUtils.java
│ │ │ │ └── resources/
│ │ │ │ └── META-INF/
│ │ │ │ └── services/
│ │ │ │ └── org.locationtech.geowave.core.cli.spi.CLIOperationProviderSpi
│ │ │ └── test/
│ │ │ ├── data/
│ │ │ │ └── test_mapping.json
│ │ │ └── java/
│ │ │ └── org/
│ │ │ └── locationtech/
│ │ │ └── geowave/
│ │ │ └── cli/
│ │ │ └── osm/
│ │ │ ├── ColumnQualifierTest.java
│ │ │ └── osmfeature/
│ │ │ └── FeatureConfigParserTest.java
│ │ ├── redis-embed/
│ │ │ ├── pom.xml
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── org/
│ │ │ │ └── locationtech/
│ │ │ │ └── geowave/
│ │ │ │ └── datastore/
│ │ │ │ └── redis/
│ │ │ │ └── cli/
│ │ │ │ ├── RedisOperationProvider.java
│ │ │ │ ├── RedisSection.java
│ │ │ │ ├── RunRedisServer.java
│ │ │ │ └── RunRedisServerOptions.java
│ │ │ └── resources/
│ │ │ └── META-INF/
│ │ │ └── services/
│ │ │ └── org.locationtech.geowave.core.cli.spi.CLIOperationProviderSpi
│ │ └── sentinel2/
│ │ ├── README.md
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ ├── java/
│ │ │ │ └── org/
│ │ │ │ └── locationtech/
│ │ │ │ └── geowave/
│ │ │ │ └── format/
│ │ │ │ └── sentinel2/
│ │ │ │ ├── AnalyzeRunner.java
│ │ │ │ ├── BandFeatureIterator.java
│ │ │ │ ├── DownloadRunner.java
│ │ │ │ ├── IngestRunner.java
│ │ │ │ ├── PropertyIgnoringFilterVisitor.java
│ │ │ │ ├── RasterBandData.java
│ │ │ │ ├── RasterIngestRunner.java
│ │ │ │ ├── SceneFeatureIterator.java
│ │ │ │ ├── Sentinel2AnalyzeCommand.java
│ │ │ │ ├── Sentinel2BandConverterSpi.java
│ │ │ │ ├── Sentinel2BasicCommandLineOptions.java
│ │ │ │ ├── Sentinel2DownloadCommand.java
│ │ │ │ ├── Sentinel2DownloadCommandLineOptions.java
│ │ │ │ ├── Sentinel2ImageryProvider.java
│ │ │ │ ├── Sentinel2ImageryProvidersCommand.java
│ │ │ │ ├── Sentinel2IngestCommand.java
│ │ │ │ ├── Sentinel2IngestRasterCommand.java
│ │ │ │ ├── Sentinel2IngestVectorCommand.java
│ │ │ │ ├── Sentinel2OperationProvider.java
│ │ │ │ ├── Sentinel2RasterIngestCommandLineOptions.java
│ │ │ │ ├── Sentinel2Section.java
│ │ │ │ ├── VectorIngestRunner.java
│ │ │ │ ├── VectorOverrideCommandLineOptions.java
│ │ │ │ ├── amazon/
│ │ │ │ │ └── AmazonImageryProvider.java
│ │ │ │ └── theia/
│ │ │ │ └── TheiaImageryProvider.java
│ │ │ └── resources/
│ │ │ └── META-INF/
│ │ │ └── services/
│ │ │ └── org.locationtech.geowave.core.cli.spi.CLIOperationProviderSpi
│ │ └── test/
│ │ ├── java/
│ │ │ └── org/
│ │ │ └── locationtech/
│ │ │ └── geowave/
│ │ │ └── format/
│ │ │ └── sentinel2/
│ │ │ ├── AnalyzeRunnerTest.java
│ │ │ ├── DownloadRunnerTest.java
│ │ │ ├── IngestRunnerTest.java
│ │ │ ├── RasterIngestRunnerTest.java
│ │ │ ├── SceneFeatureIteratorTest.java
│ │ │ ├── Tests.java
│ │ │ └── VectorIngestRunnerTest.java
│ │ └── resources/
│ │ ├── auth_theia.txt
│ │ └── geowave-config.properties
│ ├── datastores/
│ │ ├── accumulo/
│ │ │ ├── pom.xml
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── org/
│ │ │ │ │ └── locationtech/
│ │ │ │ │ └── geowave/
│ │ │ │ │ └── datastore/
│ │ │ │ │ └── accumulo/
│ │ │ │ │ ├── AccumuloDataStore.java
│ │ │ │ │ ├── AccumuloDataStoreFactory.java
│ │ │ │ │ ├── AccumuloFactoryHelper.java
│ │ │ │ │ ├── AccumuloRow.java
│ │ │ │ │ ├── AccumuloStoreFactoryFamily.java
│ │ │ │ │ ├── IteratorConfig.java
│ │ │ │ │ ├── MergingCombiner.java
│ │ │ │ │ ├── MergingVisibilityCombiner.java
│ │ │ │ │ ├── RowMergingCombiner.java
│ │ │ │ │ ├── RowMergingVisibilityCombiner.java
│ │ │ │ │ ├── cli/
│ │ │ │ │ │ ├── AbstractSplitsCommand.java
│ │ │ │ │ │ ├── AccumuloOperationProvider.java
│ │ │ │ │ │ ├── AccumuloSection.java
│ │ │ │ │ │ ├── PreSplitPartitionIdCommand.java
│ │ │ │ │ │ ├── SplitEqualIntervalCommand.java
│ │ │ │ │ │ ├── SplitNumRecordsCommand.java
│ │ │ │ │ │ └── SplitQuantileCommand.java
│ │ │ │ │ ├── config/
│ │ │ │ │ │ ├── AccumuloOptions.java
│ │ │ │ │ │ └── AccumuloRequiredOptions.java
│ │ │ │ │ ├── iterators/
│ │ │ │ │ │ ├── AggregationIterator.java
│ │ │ │ │ │ ├── AttributeSubsettingIterator.java
│ │ │ │ │ │ ├── ExceptionHandlingFilter.java
│ │ │ │ │ │ ├── ExceptionHandlingSkippingIterator.java
│ │ │ │ │ │ ├── ExceptionHandlingTransformingIterator.java
│ │ │ │ │ │ ├── FixedCardinalitySkippingIterator.java
│ │ │ │ │ │ ├── NumericIndexStrategyFilterIterator.java
│ │ │ │ │ │ ├── QueryFilterIterator.java
│ │ │ │ │ │ ├── SecondaryIndexQueryFilterIterator.java
│ │ │ │ │ │ ├── SingleEntryFilterIterator.java
│ │ │ │ │ │ ├── VersionIterator.java
│ │ │ │ │ │ ├── WholeRowAggregationIterator.java
│ │ │ │ │ │ └── WholeRowQueryFilterIterator.java
│ │ │ │ │ ├── mapreduce/
│ │ │ │ │ │ └── AccumuloSplitsProvider.java
│ │ │ │ │ ├── operations/
│ │ │ │ │ │ ├── AbstractAccumuloWriter.java
│ │ │ │ │ │ ├── AccumuloDataIndexWriter.java
│ │ │ │ │ │ ├── AccumuloDeleter.java
│ │ │ │ │ │ ├── AccumuloMetadataDeleter.java
│ │ │ │ │ │ ├── AccumuloMetadataReader.java
│ │ │ │ │ │ ├── AccumuloMetadataWriter.java
│ │ │ │ │ │ ├── AccumuloOperations.java
│ │ │ │ │ │ ├── AccumuloReader.java
│ │ │ │ │ │ ├── AccumuloRowDeleter.java
│ │ │ │ │ │ ├── AccumuloWriter.java
│ │ │ │ │ │ └── config/
│ │ │ │ │ │ └── AccumuloDatastoreDefaultConfigProvider.java
│ │ │ │ │ ├── split/
│ │ │ │ │ │ ├── AbstractAccumuloSplitsOperation.java
│ │ │ │ │ │ └── SplitCommandLineOptions.java
│ │ │ │ │ └── util/
│ │ │ │ │ ├── AccumuloKeyValuePairGenerator.java
│ │ │ │ │ ├── AccumuloUtils.java
│ │ │ │ │ ├── ConnectorPool.java
│ │ │ │ │ ├── PersistentDataFormatter.java
│ │ │ │ │ └── ScannerClosableWrapper.java
│ │ │ │ └── resources/
│ │ │ │ └── META-INF/
│ │ │ │ └── services/
│ │ │ │ ├── org.locationtech.geowave.core.cli.spi.CLIOperationProviderSpi
│ │ │ │ ├── org.locationtech.geowave.core.cli.spi.DefaultConfigProviderSpi
│ │ │ │ └── org.locationtech.geowave.core.store.StoreFactoryFamilySpi
│ │ │ └── test/
│ │ │ └── resources/
│ │ │ └── META-INF/
│ │ │ └── services/
│ │ │ └── org.locationtech.geowave.core.index.persist.PersistableRegistrySpi
│ │ ├── bigtable/
│ │ │ ├── pom.xml
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── org/
│ │ │ │ └── locationtech/
│ │ │ │ └── geowave/
│ │ │ │ └── datastore/
│ │ │ │ └── bigtable/
│ │ │ │ ├── BigTableConnectionPool.java
│ │ │ │ ├── BigTableDataStoreFactory.java
│ │ │ │ ├── BigTableFactoryHelper.java
│ │ │ │ ├── BigTableStoreFactoryFamily.java
│ │ │ │ ├── config/
│ │ │ │ │ └── BigTableOptions.java
│ │ │ │ └── operations/
│ │ │ │ ├── BigTableOperations.java
│ │ │ │ └── BigtableReader.java
│ │ │ └── resources/
│ │ │ └── META-INF/
│ │ │ └── services/
│ │ │ └── org.locationtech.geowave.core.store.StoreFactoryFamilySpi
│ │ ├── cassandra/
│ │ │ ├── pom.xml
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── org/
│ │ │ │ │ └── locationtech/
│ │ │ │ │ └── geowave/
│ │ │ │ │ └── datastore/
│ │ │ │ │ └── cassandra/
│ │ │ │ │ ├── CassandraDataStore.java
│ │ │ │ │ ├── CassandraDataStoreFactory.java
│ │ │ │ │ ├── CassandraDefaultConfigProvider.java
│ │ │ │ │ ├── CassandraFactoryHelper.java
│ │ │ │ │ ├── CassandraRow.java
│ │ │ │ │ ├── CassandraStoreFactoryFamily.java
│ │ │ │ │ ├── config/
│ │ │ │ │ │ ├── CassandraOptions.java
│ │ │ │ │ │ └── CassandraRequiredOptions.java
│ │ │ │ │ ├── operations/
│ │ │ │ │ │ ├── BatchHandler.java
│ │ │ │ │ │ ├── BatchedRangeRead.java
│ │ │ │ │ │ ├── BatchedWrite.java
│ │ │ │ │ │ ├── CassandraDeleter.java
│ │ │ │ │ │ ├── CassandraMetadataDeleter.java
│ │ │ │ │ │ ├── CassandraMetadataReader.java
│ │ │ │ │ │ ├── CassandraMetadataWriter.java
│ │ │ │ │ │ ├── CassandraOperations.java
│ │ │ │ │ │ ├── CassandraReader.java
│ │ │ │ │ │ ├── CassandraWriter.java
│ │ │ │ │ │ └── RowRead.java
│ │ │ │ │ └── util/
│ │ │ │ │ ├── CassandraUtils.java
│ │ │ │ │ ├── KeyspaceStatePool.java
│ │ │ │ │ └── SessionPool.java
│ │ │ │ └── resources/
│ │ │ │ └── META-INF/
│ │ │ │ └── services/
│ │ │ │ ├── org.locationtech.geowave.core.cli.spi.DefaultConfigProviderSpi
│ │ │ │ └── org.locationtech.geowave.core.store.StoreFactoryFamilySpi
│ │ │ └── test/
│ │ │ └── java/
│ │ │ └── org/
│ │ │ └── locationtech/
│ │ │ └── geowave/
│ │ │ └── datastore/
│ │ │ └── cassandra/
│ │ │ ├── CassandraOptionsTest.java
│ │ │ └── CassandraRequiredOptionsTest.java
│ │ ├── dynamodb/
│ │ │ ├── pom.xml
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── org/
│ │ │ │ │ └── locationtech/
│ │ │ │ │ └── geowave/
│ │ │ │ │ └── datastore/
│ │ │ │ │ └── dynamodb/
│ │ │ │ │ ├── DynamoDBClientPool.java
│ │ │ │ │ ├── DynamoDBDataStore.java
│ │ │ │ │ ├── DynamoDBDataStoreFactory.java
│ │ │ │ │ ├── DynamoDBFactoryHelper.java
│ │ │ │ │ ├── DynamoDBRow.java
│ │ │ │ │ ├── DynamoDBStoreFactoryFamily.java
│ │ │ │ │ ├── config/
│ │ │ │ │ │ └── DynamoDBOptions.java
│ │ │ │ │ ├── operations/
│ │ │ │ │ │ ├── DynamoDBDeleter.java
│ │ │ │ │ │ ├── DynamoDBMetadataDeleter.java
│ │ │ │ │ │ ├── DynamoDBMetadataReader.java
│ │ │ │ │ │ ├── DynamoDBMetadataWriter.java
│ │ │ │ │ │ ├── DynamoDBOperations.java
│ │ │ │ │ │ ├── DynamoDBReader.java
│ │ │ │ │ │ └── DynamoDBWriter.java
│ │ │ │ │ └── util/
│ │ │ │ │ ├── AsyncPaginatedQuery.java
│ │ │ │ │ ├── AsyncPaginatedScan.java
│ │ │ │ │ ├── DynamoDBUtils.java
│ │ │ │ │ ├── LazyPaginatedQuery.java
│ │ │ │ │ └── LazyPaginatedScan.java
│ │ │ │ └── resources/
│ │ │ │ └── META-INF/
│ │ │ │ └── services/
│ │ │ │ └── org.locationtech.geowave.core.store.StoreFactoryFamilySpi
│ │ │ └── test/
│ │ │ └── java/
│ │ │ └── org/
│ │ │ └── locationtech/
│ │ │ └── geowave/
│ │ │ └── datastore/
│ │ │ └── dynamodb/
│ │ │ └── util/
│ │ │ └── DynamoDBUtilsTest.java
│ │ ├── filesystem/
│ │ │ ├── pom.xml
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── org/
│ │ │ │ └── locationtech/
│ │ │ │ └── geowave/
│ │ │ │ └── datastore/
│ │ │ │ └── filesystem/
│ │ │ │ ├── FileSystemDataFormatter.java
│ │ │ │ ├── FileSystemDataFormatterRegistry.java
│ │ │ │ ├── FileSystemDataFormatterSpi.java
│ │ │ │ ├── FileSystemDataStore.java
│ │ │ │ ├── FileSystemDataStoreFactory.java
│ │ │ │ ├── FileSystemDefaultConfigProvider.java
│ │ │ │ ├── FileSystemFactoryHelper.java
│ │ │ │ ├── FileSystemStoreFactoryFamily.java
│ │ │ │ ├── cli/
│ │ │ │ │ ├── FileSystemOperationProvider.java
│ │ │ │ │ ├── FileSystemSection.java
│ │ │ │ │ └── ListFormatsCommand.java
│ │ │ │ ├── config/
│ │ │ │ │ └── FileSystemOptions.java
│ │ │ │ ├── operations/
│ │ │ │ │ ├── FileSystemDataIndexWriter.java
│ │ │ │ │ ├── FileSystemMetadataDeleter.java
│ │ │ │ │ ├── FileSystemMetadataReader.java
│ │ │ │ │ ├── FileSystemMetadataWriter.java
│ │ │ │ │ ├── FileSystemOperations.java
│ │ │ │ │ ├── FileSystemQueryExecution.java
│ │ │ │ │ ├── FileSystemReader.java
│ │ │ │ │ ├── FileSystemRowDeleter.java
│ │ │ │ │ └── FileSystemWriter.java
│ │ │ │ └── util/
│ │ │ │ ├── AbstractFileSystemIterator.java
│ │ │ │ ├── AbstractFileSystemTable.java
│ │ │ │ ├── BasicFileSystemKey.java
│ │ │ │ ├── DataFormatterCache.java
│ │ │ │ ├── DataIndexRowIterator.java
│ │ │ │ ├── FileSystemClient.java
│ │ │ │ ├── FileSystemClientCache.java
│ │ │ │ ├── FileSystemDataIndexTable.java
│ │ │ │ ├── FileSystemGeoWaveMetadata.java
│ │ │ │ ├── FileSystemIndexKeyWrapper.java
│ │ │ │ ├── FileSystemIndexTable.java
│ │ │ │ ├── FileSystemKey.java
│ │ │ │ ├── FileSystemMetadataIterator.java
│ │ │ │ ├── FileSystemMetadataTable.java
│ │ │ │ ├── FileSystemRow.java
│ │ │ │ ├── FileSystemRowIterator.java
│ │ │ │ ├── FileSystemUtils.java
│ │ │ │ └── GeoWaveBinaryDataFormatter.java
│ │ │ └── resources/
│ │ │ └── META-INF/
│ │ │ └── services/
│ │ │ ├── org.locationtech.geowave.core.cli.spi.CLIOperationProviderSpi
│ │ │ ├── org.locationtech.geowave.core.cli.spi.DefaultConfigProviderSpi
│ │ │ ├── org.locationtech.geowave.core.store.StoreFactoryFamilySpi
│ │ │ └── org.locationtech.geowave.datastore.filesystem.FileSystemDataFormatterSpi
│ │ ├── hbase/
│ │ │ ├── coprocessors/
│ │ │ │ ├── pom.xml
│ │ │ │ └── src/
│ │ │ │ └── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── org/
│ │ │ │ │ └── locationtech/
│ │ │ │ │ └── geowave/
│ │ │ │ │ └── datastore/
│ │ │ │ │ └── hbase/
│ │ │ │ │ └── coprocessors/
│ │ │ │ │ ├── AggregationEndpoint.java
│ │ │ │ │ ├── HBaseBulkDeleteEndpoint.java
│ │ │ │ │ ├── ServerSideOperationsObserver.java
│ │ │ │ │ └── VersionEndpoint.java
│ │ │ │ └── resources/
│ │ │ │ ├── META-INF/
│ │ │ │ │ └── services/
│ │ │ │ │ ├── org.locationtech.geowave.core.cli.spi.DefaultConfigProviderSpi
│ │ │ │ │ ├── org.locationtech.geowave.core.index.persist.PersistableRegistrySpi
│ │ │ │ │ ├── org.locationtech.geowave.core.store.StoreFactoryFamilySpi
│ │ │ │ │ └── org.locationtech.geowave.core.store.spi.ClassLoaderTransformerSpi
│ │ │ │ └── hbase.properties
│ │ │ └── core/
│ │ │ ├── .gitignore
│ │ │ ├── pom.xml
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── org/
│ │ │ │ └── locationtech/
│ │ │ │ └── geowave/
│ │ │ │ └── datastore/
│ │ │ │ └── hbase/
│ │ │ │ ├── HBaseDataStore.java
│ │ │ │ ├── HBaseDataStoreFactory.java
│ │ │ │ ├── HBaseFactoryHelper.java
│ │ │ │ ├── HBasePersistableRegistry.java
│ │ │ │ ├── HBaseRow.java
│ │ │ │ ├── HBaseStoreFactoryFamily.java
│ │ │ │ ├── config/
│ │ │ │ │ ├── HBaseOptions.java
│ │ │ │ │ └── HBaseRequiredOptions.java
│ │ │ │ ├── filters/
│ │ │ │ │ ├── FixedCardinalitySkippingFilter.java
│ │ │ │ │ ├── HBaseDistributableFilter.java
│ │ │ │ │ ├── HBaseMergingFilter.java
│ │ │ │ │ ├── HBaseNumericIndexStrategyFilter.java
│ │ │ │ │ └── SingleEntryFilter.java
│ │ │ │ ├── mapreduce/
│ │ │ │ │ └── HBaseSplitsProvider.java
│ │ │ │ ├── operations/
│ │ │ │ │ ├── GeoWaveColumnFamily.java
│ │ │ │ │ ├── HBaseDataIndexWriter.java
│ │ │ │ │ ├── HBaseDeleter.java
│ │ │ │ │ ├── HBaseMetadataDeleter.java
│ │ │ │ │ ├── HBaseMetadataReader.java
│ │ │ │ │ ├── HBaseMetadataWriter.java
│ │ │ │ │ ├── HBaseOperations.java
│ │ │ │ │ ├── HBaseParallelDecoder.java
│ │ │ │ │ ├── HBaseReader.java
│ │ │ │ │ ├── HBaseRowDeleter.java
│ │ │ │ │ ├── HBaseWriter.java
│ │ │ │ │ └── config/
│ │ │ │ │ └── HBaseDatastoreDefaultConfigProvider.java
│ │ │ │ ├── server/
│ │ │ │ │ ├── BasicRowScanner.java
│ │ │ │ │ ├── GeoWaveColumnId.java
│ │ │ │ │ ├── HBaseServerOp.java
│ │ │ │ │ ├── MergingServerOp.java
│ │ │ │ │ ├── MergingVisibilityServerOp.java
│ │ │ │ │ ├── PartialCellEquality.java
│ │ │ │ │ ├── RowMergingServerOp.java
│ │ │ │ │ ├── RowMergingVisibilityServerOp.java
│ │ │ │ │ ├── RowScanner.java
│ │ │ │ │ ├── ServerOpInternalScannerWrapper.java
│ │ │ │ │ ├── ServerOpRegionScannerWrapper.java
│ │ │ │ │ ├── ServerSideOperationKey.java
│ │ │ │ │ ├── ServerSideOperationStore.java
│ │ │ │ │ └── ServerSideOperationUtils.java
│ │ │ │ └── util/
│ │ │ │ ├── ConnectionPool.java
│ │ │ │ ├── CoprocessorClassLoaderTransformer.java
│ │ │ │ ├── GeoWaveBlockingRpcCallback.java
│ │ │ │ ├── HBaseCellGenerator.java
│ │ │ │ └── HBaseUtils.java
│ │ │ ├── protobuf/
│ │ │ │ ├── AggregationService.proto
│ │ │ │ ├── HBaseBulkDelete.proto
│ │ │ │ ├── SingleEntryFilters.proto
│ │ │ │ └── Version.proto
│ │ │ └── resources/
│ │ │ ├── META-INF/
│ │ │ │ └── services/
│ │ │ │ ├── org.locationtech.geowave.core.cli.spi.DefaultConfigProviderSpi
│ │ │ │ ├── org.locationtech.geowave.core.index.persist.PersistableRegistrySpi
│ │ │ │ ├── org.locationtech.geowave.core.store.StoreFactoryFamilySpi
│ │ │ │ └── org.locationtech.geowave.core.store.spi.ClassLoaderTransformerSpi
│ │ │ └── hbase.properties
│ │ ├── kudu/
│ │ │ ├── pom.xml
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── org/
│ │ │ │ └── locationtech/
│ │ │ │ └── geowave/
│ │ │ │ └── datastore/
│ │ │ │ └── kudu/
│ │ │ │ ├── KuduColumnType.java
│ │ │ │ ├── KuduDataIndexRow.java
│ │ │ │ ├── KuduDataStore.java
│ │ │ │ ├── KuduDataStoreFactory.java
│ │ │ │ ├── KuduFactoryHelper.java
│ │ │ │ ├── KuduMetadataRow.java
│ │ │ │ ├── KuduRow.java
│ │ │ │ ├── KuduStoreFactoryFamily.java
│ │ │ │ ├── PersistentKuduRow.java
│ │ │ │ ├── config/
│ │ │ │ │ ├── KuduOptions.java
│ │ │ │ │ └── KuduRequiredOptions.java
│ │ │ │ ├── operations/
│ │ │ │ │ ├── KuduDataIndexRead.java
│ │ │ │ │ ├── KuduDeleter.java
│ │ │ │ │ ├── KuduMetadataDeleter.java
│ │ │ │ │ ├── KuduMetadataReader.java
│ │ │ │ │ ├── KuduMetadataWriter.java
│ │ │ │ │ ├── KuduOperations.java
│ │ │ │ │ ├── KuduRangeRead.java
│ │ │ │ │ ├── KuduReader.java
│ │ │ │ │ └── KuduWriter.java
│ │ │ │ └── util/
│ │ │ │ ├── AsyncClientPool.java
│ │ │ │ ├── ClientPool.java
│ │ │ │ └── KuduUtils.java
│ │ │ └── resources/
│ │ │ └── META-INF/
│ │ │ └── services/
│ │ │ └── org.locationtech.geowave.core.store.StoreFactoryFamilySpi
│ │ ├── redis/
│ │ │ ├── pom.xml
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── org/
│ │ │ │ │ └── locationtech/
│ │ │ │ │ └── geowave/
│ │ │ │ │ └── datastore/
│ │ │ │ │ └── redis/
│ │ │ │ │ ├── RedisDataStore.java
│ │ │ │ │ ├── RedisDataStoreFactory.java
│ │ │ │ │ ├── RedisDefaultConfigProvider.java
│ │ │ │ │ ├── RedisFactoryHelper.java
│ │ │ │ │ ├── RedisStoreFactoryFamily.java
│ │ │ │ │ ├── config/
│ │ │ │ │ │ └── RedisOptions.java
│ │ │ │ │ ├── operations/
│ │ │ │ │ │ ├── BatchedRangeRead.java
│ │ │ │ │ │ ├── DataIndexRangeRead.java
│ │ │ │ │ │ ├── DataIndexRead.java
│ │ │ │ │ │ ├── RangeReadInfo.java
│ │ │ │ │ │ ├── RedisDataIndexWriter.java
│ │ │ │ │ │ ├── RedisMetadataDeleter.java
│ │ │ │ │ │ ├── RedisMetadataReader.java
│ │ │ │ │ │ ├── RedisMetadataWriter.java
│ │ │ │ │ │ ├── RedisOperations.java
│ │ │ │ │ │ ├── RedisReader.java
│ │ │ │ │ │ ├── RedisRowDeleter.java
│ │ │ │ │ │ └── RedisWriter.java
│ │ │ │ │ └── util/
│ │ │ │ │ ├── AbstractRedisSetWrapper.java
│ │ │ │ │ ├── GeoWaveMetadataCodec.java
│ │ │ │ │ ├── GeoWaveMetadataWithTimestampCodec.java
│ │ │ │ │ ├── GeoWaveRedisPersistedRow.java
│ │ │ │ │ ├── GeoWaveRedisPersistedTimestampRow.java
│ │ │ │ │ ├── GeoWaveRedisRow.java
│ │ │ │ │ ├── GeoWaveRedisRowCodec.java
│ │ │ │ │ ├── GeoWaveRedisRowWithTimestampCodec.java
│ │ │ │ │ ├── GeoWaveTimestampMetadata.java
│ │ │ │ │ ├── LazyPaginatedEntryRange.java
│ │ │ │ │ ├── RedisMapWrapper.java
│ │ │ │ │ ├── RedisScoredSetWrapper.java
│ │ │ │ │ ├── RedisUtils.java
│ │ │ │ │ └── RedissonClientCache.java
│ │ │ │ └── resources/
│ │ │ │ └── META-INF/
│ │ │ │ └── services/
│ │ │ │ ├── org.locationtech.geowave.core.cli.spi.DefaultConfigProviderSpi
│ │ │ │ └── org.locationtech.geowave.core.store.StoreFactoryFamilySpi
│ │ │ └── test/
│ │ │ └── java/
│ │ │ └── org/
│ │ │ └── locationtech/
│ │ │ └── geowave/
│ │ │ └── datastore/
│ │ │ └── redis/
│ │ │ └── util/
│ │ │ ├── RedisScoredSetWrapperTest.java
│ │ │ └── RedisUtilsTest.java
│ │ └── rocksdb/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ ├── java/
│ │ │ │ └── org/
│ │ │ │ └── locationtech/
│ │ │ │ └── geowave/
│ │ │ │ └── datastore/
│ │ │ │ └── rocksdb/
│ │ │ │ ├── RocksDBDataStore.java
│ │ │ │ ├── RocksDBDataStoreFactory.java
│ │ │ │ ├── RocksDBDefaultConfigProvider.java
│ │ │ │ ├── RocksDBFactoryHelper.java
│ │ │ │ ├── RocksDBStoreFactoryFamily.java
│ │ │ │ ├── config/
│ │ │ │ │ └── RocksDBOptions.java
│ │ │ │ ├── operations/
│ │ │ │ │ ├── RockDBDataIndexWriter.java
│ │ │ │ │ ├── RocksDBMetadataDeleter.java
│ │ │ │ │ ├── RocksDBMetadataReader.java
│ │ │ │ │ ├── RocksDBMetadataWriter.java
│ │ │ │ │ ├── RocksDBOperations.java
│ │ │ │ │ ├── RocksDBQueryExecution.java
│ │ │ │ │ ├── RocksDBReader.java
│ │ │ │ │ ├── RocksDBRowDeleter.java
│ │ │ │ │ └── RocksDBWriter.java
│ │ │ │ └── util/
│ │ │ │ ├── AbstractRocksDBIterator.java
│ │ │ │ ├── AbstractRocksDBTable.java
│ │ │ │ ├── DataIndexBoundedReverseRowIterator.java
│ │ │ │ ├── DataIndexForwardRowIterator.java
│ │ │ │ ├── DataIndexReverseRowIterator.java
│ │ │ │ ├── RocksDBClient.java
│ │ │ │ ├── RocksDBClientCache.java
│ │ │ │ ├── RocksDBDataIndexTable.java
│ │ │ │ ├── RocksDBGeoWaveMetadata.java
│ │ │ │ ├── RocksDBIndexTable.java
│ │ │ │ ├── RocksDBMetadataIterator.java
│ │ │ │ ├── RocksDBMetadataTable.java
│ │ │ │ ├── RocksDBRow.java
│ │ │ │ ├── RocksDBRowIterator.java
│ │ │ │ └── RocksDBUtils.java
│ │ │ └── resources/
│ │ │ └── META-INF/
│ │ │ └── services/
│ │ │ ├── org.locationtech.geowave.core.cli.spi.DefaultConfigProviderSpi
│ │ │ └── org.locationtech.geowave.core.store.StoreFactoryFamilySpi
│ │ └── test/
│ │ ├── java/
│ │ │ └── org/
│ │ │ └── locationtech/
│ │ │ └── geowave/
│ │ │ └── datastore/
│ │ │ └── rocksdb/
│ │ │ ├── RocksDBLockfileTest.java
│ │ │ ├── RocksDBMetadataTableTest.java
│ │ │ ├── RocksDBTestPersistableRegistry.java
│ │ │ └── util/
│ │ │ └── RocksDBUtilsTest.java
│ │ └── resources/
│ │ └── META-INF/
│ │ └── services/
│ │ └── org.locationtech.geowave.core.index.persist.PersistableRegistrySpi
│ ├── formats/
│ │ ├── avro/
│ │ │ ├── pom.xml
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── org/
│ │ │ │ │ └── locationtech/
│ │ │ │ │ └── geowave/
│ │ │ │ │ └── format/
│ │ │ │ │ └── avro/
│ │ │ │ │ ├── GeoWaveAvroIngestFormat.java
│ │ │ │ │ ├── GeoWaveAvroIngestPlugin.java
│ │ │ │ │ └── GeoWaveAvroPersistableRegistry.java
│ │ │ │ └── resources/
│ │ │ │ └── META-INF/
│ │ │ │ └── services/
│ │ │ │ ├── org.locationtech.geowave.core.index.persist.PersistableRegistrySpi
│ │ │ │ └── org.locationtech.geowave.core.ingest.spi.IngestFormatPluginProviderSpi
│ │ │ └── test/
│ │ │ ├── java/
│ │ │ │ └── org/
│ │ │ │ └── locationtech/
│ │ │ │ └── geowave/
│ │ │ │ └── format/
│ │ │ │ └── avro/
│ │ │ │ └── GeoWaveAvroIngestTest.java
│ │ │ └── resources/
│ │ │ └── tornado_tracksbasicIT-export.avro
│ │ ├── gdelt/
│ │ │ ├── pom.xml
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── org/
│ │ │ │ │ └── locationtech/
│ │ │ │ │ └── geowave/
│ │ │ │ │ └── format/
│ │ │ │ │ └── gdelt/
│ │ │ │ │ ├── GDELTIngestFormat.java
│ │ │ │ │ ├── GDELTIngestPlugin.java
│ │ │ │ │ ├── GDELTPersistableRegistry.java
│ │ │ │ │ └── GDELTUtils.java
│ │ │ │ └── resources/
│ │ │ │ └── META-INF/
│ │ │ │ └── services/
│ │ │ │ ├── org.locationtech.geowave.core.index.persist.PersistableRegistrySpi
│ │ │ │ └── org.locationtech.geowave.core.ingest.spi.IngestFormatPluginProviderSpi
│ │ │ └── test/
│ │ │ └── java/
│ │ │ └── org/
│ │ │ └── locationtech/
│ │ │ └── geowave/
│ │ │ └── format/
│ │ │ └── gdelt/
│ │ │ └── GDELTIngestTest.java
│ │ ├── geolife/
│ │ │ ├── pom.xml
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── org/
│ │ │ │ │ └── locationtech/
│ │ │ │ │ └── geowave/
│ │ │ │ │ └── format/
│ │ │ │ │ └── geolife/
│ │ │ │ │ ├── GeoLifeIngestFormat.java
│ │ │ │ │ ├── GeoLifeIngestPlugin.java
│ │ │ │ │ ├── GeoLifePersistableRegistry.java
│ │ │ │ │ └── GeoLifeUtils.java
│ │ │ │ └── resources/
│ │ │ │ └── META-INF/
│ │ │ │ └── services/
│ │ │ │ ├── org.locationtech.geowave.core.index.persist.PersistableRegistrySpi
│ │ │ │ └── org.locationtech.geowave.core.ingest.spi.IngestFormatPluginProviderSpi
│ │ │ └── test/
│ │ │ ├── java/
│ │ │ │ └── org/
│ │ │ │ └── locationtech/
│ │ │ │ └── geowave/
│ │ │ │ └── format/
│ │ │ │ └── geolife/
│ │ │ │ └── GEOLIFEIngestTest.java
│ │ │ └── resources/
│ │ │ └── 20081023025304.plt
│ │ ├── geotools-raster/
│ │ │ ├── pom.xml
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── org/
│ │ │ │ └── locationtech/
│ │ │ │ └── geowave/
│ │ │ │ └── format/
│ │ │ │ └── geotools/
│ │ │ │ └── raster/
│ │ │ │ ├── GeoToolsRasterDataStoreIngestFormat.java
│ │ │ │ ├── GeoToolsRasterDataStoreIngestPlugin.java
│ │ │ │ ├── NoDataMergeStrategyProvider.java
│ │ │ │ ├── NoMergeStrategyProvider.java
│ │ │ │ ├── RasterMergeStrategyProviderSpi.java
│ │ │ │ └── RasterOptionProvider.java
│ │ │ └── resources/
│ │ │ └── META-INF/
│ │ │ └── services/
│ │ │ ├── org.locationtech.geowave.core.ingest.spi.IngestFormatPluginProviderSpi
│ │ │ └── org.locationtech.geowave.format.geotools.raster.RasterMergeStrategyProviderSpi
│ │ ├── geotools-vector/
│ │ │ ├── pom.xml
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── org/
│ │ │ │ └── locationtech/
│ │ │ │ └── geowave/
│ │ │ │ └── format/
│ │ │ │ └── geotools/
│ │ │ │ └── vector/
│ │ │ │ ├── AbstractFieldRetypingSource.java
│ │ │ │ ├── GeoToolsVectorDataOptions.java
│ │ │ │ ├── GeoToolsVectorDataStoreIngestFormat.java
│ │ │ │ ├── GeoToolsVectorDataStoreIngestPlugin.java
│ │ │ │ ├── RetypingVectorDataPlugin.java
│ │ │ │ ├── SimpleFeatureGeoWaveWrapper.java
│ │ │ │ └── retyping/
│ │ │ │ └── date/
│ │ │ │ ├── DateFieldOptionProvider.java
│ │ │ │ ├── DateFieldRetypingPlugin.java
│ │ │ │ └── DateFieldRetypingSource.java
│ │ │ └── resources/
│ │ │ └── META-INF/
│ │ │ └── services/
│ │ │ └── org.locationtech.geowave.core.ingest.spi.IngestFormatPluginProviderSpi
│ │ ├── gpx/
│ │ │ ├── .gitignore
│ │ │ ├── pom.xml
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── avro/
│ │ │ │ │ └── gpxtrack.avsc
│ │ │ │ ├── java/
│ │ │ │ │ └── org/
│ │ │ │ │ └── locationtech/
│ │ │ │ │ └── geowave/
│ │ │ │ │ └── format/
│ │ │ │ │ └── gpx/
│ │ │ │ │ ├── GPXConsumer.java
│ │ │ │ │ ├── GpxIngestFormat.java
│ │ │ │ │ ├── GpxIngestPlugin.java
│ │ │ │ │ ├── GpxPersistableRegistry.java
│ │ │ │ │ ├── GpxUtils.java
│ │ │ │ │ └── MaxExtentOptProvider.java
│ │ │ │ └── resources/
│ │ │ │ ├── META-INF/
│ │ │ │ │ └── services/
│ │ │ │ │ ├── org.locationtech.geowave.core.index.persist.PersistableRegistrySpi
│ │ │ │ │ └── org.locationtech.geowave.core.ingest.spi.IngestFormatPluginProviderSpi
│ │ │ │ └── org/
│ │ │ │ └── locationtech/
│ │ │ │ └── geowave/
│ │ │ │ └── types/
│ │ │ │ └── gpx/
│ │ │ │ ├── gpx-1_0.xsd
│ │ │ │ └── gpx-1_1.xsd
│ │ │ └── test/
│ │ │ ├── java/
│ │ │ │ └── org/
│ │ │ │ └── locationtech/
│ │ │ │ └── geowave/
│ │ │ │ └── types/
│ │ │ │ ├── HelperClass.java
│ │ │ │ ├── ValidateObject.java
│ │ │ │ └── gpx/
│ │ │ │ ├── GPXConsumerTest.java
│ │ │ │ └── GPXIngestPluginTest.java
│ │ │ └── resources/
│ │ │ ├── 12345.xml
│ │ │ ├── gpx/
│ │ │ │ ├── 000991807.gpx
│ │ │ │ └── mystic_basin_trail.gpx
│ │ │ ├── metadata.xml
│ │ │ └── sample_gpx.xml
│ │ ├── stanag4676/
│ │ │ ├── format/
│ │ │ │ ├── pom.xml
│ │ │ │ └── src/
│ │ │ │ └── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── org/
│ │ │ │ │ └── locationtech/
│ │ │ │ │ └── geowave/
│ │ │ │ │ └── format/
│ │ │ │ │ └── stanag4676/
│ │ │ │ │ ├── ByteBufferBackedInputStream.java
│ │ │ │ │ ├── ComparatorStanag4676EventWritable.java
│ │ │ │ │ ├── IngestMessageHandler.java
│ │ │ │ │ ├── Stanag4676EventWritable.java
│ │ │ │ │ ├── Stanag4676IngestFormat.java
│ │ │ │ │ ├── Stanag4676IngestPlugin.java
│ │ │ │ │ ├── Stanag4676PersistableRegistry.java
│ │ │ │ │ ├── Stanag4676Utils.java
│ │ │ │ │ ├── image/
│ │ │ │ │ │ ├── ImageChip.java
│ │ │ │ │ │ ├── ImageChipDataAdapter.java
│ │ │ │ │ │ ├── ImageChipInfo.java
│ │ │ │ │ │ └── ImageChipUtils.java
│ │ │ │ │ └── parser/
│ │ │ │ │ ├── JDOMUtils.java
│ │ │ │ │ ├── NATO4676Decoder.java
│ │ │ │ │ ├── NATO4676Encoder.java
│ │ │ │ │ ├── TrackDecoder.java
│ │ │ │ │ ├── TrackEncoder.java
│ │ │ │ │ ├── TrackFileReader.java
│ │ │ │ │ ├── TrackReader.java
│ │ │ │ │ ├── TrackWriter.java
│ │ │ │ │ ├── model/
│ │ │ │ │ │ ├── Area.java
│ │ │ │ │ │ ├── ClassificationCredibility.java
│ │ │ │ │ │ ├── ClassificationLevel.java
│ │ │ │ │ │ ├── CovarianceMatrix.java
│ │ │ │ │ │ ├── ExerciseIndicator.java
│ │ │ │ │ │ ├── FrequencyUnitType.java
│ │ │ │ │ │ ├── GeodeticPosition.java
│ │ │ │ │ │ ├── IDdata.java
│ │ │ │ │ │ ├── Identity.java
│ │ │ │ │ │ ├── IdentityAmplification.java
│ │ │ │ │ │ ├── IffMode.java
│ │ │ │ │ │ ├── LineageRelation.java
│ │ │ │ │ │ ├── LineageRelationType.java
│ │ │ │ │ │ ├── MissionFrame.java
│ │ │ │ │ │ ├── MissionSummary.java
│ │ │ │ │ │ ├── MissionSummaryMessage.java
│ │ │ │ │ │ ├── ModalityType.java
│ │ │ │ │ │ ├── MotionEventPoint.java
│ │ │ │ │ │ ├── MotionImagery.java
│ │ │ │ │ │ ├── NATO4676Message.java
│ │ │ │ │ │ ├── ObjectClassification.java
│ │ │ │ │ │ ├── Position.java
│ │ │ │ │ │ ├── Security.java
│ │ │ │ │ │ ├── SimulationIndicator.java
│ │ │ │ │ │ ├── SymbolicSpectralRange.java
│ │ │ │ │ │ ├── Track.java
│ │ │ │ │ │ ├── TrackClassification.java
│ │ │ │ │ │ ├── TrackDotSource.java
│ │ │ │ │ │ ├── TrackEnvironment.java
│ │ │ │ │ │ ├── TrackEvent.java
│ │ │ │ │ │ ├── TrackIdentity.java
│ │ │ │ │ │ ├── TrackItem.java
│ │ │ │ │ │ ├── TrackManagement.java
│ │ │ │ │ │ ├── TrackMessage.java
│ │ │ │ │ │ ├── TrackPoint.java
│ │ │ │ │ │ ├── TrackPointDetail.java
│ │ │ │ │ │ ├── TrackPointType.java
│ │ │ │ │ │ ├── TrackRun.java
│ │ │ │ │ │ ├── TrackRunParameter.java
│ │ │ │ │ │ ├── TrackStatus.java
│ │ │ │ │ │ └── TrackerType.java
│ │ │ │ │ └── util/
│ │ │ │ │ ├── EarthVector.java
│ │ │ │ │ └── Length.java
│ │ │ │ └── resources/
│ │ │ │ └── META-INF/
│ │ │ │ └── services/
│ │ │ │ ├── org.locationtech.geowave.core.index.persist.PersistableRegistrySpi
│ │ │ │ └── org.locationtech.geowave.core.ingest.spi.IngestFormatPluginProviderSpi
│ │ │ └── service/
│ │ │ ├── config/
│ │ │ │ └── log4j.properties
│ │ │ ├── pom.xml
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── org/
│ │ │ │ └── locationtech/
│ │ │ │ └── geowave/
│ │ │ │ └── types/
│ │ │ │ └── stanag4676/
│ │ │ │ └── service/
│ │ │ │ ├── Stanag4676ImageryChipApplication.java
│ │ │ │ └── rest/
│ │ │ │ └── Stanag4676ImageryChipService.java
│ │ │ ├── resources/
│ │ │ │ ├── geoserver_files/
│ │ │ │ │ ├── 4676InGeowave.txt
│ │ │ │ │ ├── MotionPointStyle.xml
│ │ │ │ │ ├── TrackPointDecimateHeatMap.xml
│ │ │ │ │ ├── TrackSpeedStyle.xml
│ │ │ │ │ ├── colormap.sld
│ │ │ │ │ ├── config.xml
│ │ │ │ │ ├── motion_point-content.ftl
│ │ │ │ │ ├── track-content.ftl
│ │ │ │ │ └── track_point-content.ftl
│ │ │ │ └── log4j.properties
│ │ │ └── webapp/
│ │ │ ├── .placeholder
│ │ │ └── WEB-INF/
│ │ │ ├── config.properties
│ │ │ └── web.xml
│ │ ├── tdrive/
│ │ │ ├── .gitignore
│ │ │ ├── pom.xml
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── avro/
│ │ │ │ │ └── tdrivepoint.avsc
│ │ │ │ ├── java/
│ │ │ │ │ └── org/
│ │ │ │ │ └── locationtech/
│ │ │ │ │ └── geowave/
│ │ │ │ │ └── format/
│ │ │ │ │ └── tdrive/
│ │ │ │ │ ├── TdriveIngestFormat.java
│ │ │ │ │ ├── TdriveIngestPlugin.java
│ │ │ │ │ ├── TdrivePersistableRegistry.java
│ │ │ │ │ └── TdriveUtils.java
│ │ │ │ └── resources/
│ │ │ │ └── META-INF/
│ │ │ │ └── services/
│ │ │ │ ├── org.locationtech.geowave.core.index.persist.PersistableRegistrySpi
│ │ │ │ └── org.locationtech.geowave.core.ingest.spi.IngestFormatPluginProviderSpi
│ │ │ └── test/
│ │ │ ├── java/
│ │ │ │ └── org/
│ │ │ │ └── locationtech/
│ │ │ │ └── geowave/
│ │ │ │ └── format/
│ │ │ │ └── tdrive/
│ │ │ │ └── TDRIVEIngestTest.java
│ │ │ └── resources/
│ │ │ └── 9879.txt
│ │ └── twitter/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ ├── java/
│ │ │ │ └── org/
│ │ │ │ └── locationtech/
│ │ │ │ └── geowave/
│ │ │ │ └── format/
│ │ │ │ └── twitter/
│ │ │ │ ├── TwitterIngestFormat.java
│ │ │ │ ├── TwitterIngestPlugin.java
│ │ │ │ ├── TwitterPersistableRegistry.java
│ │ │ │ └── TwitterUtils.java
│ │ │ └── resources/
│ │ │ └── META-INF/
│ │ │ └── services/
│ │ │ ├── org.locationtech.geowave.core.index.persist.PersistableRegistrySpi
│ │ │ └── org.locationtech.geowave.core.ingest.spi.IngestFormatPluginProviderSpi
│ │ └── test/
│ │ └── java/
│ │ └── org/
│ │ └── locationtech/
│ │ └── geowave/
│ │ └── format/
│ │ └── twitter/
│ │ └── TwitterIngestTest.java
│ └── pom.xml
├── migration/
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── org/
│ │ │ └── locationtech/
│ │ │ └── geowave/
│ │ │ └── migration/
│ │ │ ├── MigrationPersistableRegistry.java
│ │ │ ├── cli/
│ │ │ │ ├── MigrationCommand.java
│ │ │ │ └── MigrationOperationProvider.java
│ │ │ └── legacy/
│ │ │ ├── adapter/
│ │ │ │ ├── LegacyInternalDataAdapterWrapper.java
│ │ │ │ └── vector/
│ │ │ │ ├── LegacyFeatureDataAdapter.java
│ │ │ │ ├── LegacyStatsConfigurationCollection.java
│ │ │ │ └── LegacyVisibilityConfiguration.java
│ │ │ └── core/
│ │ │ ├── geotime/
│ │ │ │ ├── LegacyCustomCRSSpatialField.java
│ │ │ │ ├── LegacyLatitudeField.java
│ │ │ │ ├── LegacyLongitudeField.java
│ │ │ │ └── LegacySpatialField.java
│ │ │ └── store/
│ │ │ ├── LegacyAdapterIndexMappingStore.java
│ │ │ └── LegacyAdapterToIndexMapping.java
│ │ └── resources/
│ │ └── META-INF/
│ │ └── services/
│ │ ├── org.locationtech.geowave.core.cli.spi.CLIOperationProviderSpi
│ │ └── org.locationtech.geowave.core.index.persist.PersistableRegistrySpi
│ └── test/
│ └── java/
│ └── org/
│ └── locationtech/
│ └── geowave/
│ └── migration/
│ └── MigrationTest.java
├── pom.xml
├── python/
│ ├── pom.xml
│ └── src/
│ ├── examples/
│ │ └── public_schools.csv
│ └── main/
│ ├── java/
│ │ └── org/
│ │ └── locationtech/
│ │ └── geowave/
│ │ └── python/
│ │ ├── Debug.java
│ │ ├── GeoWavePy4JGateway.java
│ │ └── cli/
│ │ ├── PythonOperationProvider.java
│ │ ├── PythonRunGatewayCommand.java
│ │ ├── PythonRunGatewayOptions.java
│ │ └── PythonSection.java
│ ├── python/
│ │ ├── .gitignore
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── maven_version.py
│ │ ├── pygw/
│ │ │ ├── __init__.py
│ │ │ ├── base/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── closeable_iterator.py
│ │ │ │ ├── data_type_adapter.py
│ │ │ │ ├── envelope.py
│ │ │ │ ├── geowave_object.py
│ │ │ │ ├── interval.py
│ │ │ │ ├── java_transformer.py
│ │ │ │ ├── range.py
│ │ │ │ ├── type_conversions.py
│ │ │ │ ├── write_results.py
│ │ │ │ └── writer.py
│ │ │ ├── config.py
│ │ │ ├── debug.py
│ │ │ ├── gateway.py
│ │ │ ├── geotools/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── attribute_descriptor.py
│ │ │ │ ├── feature_data_adapter.py
│ │ │ │ ├── simple_feature.py
│ │ │ │ ├── simple_feature_builder.py
│ │ │ │ ├── simple_feature_type.py
│ │ │ │ └── simple_feature_type_builder.py
│ │ │ ├── index/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── index.py
│ │ │ │ ├── index_builder.py
│ │ │ │ ├── spatial_index_builder.py
│ │ │ │ └── spatial_temporal_index_builder.py
│ │ │ ├── query/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── aggregation_query.py
│ │ │ │ ├── aggregation_query_builder.py
│ │ │ │ ├── base_query_builder.py
│ │ │ │ ├── query.py
│ │ │ │ ├── query_builder.py
│ │ │ │ ├── query_constraints.py
│ │ │ │ ├── query_constraints_factory.py
│ │ │ │ ├── query_hint_key.py
│ │ │ │ ├── statistics/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── statistic_query.py
│ │ │ │ │ └── statistic_query_builder.py
│ │ │ │ └── vector/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── filter_factory.py
│ │ │ │ ├── spatial_temporal_constraints_builder.py
│ │ │ │ ├── vector_aggregation_query_builder.py
│ │ │ │ ├── vector_query_builder.py
│ │ │ │ └── vector_query_constraints_factory.py
│ │ │ ├── statistics/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── bin_constraints.py
│ │ │ │ ├── binning_strategy/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── composite_binning_strategy.py
│ │ │ │ │ ├── data_type_binning_strategy.py
│ │ │ │ │ ├── field_value_binning_strategy.py
│ │ │ │ │ ├── numeric_range_field_value_binning_strategy.py
│ │ │ │ │ ├── partition_binning_strategy.py
│ │ │ │ │ ├── spatial_field_value_binning_strategy.py
│ │ │ │ │ └── time_range_field_value_binning_strategy.py
│ │ │ │ ├── binning_strategy_mappings.py
│ │ │ │ ├── data_type/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ └── count_statistic.py
│ │ │ │ ├── field/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── bloom_filter_statistic.py
│ │ │ │ │ ├── bounding_box_statistic.py
│ │ │ │ │ ├── count_min_sketch_statistic.py
│ │ │ │ │ ├── fixed_bin_numeric_histogram_statistic.py
│ │ │ │ │ ├── hyper_log_log_statistic.py
│ │ │ │ │ ├── numeric_histogram_statistic.py
│ │ │ │ │ ├── numeric_mean_statistic.py
│ │ │ │ │ ├── numeric_range_statistic.py
│ │ │ │ │ ├── numeric_stats_statistic.py
│ │ │ │ │ └── time_range_statistic.py
│ │ │ │ ├── index/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── differing_visibility_count_statistic.py
│ │ │ │ │ ├── duplicate_entry_count_statistic.py
│ │ │ │ │ ├── field_visibility_count_statistic.py
│ │ │ │ │ ├── index_meta_data_set_statistic.py
│ │ │ │ │ ├── max_duplicates_statistic.py
│ │ │ │ │ ├── partitions_statistic.py
│ │ │ │ │ └── row_range_histogram_statistic.py
│ │ │ │ ├── statistic.py
│ │ │ │ ├── statistic_binning_strategy.py
│ │ │ │ ├── statistic_mappings.py
│ │ │ │ ├── statistic_type.py
│ │ │ │ ├── statistic_value.py
│ │ │ │ └── transformers.py
│ │ │ ├── store/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── accumulo/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ └── accumulo_options.py
│ │ │ │ ├── bigtable/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ └── big_table_options.py
│ │ │ │ ├── cassandra/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ └── options.py
│ │ │ │ ├── data_store.py
│ │ │ │ ├── data_store_factory.py
│ │ │ │ ├── data_store_options.py
│ │ │ │ ├── dynamodb/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ └── options.py
│ │ │ │ ├── hbase/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ └── options.py
│ │ │ │ ├── kudu/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ └── options.py
│ │ │ │ ├── redis/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ └── options.py
│ │ │ │ └── rocksdb/
│ │ │ │ ├── __init__.py
│ │ │ │ └── options.py
│ │ │ └── test/
│ │ │ ├── __init__.py
│ │ │ ├── aggregation_test.py
│ │ │ ├── conftest.py
│ │ │ ├── data_store_test.py
│ │ │ ├── geotools_test.py
│ │ │ ├── query_test.py
│ │ │ ├── statistics_test.py
│ │ │ └── type_conversion_test.py
│ │ ├── pytest.ini
│ │ ├── requirements.txt
│ │ └── setup.py
│ └── resources/
│ └── META-INF/
│ └── services/
│ └── org.locationtech.geowave.core.cli.spi.CLIOperationProviderSpi
├── services/
│ ├── .gitignore
│ ├── api/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ └── org/
│ │ └── locationtech/
│ │ └── geowave/
│ │ └── service/
│ │ ├── AnalyticService.java
│ │ ├── BaseService.java
│ │ ├── ConfigService.java
│ │ ├── FileUploadService.java
│ │ ├── GeoServerService.java
│ │ ├── IndexService.java
│ │ ├── IngestService.java
│ │ ├── ServiceUtils.java
│ │ ├── StatService.java
│ │ ├── StoreService.java
│ │ └── TypeService.java
│ ├── client/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ └── org/
│ │ └── locationtech/
│ │ └── geowave/
│ │ └── service/
│ │ └── client/
│ │ ├── AnalyticServiceClient.java
│ │ ├── BaseServiceClient.java
│ │ ├── ConfigServiceClient.java
│ │ ├── FileUploadServiceClient.java
│ │ ├── GeoServerServiceClient.java
│ │ ├── IndexServiceClient.java
│ │ ├── IngestServiceClient.java
│ │ ├── StatServiceClient.java
│ │ ├── StoreServiceClient.java
│ │ └── TypeServiceClient.java
│ ├── grpc/
│ │ ├── protobuf/
│ │ │ ├── .gitignore
│ │ │ ├── pom.xml
│ │ │ └── src/
│ │ │ └── main/
│ │ │ └── protobuf/
│ │ │ └── GeoWaveVector.proto
│ │ ├── protobuf-generator/
│ │ │ ├── pom.xml
│ │ │ └── src/
│ │ │ └── main/
│ │ │ └── java/
│ │ │ └── org/
│ │ │ └── locationtech/
│ │ │ └── geowave/
│ │ │ └── service/
│ │ │ └── grpc/
│ │ │ ├── GeoWaveGrpcOperationParser.java
│ │ │ └── GeowaveOperationGrpcGenerator.java
│ │ └── server/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ ├── java/
│ │ │ └── org/
│ │ │ └── locationtech/
│ │ │ └── geowave/
│ │ │ └── service/
│ │ │ └── grpc/
│ │ │ ├── GeoWaveGrpcServer.java
│ │ │ ├── GeoWaveGrpcServiceOptions.java
│ │ │ ├── GeoWaveGrpcServiceSpi.java
│ │ │ ├── cli/
│ │ │ │ ├── GrpcOperationProvider.java
│ │ │ │ ├── GrpcSection.java
│ │ │ │ ├── StartGrpcServerCommand.java
│ │ │ │ ├── StartGrpcServerCommandOptions.java
│ │ │ │ └── StopGrpcServerCommand.java
│ │ │ └── services/
│ │ │ ├── GeoWaveGrpcAnalyticMapreduceService.java
│ │ │ ├── GeoWaveGrpcAnalyticSparkService.java
│ │ │ ├── GeoWaveGrpcCliGeoserverService.java
│ │ │ ├── GeoWaveGrpcCoreCliService.java
│ │ │ ├── GeoWaveGrpcCoreIngestService.java
│ │ │ ├── GeoWaveGrpcCoreMapreduceService.java
│ │ │ ├── GeoWaveGrpcCoreStoreService.java
│ │ │ ├── GeoWaveGrpcServiceCommandUtil.java
│ │ │ └── GeoWaveGrpcVectorService.java
│ │ └── resources/
│ │ └── META-INF/
│ │ └── services/
│ │ ├── org.locationtech.geowave.core.cli.spi.CLIOperationProviderSpi
│ │ └── org.locationtech.geowave.service.grpc.GeoWaveGrpcServiceSpi
│ ├── pom.xml
│ └── rest/
│ ├── README.md
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── org/
│ │ │ └── locationtech/
│ │ │ └── geowave/
│ │ │ └── service/
│ │ │ └── rest/
│ │ │ ├── ApiRestletApplication.java
│ │ │ ├── AsyncOperationStatusResource.java
│ │ │ ├── FileUploadResource.java
│ │ │ ├── GeoWaveOperationFinder.java
│ │ │ ├── GeoWaveOperationServiceWrapper.java
│ │ │ ├── MainResource.java
│ │ │ ├── RestRoute.java
│ │ │ ├── SwaggerApiParser.java
│ │ │ ├── SwaggerOperationParser.java
│ │ │ ├── SwaggerResource.java
│ │ │ ├── exceptions/
│ │ │ │ └── MissingArgumentException.java
│ │ │ ├── field/
│ │ │ │ ├── AbstractMainParam.java
│ │ │ │ ├── BasicRestField.java
│ │ │ │ ├── ListMainParam.java
│ │ │ │ ├── ParameterRestField.java
│ │ │ │ ├── ParameterRestFieldValue.java
│ │ │ │ ├── RequestParameters.java
│ │ │ │ ├── RequestParametersForm.java
│ │ │ │ ├── RequestParametersJson.java
│ │ │ │ ├── RestField.java
│ │ │ │ ├── RestFieldFactory.java
│ │ │ │ ├── RestFieldValue.java
│ │ │ │ └── StringMainParam.java
│ │ │ ├── operations/
│ │ │ │ ├── AddAccumuloStoreCommand.java
│ │ │ │ ├── AddBigTableStoreCommand.java
│ │ │ │ ├── AddCassandraStoreCommand.java
│ │ │ │ ├── AddDynamoDBStoreCommand.java
│ │ │ │ ├── AddFileSystemStoreCommand.java
│ │ │ │ ├── AddHBaseStoreCommand.java
│ │ │ │ ├── AddKuduStoreCommand.java
│ │ │ │ ├── AddRedisStoreCommand.java
│ │ │ │ ├── AddRocksDBStoreCommand.java
│ │ │ │ ├── AddSpatialIndexCommand.java
│ │ │ │ ├── AddSpatialTemporalIndexCommand.java
│ │ │ │ └── RestOperationStatusMessage.java
│ │ │ └── security/
│ │ │ ├── GeoWaveApiKeyFilter.java
│ │ │ ├── GeoWaveApiKeySetterFilter.java
│ │ │ ├── GeoWaveBaseApiKeyDB.java
│ │ │ ├── GeoWaveSQLiteApiKeyDB.java
│ │ │ └── oauth2/
│ │ │ ├── FacebookAccessTokenConverter.java
│ │ │ └── FacebookTokenServices.java
│ │ ├── resources/
│ │ │ └── facebook-oauth2-example.properties
│ │ └── webapp/
│ │ └── WEB-INF/
│ │ ├── facebook-oauth2-example-security-servlet.xml
│ │ ├── security-servlet.xml
│ │ └── web.xml
│ └── test/
│ └── java/
│ └── org/
│ └── locationtech/
│ └── geowave/
│ └── service/
│ └── rest/
│ ├── GeoWaveOperationServiceWrapperTest.java
│ └── field/
│ ├── RequestParametersFormTest.java
│ └── RequestParametersJsonTest.java
└── test/
├── .gitignore
├── README.md
├── pom.xml
└── src/
├── main/
│ ├── java/
│ │ └── org/
│ │ └── locationtech/
│ │ └── geowave/
│ │ └── test/
│ │ ├── AccumuloStoreTestEnvironment.java
│ │ ├── BigtableStoreTestEnvironment.java
│ │ ├── CassandraStoreTestEnvironment.java
│ │ ├── DynamoDBStoreTestEnvironment.java
│ │ ├── FileSystemStoreTestEnvironment.java
│ │ ├── GeoWaveITRunner.java
│ │ ├── GeoWaveITSuiteRunner.java
│ │ ├── HBaseStoreTestEnvironment.java
│ │ ├── KerberosTestEnvironment.java
│ │ ├── KuduStoreTestEnvironment.java
│ │ ├── RedisStoreTestEnvironment.java
│ │ ├── RocksDBStoreTestEnvironment.java
│ │ ├── StoreTestEnvironment.java
│ │ ├── TestDataStoreOptions.java
│ │ ├── TestEnvironment.java
│ │ ├── TestUtils.java
│ │ ├── ZookeeperTestEnvironment.java
│ │ ├── annotation/
│ │ │ ├── Environments.java
│ │ │ ├── GeoWaveTestStore.java
│ │ │ ├── GeoWaveTestStoreImpl.java
│ │ │ ├── NamespaceOverride.java
│ │ │ └── OptionsOverride.java
│ │ ├── kafka/
│ │ │ ├── KafkaTestEnvironment.java
│ │ │ └── KafkaTestUtils.java
│ │ ├── mapreduce/
│ │ │ ├── MapReduceTestEnvironment.java
│ │ │ └── MapReduceTestUtils.java
│ │ ├── services/
│ │ │ ├── ServicesTestEnvironment.java
│ │ │ └── grpc/
│ │ │ ├── GeoWaveGrpcTestClient.java
│ │ │ └── GeoWaveGrpcTestUtils.java
│ │ └── spark/
│ │ ├── SparkTestEnvironment.java
│ │ └── SparkUtils.java
│ └── resources/
│ └── META-INF/
│ └── services/
│ └── org.locationtech.geowave.test.kerberos.KerberosTestingUtilSpi
└── test/
├── java/
│ └── org/
│ └── locationtech/
│ └── geowave/
│ ├── mapreduce/
│ │ ├── MapReduceMemoryDataStore.java
│ │ ├── MapReduceMemoryOperations.java
│ │ └── splits/
│ │ └── SplitsProviderIT.java
│ └── test/
│ ├── GeoWaveITSuite.java
│ ├── IntegrationTestPersistableRegistry.java
│ ├── PersistableRegistryTest.java
│ ├── basic/
│ │ ├── AbstractGeoWaveBasicVectorIT.java
│ │ ├── AbstractGeoWaveIT.java
│ │ ├── GeoWaveAttributeIndexIT.java
│ │ ├── GeoWaveBasicCustomCRSRasterIT.java
│ │ ├── GeoWaveBasicRasterIT.java
│ │ ├── GeoWaveBasicSpatialTemporalVectorIT.java
│ │ ├── GeoWaveBasicTemporalVectorIT.java
│ │ ├── GeoWaveBasicURLIngestIT.java
│ │ ├── GeoWaveCustomCRSSpatialVectorIT.java
│ │ ├── GeoWaveCustomIndexIT.java
│ │ ├── GeoWaveEnumIndexIT.java
│ │ ├── GeoWaveGeometryPrecisionIT.java
│ │ ├── GeoWaveMultiProcessIngestIT.java
│ │ ├── GeoWaveSpatialBinningAggregationIT.java
│ │ ├── GeoWaveSpatialBinningStatisticsIT.java
│ │ ├── GeoWaveStatisticsIT.java
│ │ ├── GeoWaveTextIndexIT.java
│ │ ├── GeoWaveVectorSerializationIT.java
│ │ └── GeoWaveVisibilityIT.java
│ ├── config/
│ │ └── ConfigCacheIT.java
│ ├── docs/
│ │ └── GeoWaveDocumentationExamplesIT.java
│ ├── javaspark/
│ │ └── GeoWaveSparkIngestIT.java
│ ├── kafka/
│ │ └── BasicKafkaIT.java
│ ├── landsat/
│ │ ├── CustomCRSLandsatIT.java
│ │ └── LandsatIT.java
│ ├── mapreduce/
│ │ ├── BasicMapReduceIT.java
│ │ ├── CustomCRSKDERasterResizeIT.java
│ │ ├── DBScanIT.java
│ │ ├── GeoWaveKMeansIT.java
│ │ ├── GeoWaveNNIT.java
│ │ └── StoreCopyIT.java
│ ├── osm/
│ │ └── MapReduceIT.java
│ ├── query/
│ │ ├── AttributesSubsetQueryIT.java
│ │ ├── BasicDataTypeAdapterQueryIT.java
│ │ ├── ExpressionQueryIT.java
│ │ ├── GeoWaveQueryLanguageIT.java
│ │ ├── PolygonDataIdQueryIT.java
│ │ ├── QueryOptionsIT.java
│ │ └── SpatialTemporalQueryIT.java
│ ├── secondary/
│ │ ├── AbstractSecondaryIndexIT.java
│ │ ├── BasicSecondaryIndexIT.java
│ │ ├── CustomSecondaryIndexIT.java
│ │ ├── DataIndexOnlyIT.java
│ │ ├── MapReduceSecondaryIndexIT.java
│ │ ├── SimpleQuerySecondaryIndexIT.java
│ │ └── VisibilitySecondaryIndexIT.java
│ ├── services/
│ │ ├── AnalyticIT.java
│ │ ├── BaseServiceIT.java
│ │ ├── ConfigServicesIT.java
│ │ ├── FileUploadIT.java
│ │ ├── GeoServerIT.java
│ │ ├── GeoServerIngestIT.java
│ │ ├── IndexServicesIT.java
│ │ ├── IngestIT.java
│ │ ├── StatServicesIT.java
│ │ ├── StoreServicesIT.java
│ │ ├── TypeServicesIT.java
│ │ └── grpc/
│ │ └── GeoWaveGrpcIT.java
│ ├── spark/
│ │ ├── GeoWaveBasicSparkIT.java
│ │ ├── GeoWaveSparkKMeansIT.java
│ │ ├── GeoWaveSparkSQLIT.java
│ │ └── GeoWaveSparkSpatialJoinIT.java
│ └── stability/
│ └── GeoWaveStabilityIT.java
└── resources/
├── META-INF/
│ └── services/
│ └── org.locationtech.geowave.core.index.persist.PersistableRegistrySpi
├── cassandra.yaml
├── hadoop-metrics2.properties
├── hbase.properties
├── jul-test.properties
├── kerberos-config.xml
├── log4j-test.properties
├── logging.xml
├── org/
│ └── locationtech/
│ └── geowave/
│ └── test/
│ ├── geonames/
│ │ ├── barbados/
│ │ │ └── BB.txt
│ │ └── readme.txt
│ ├── multi-polygon-test.geojson
│ └── query/
│ └── stateCapitals.csv
├── sentinel/
│ └── sentinel2_band_example.jp2
├── sld/
│ ├── DecimatePoints-100px.sld
│ ├── DecimatePoints-10px.sld
│ ├── DecimatePoints-2px.sld
│ ├── DistributedRender.sld
│ ├── SubsamplePoints-100px.sld
│ ├── SubsamplePoints-10px.sld
│ └── SubsamplePoints-2px.sld
├── wfs-requests/
│ ├── geostuff_layer.xml
│ ├── insert.xml
│ ├── lock.xml
│ ├── query.xml
│ ├── update.xml
│ ├── wfs.xml
│ └── wms.xml
└── wms/
└── simplePoint.sld
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitattributes
================================================
# Handle line endings automatically for files detected as text
# and leave all files detected as binary untouched.
* text=auto
# Never modify line endings of our bash scripts
*.sh -crlf
#
# The above will handle all files NOT found below
#
# These files are text and should be normalized (Convert crlf => lf)
*.css text
*.html text
*.java text
*.js text
*.json text
*.properties text
*.txt text
*.xml text
# These files are binary and should be left untouched
# (binary is a macro for -text -diff)
*.class binary
*.gif binary
*.jar binary
*.jpg binary
*.png binary
*.war binary
================================================
FILE: .github/workflows/publish.yml
================================================
name: Publish
on:
push:
branches:
- master
env:
DEV_RESOURCES_VERSION: 1.7
MAVEN_OPTS: "-XX:CompressedClassSpaceSize=256m -XX:+UseSerialGC -Xmx2g -XX:MaxMetaspaceSize=512m"
jobs:
publish:
if: github.repository == 'locationtech/geowave'
runs-on: ubuntu-18.04
name: Publish Artifacts and Docs
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
CHANGELOG_GITHUB_TOKEN: ${{ secrets.CHANGELOG_TOKEN }}
GPG_OWNERTRUST: ${{ secrets.GPG_OWNERTRUST }}
GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
GPG_SECRET_KEYS: ${{ secrets.GPG_SECRET_KEYS }}
PYPI_CREDENTIALS: ${{ secrets.PYPI_CREDENTIALS }}
SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }}
SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }}
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Set up JDK 1.8
uses: joschi/setup-jdk@v2
with:
java-version: '8'
architecture: x64
- name: Cache resources
uses: actions/cache@v2
env:
cache-name: cache-geowave-resources
with:
key: ${{ runner.os }}-Publish
path: ~/.m2
- name: Install Local Artifacts
run: mvn install -B -DskipTests -Dspotbugs.skip
- name: Publish Artifacts
run: ./.utility/publish-artifacts.sh
- name: Generate Changelog
uses: heinrichreimer/github-changelog-generator-action@v2.2
with:
issues: true
issuesWoLabels: true
pullRequests: true
prWoLabels: true
author: true
unreleased: true
stripGeneratorNotice: true
verbose: true
compareLink: true
httpCache: true
filterByMilestone: true
- name: Convert Changelog to HTML
uses: docker://pandoc/core:2.9
with:
args: "-f markdown -t html -s -c stylesheets/changelog.css -o changelog.html CHANGELOG.md"
- name: Build HTML Docs
run: mvn -P html -pl docs install -DskipTests -Dspotbugs.skip
- name: Build Aggregate Javadocs
run: mvn javadoc:aggregate -B -DskipTests -Dspotbugs.skip
- name: Build Python Docs
run: ./.utility/build-python-docs.sh
- name: Publish Docs to GH-Pages
run: ./.utility/publish-docs.sh
================================================
FILE: .github/workflows/test.yml
================================================
name: Tests
on: [push, pull_request]
env:
DEV_RESOURCES_VERSION: 1.7
MAVEN_PROFILES: '""'
IT_ONLY: true
MAVEN_OPTS: "-XX:CompressedClassSpaceSize=256m -XX:+UseSerialGC -Xmx2g -XX:MaxMetaspaceSize=512m"
jobs:
unit-tests:
runs-on: ubuntu-20.04
name: Unit Tests on Latest ASF Versions
env:
IT_ONLY: false
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Set up JDK 1.8
uses: joschi/setup-jdk@v2
with:
java-version: '8'
architecture: x64
- name: Set up Maven
uses: stCarolas/setup-maven@v4
with:
maven-version: 3.6.3
- name: Cache maven resources
uses: actions/cache@v2
env:
cache-name: cache-maven-resources
with:
key: ${{ runner.os }}-mvn-${{ hashFiles('**/pom.xml') }}
restore-keys: |
${{ runner.os }}-mvn-
path: |
~/.m2/repository
- name: Cache other resources
uses: actions/cache@v2
env:
cache-name: cache-resources
with:
key: ${{ runner.os }}-other-${{ secrets.CACHE_ID }}
restore-keys: |
${{ runner.os }}-other-${{ secrets.CACHE_ID }}
path: |
~/.downloads
test/landsat8
test/sentinel2
test/target/temp/gdal
- name: Run
run: ./.utility/run-tests.sh
- name: Publish Unit Test Results
uses: scacap/action-surefire-report@v1
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository
with:
check_name: Unit Test Results
report_paths: "**/target/surefire-reports/*.xml"
github_token: ${{ secrets.GITHUB_TOKEN }}
python-tests:
runs-on: ubuntu-20.04
name: Python Tests on Latest ASF Versions
env:
IT_ONLY: false
PYTHON_BUILD: true
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Set up AdoptOpenJDK 1.8
uses: joschi/setup-jdk@v2
with:
java-version: '8'
architecture: x64
- name: Set up Maven
uses: stCarolas/setup-maven@v4
with:
maven-version: 3.6.3
- name: Cache maven resources
uses: actions/cache@v2
env:
cache-name: cache-maven-resources
with:
key: ${{ runner.os }}-mvn-${{ hashFiles('**/pom.xml') }}
restore-keys: |
${{ runner.os }}-mvn-
path: |
~/.m2/repository
- name: Cache other resources
uses: actions/cache@v2
env:
cache-name: cache-resources
with:
key: ${{ runner.os }}-other-${{ secrets.CACHE_ID }}
restore-keys: |
${{ runner.os }}-other-${{ secrets.CACHE_ID }}
path: |
~/.downloads
test/landsat8
test/sentinel2
test/target/temp/gdal
- name: Run
run: ./.utility/run-tests.sh
- name: Python Test Results
uses: scacap/action-surefire-report@v1
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository
with:
check_name: Python Test Results
report_paths: python/src/main/python/test-report.xml
github_token: ${{ secrets.GITHUB_TOKEN }}
integration-tests:
runs-on: ubuntu-20.04
name: ${{ matrix.profile }} Integration Tests
strategy:
fail-fast: false
matrix:
profile: [redis-it, rocksdb-it, accumulo-it-client, accumulo-it-server, hbase-it-client, hbase-it-server, dynamodb-it, bigtable-it, kudu-it, filesystem-it, 'filesystem-it,secondary-index-it', 'rocksdb-it,secondary-index-it', 'accumulo-it-server,compatibility','hbase-it-server,secondary-index-it']
include:
- profile: cassandra-it
retry_tests: true
## for now kerberos test environment isn't quite working, skip the kerberos tests until the issue is resolved
# include a new variable of TEST_KERBEROS = true
# - profile: accumulo-it-kerberos
# test_kerberos: true
# - profile: 'accumulo-it-kerberos,compatibility'
# test_kerberos: true
env:
IT_ONLY: true
MAVEN_PROFILES: ${{ matrix.profile }}
TEST_KERBEROS: ${{ matrix.test_kerberos }}
RETRY_TESTS: ${{ matrix.retry_tests }}
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Set up AdoptOpenJDK 1.8
uses: joschi/setup-jdk@v2
with:
java-version: '8'
architecture: x64
- name: Set up Maven
uses: stCarolas/setup-maven@v4
with:
maven-version: 3.6.3
- name: Cache maven resources
uses: actions/cache@v2
env:
cache-name: cache-maven-resources
with:
key: ${{ runner.os }}-mvn-${{ hashFiles('**/pom.xml') }}
restore-keys: |
${{ runner.os }}-mvn-
path: |
~/.m2/repository
- name: Cache other resources
uses: actions/cache@v2
env:
cache-name: cache-resources
with:
key: ${{ runner.os }}-other-${{ secrets.CACHE_ID }}
restore-keys: |
${{ runner.os }}-other-${{ secrets.CACHE_ID }}
path: |
~/.downloads
test/landsat8
test/sentinel2
test/target/temp/gdal
- name: Run
run: ./.utility/retry ./.utility/run-tests.sh
- name: Publish Integration Test ${{ matrix.profile }} Results
uses: scacap/action-surefire-report@v1
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository
with:
check_name: ${{ matrix.profile }} Results
report_paths: test/target/failsafe-reports/TEST-org.locationtech.geowave.test.GeoWaveITSuite.xml
github_token: ${{ secrets.GITHUB_TOKEN }}
================================================
FILE: .gitignore
================================================
*.project
*.classpath
*.prefs
*.settings
target
*.log
dependency-reduced-pom.xml
*.imls
*.iml
.idea/
.DS_Store
bin
docker-root
generated
.metadata
**/.factorypath
.vscode
================================================
FILE: .utility/.maven.xml
================================================
See the NOTICE file distributed with this work for additional information regarding copyright * ownership. All rights reserved. This program and the accompanying materials are made available * under the terms of the Apache License, Version 2.0 which accompanies this distribution and is * available at http://www.apache.org/licenses/LICENSE-2.0.txt */ package org.locationtech.geowave.analytic; import java.io.DataInput; import java.io.DataOutput; import java.io.IOException; import org.apache.hadoop.io.ObjectWritable; import org.apache.hadoop.io.Writable; import org.locationtech.geowave.core.index.ByteArray; import org.locationtech.geowave.mapreduce.HadoopWritableSerializationTool; public class AdapterWithObjectWritable implements Writable { private ObjectWritable objectWritable; private Short internalAdapterId = null; private ByteArray dataId; public void setObject(final ObjectWritable data) { objectWritable = data; } public ObjectWritable getObjectWritable() { return objectWritable; } protected void setObjectWritable(final ObjectWritable objectWritable) { this.objectWritable = objectWritable; } public Short getInternalAdapterId() { return internalAdapterId; } public void setInternalAdapterId(final short internalAdapterId) { this.internalAdapterId = internalAdapterId; } public ByteArray getDataId() { return dataId; } public void setDataId(final ByteArray dataId) { this.dataId = dataId; } @Override public void readFields(final DataInput input) throws IOException { internalAdapterId = input.readShort(); final int dataIdLength = input.readUnsignedShort(); if (dataIdLength > 0) { final byte[] dataIdBinary = new byte[dataIdLength]; input.readFully(dataIdBinary); dataId = new ByteArray(dataIdBinary); } if (objectWritable == null) { objectWritable = new ObjectWritable(); } objectWritable.readFields(input); } @Override public void write(final DataOutput output) throws IOException { output.writeShort(internalAdapterId); if (dataId != null) { final byte[] dataIdBinary = dataId.getBytes(); output.writeShort((short) dataIdBinary.length); output.write(dataIdBinary); } else { output.writeShort(0); } objectWritable.write(output); } public static void fillWritableWithAdapter( final HadoopWritableSerializationTool serializationTool, final AdapterWithObjectWritable writableToFill, final short internalAdapterId, final ByteArray dataId, final Object entry) { writableToFill.setInternalAdapterId(internalAdapterId); writableToFill.setDataId(dataId); writableToFill.setObject(serializationTool.toWritable(internalAdapterId, entry)); } public static Object fromWritableWithAdapter( final HadoopWritableSerializationTool serializationTool, final AdapterWithObjectWritable writableToExtract) { final short internalAdapterId = writableToExtract.getInternalAdapterId(); final Object innerObj = writableToExtract.objectWritable.get(); return (innerObj instanceof Writable) ? serializationTool.getHadoopWritableSerializerForAdapter(internalAdapterId).fromWritable( (Writable) innerObj) : innerObj; } @Override public String toString() { return "AdapterWithObjectWritable [ internalAdapterId=" + internalAdapterId + ", dataId=" + dataId.getString() + "]"; } } ================================================ FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/AnalyticFeature.java ================================================ /** * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation * *
See the NOTICE file distributed with this work for additional information regarding copyright
* ownership. All rights reserved. This program and the accompanying materials are made available
* under the terms of the Apache License, Version 2.0 which accompanies this distribution and is
* available at http://www.apache.org/licenses/LICENSE-2.0.txt
*/
package org.locationtech.geowave.analytic;
import java.util.List;
import org.geotools.feature.simple.SimpleFeatureBuilder;
import org.geotools.feature.simple.SimpleFeatureTypeBuilder;
import org.geotools.feature.type.BasicFeatureTypes;
import org.geotools.referencing.CRS;
import org.locationtech.geowave.adapter.vector.FeatureDataAdapter;
import org.locationtech.geowave.core.geotime.index.SpatialDimensionalityTypeProvider;
import org.locationtech.geowave.core.geotime.index.SpatialOptions;
import org.locationtech.jts.geom.Geometry;
import org.opengis.feature.simple.SimpleFeature;
import org.opengis.feature.simple.SimpleFeatureType;
import org.opengis.feature.type.AttributeDescriptor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* A set of utilities to describe and create a simple feature for use within the set of analytics.
*/
public class AnalyticFeature {
static final Logger LOGGER = LoggerFactory.getLogger(AnalyticFeature.class);
public static SimpleFeature createGeometryFeature(
final SimpleFeatureType featureType,
final String batchId,
final String dataId,
final String name,
final String groupID,
final double weight,
final Geometry geometry,
final String[] extraDimensionNames,
final double[] extraDimensions,
final int zoomLevel,
final int iteration,
final long count) {
if (extraDimensionNames.length != extraDimensions.length) {
LOGGER.error(
"The number of extraDimension names does not equal the number of extraDimensions");
throw new IllegalArgumentException(
"The number of extraDimension names does not equal the number of extraDimensions");
}
final List See the NOTICE file distributed with this work for additional information regarding copyright
* ownership. All rights reserved. This program and the accompanying materials are made available
* under the terms of the Apache License, Version 2.0 which accompanies this distribution and is
* available at http://www.apache.org/licenses/LICENSE-2.0.txt
*/
package org.locationtech.geowave.analytic;
import org.locationtech.jts.geom.Geometry;
/**
* Wrap an object used to by analytical processes. This class provides generic wrapper to specific
* functions associated with analytic processes such as managing centroids.
*
* @param See the NOTICE file distributed with this work for additional information regarding copyright
* ownership. All rights reserved. This program and the accompanying materials are made available
* under the terms of the Apache License, Version 2.0 which accompanies this distribution and is
* available at http://www.apache.org/licenses/LICENSE-2.0.txt
*/
package org.locationtech.geowave.analytic;
import java.io.IOException;
import org.apache.hadoop.mapreduce.JobContext;
import org.locationtech.jts.geom.Coordinate;
import org.slf4j.Logger;
/**
* Create an analytic item wrapper for the provided item.
*
* @param See the NOTICE file distributed with this work for additional information regarding copyright
* ownership. All rights reserved. This program and the accompanying materials are made available
* under the terms of the Apache License, Version 2.0 which accompanies this distribution and is
* available at http://www.apache.org/licenses/LICENSE-2.0.txt
*/
package org.locationtech.geowave.analytic;
import org.locationtech.geowave.analytic.clustering.DistortionGroupManagement.BatchIdFilter;
import org.locationtech.geowave.analytic.clustering.DistortionGroupManagement.BatchIdQuery;
import org.locationtech.geowave.analytic.clustering.DistortionGroupManagement.DistortionDataAdapter;
import org.locationtech.geowave.analytic.store.PersistableStore;
import org.locationtech.geowave.core.index.persist.InternalPersistableRegistry;
import org.locationtech.geowave.core.index.persist.PersistableRegistrySpi;
public class AnalyticPersistableRegistry implements
PersistableRegistrySpi,
InternalPersistableRegistry {
@Override
public PersistableIdAndConstructor[] getSupportedPersistables() {
return new PersistableIdAndConstructor[] {
new PersistableIdAndConstructor((short) 700, GeoObjectDimensionValues::new),
new PersistableIdAndConstructor((short) 701, BatchIdFilter::new),
new PersistableIdAndConstructor((short) 702, DistortionDataAdapter::new),
new PersistableIdAndConstructor((short) 703, PersistableStore::new),
new PersistableIdAndConstructor((short) 704, BatchIdQuery::new)};
}
}
================================================
FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/GeoObjectDimensionValues.java
================================================
/**
* Copyright (c) 2013-2022 Contributors to the Eclipse Foundation
*
* See the NOTICE file distributed with this work for additional information regarding copyright
* ownership. All rights reserved. This program and the accompanying materials are made available
* under the terms of the Apache License, Version 2.0 which accompanies this distribution and is
* available at http://www.apache.org/licenses/LICENSE-2.0.txt
*/
package org.locationtech.geowave.analytic;
import java.nio.ByteBuffer;
import org.locationtech.geowave.core.index.VarintUtils;
import org.locationtech.geowave.core.index.persist.Persistable;
/**
* Extracted numeric dimension values associated with an item or a sum of dimension values from
* multiple items.
*/
public class GeoObjectDimensionValues implements Persistable {
public double x = 0.0;
public double y = 0.0;
public double z = 0.0;
public double[] values = new double[0];
public double distance = 0.0;
public long count = 0;
public GeoObjectDimensionValues(final int extraValuesCount) {
values = new double[extraValuesCount];
}
public GeoObjectDimensionValues() {}
public GeoObjectDimensionValues(
final double x,
final double y,
final double z,
final double[] extraDimensions,
final double distance) {
super();
this.x = x;
this.y = y;
this.z = z;
values = extraDimensions;
this.distance = distance;
count = 1;
}
public void add(final GeoObjectDimensionValues association) {
x += association.x;
y += association.y;
z += association.z;
for (int i = 0; i < values.length; i++) {
values[i] += association.values[i];
}
distance += association.distance;
count += association.count;
}
public void set(
final double x,
final double y,
final double z,
final double[] extraDimensions,
final double distance) {
this.x = x;
this.y = y;
this.z = z;
values = extraDimensions;
this.distance = distance;
count = 1;
}
public long getCount() {
return count;
}
public void setCount(final long count) {
this.count = count;
}
public double getX() {
return x;
}
public void setX(final double x) {
this.x = x;
}
public double getY() {
return y;
}
public void setY(final double y) {
this.y = y;
}
public double getZ() {
return z;
}
public void setZ(final double z) {
this.z = z;
}
public double getDistance() {
return distance;
}
public void setDistance(final double distance) {
this.distance = distance;
}
@Override
public byte[] toBinary() {
final ByteBuffer b =
ByteBuffer.allocate(
((4 + values.length) * 8)
+ VarintUtils.unsignedIntByteLength(values.length)
+ VarintUtils.unsignedLongByteLength(count));
VarintUtils.writeUnsignedLong(count, b);
b.putDouble(x);
b.putDouble(y);
b.putDouble(z);
b.putDouble(distance);
VarintUtils.writeUnsignedInt(values.length, b);
for (final double value : values) {
b.putDouble(value);
}
return b.array();
}
@Override
public void fromBinary(final byte[] bytes) {
final ByteBuffer b = ByteBuffer.wrap(bytes);
count = VarintUtils.readUnsignedLong(b);
x = b.getDouble();
y = b.getDouble();
z = b.getDouble();
distance = b.getDouble();
int i = VarintUtils.readUnsignedInt(b);
values = new double[i];
for (; i > 0; i--) {
values[i - 1] = b.getDouble();
}
}
}
================================================
FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/GeometryCalculations.java
================================================
/**
* Copyright (c) 2013-2022 Contributors to the Eclipse Foundation
*
* See the NOTICE file distributed with this work for additional information regarding copyright
* ownership. All rights reserved. This program and the accompanying materials are made available
* under the terms of the Apache License, Version 2.0 which accompanies this distribution and is
* available at http://www.apache.org/licenses/LICENSE-2.0.txt
*/
package org.locationtech.geowave.analytic;
import java.util.LinkedList;
import java.util.List;
import javax.measure.Unit;
import javax.measure.quantity.Length;
import org.geotools.geometry.jts.ReferencedEnvelope;
import org.geotools.referencing.GeodeticCalculator;
import org.locationtech.jts.geom.Coordinate;
import org.locationtech.jts.geom.Geometry;
import org.locationtech.jts.geom.GeometryFactory;
import org.locationtech.jts.geom.PrecisionModel;
import org.opengis.geometry.DirectPosition;
import org.opengis.referencing.crs.CoordinateReferenceSystem;
import org.opengis.referencing.operation.TransformException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import tech.units.indriya.unit.Units;
public class GeometryCalculations {
private static final Logger LOGGER = LoggerFactory.getLogger(GeometryCalculations.class);
final GeometryFactory factory;
final CoordinateReferenceSystem crs;
final double xMin, yMin, xMax, yMax;
public GeometryCalculations(final CoordinateReferenceSystem crs) {
factory = new GeometryFactory(new PrecisionModel(), 4326);
this.crs = crs;
xMin = crs.getCoordinateSystem().getAxis(0).getMinimumValue();
xMax = crs.getCoordinateSystem().getAxis(0).getMaximumValue();
yMin = crs.getCoordinateSystem().getAxis(1).getMinimumValue();
yMax = crs.getCoordinateSystem().getAxis(1).getMaximumValue();
}
/**
* Build geometries with the provided coordinate at the center. The width of the geometry is twice
* the distance provided. More than one geometry is return when passing the date line.
*
* @param distances [x,y] = [longitude, latitude]
* @param unit
* @param coordinate
* @return the geometries that were built
*/
public List See the NOTICE file distributed with this work for additional information regarding copyright
* ownership. All rights reserved. This program and the accompanying materials are made available
* under the terms of the Apache License, Version 2.0 which accompanies this distribution and is
* available at http://www.apache.org/licenses/LICENSE-2.0.txt
*/
package org.locationtech.geowave.analytic;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Random;
import java.util.UUID;
import org.apache.commons.lang3.tuple.Pair;
import org.apache.commons.math3.geometry.euclidean.twod.Vector2D;
import org.geotools.feature.simple.SimpleFeatureBuilder;
import org.geotools.feature.simple.SimpleFeatureTypeBuilder;
/** Generate clusters of geometries. */
import org.geotools.referencing.CRS;
import org.locationtech.geowave.adapter.vector.FeatureDataAdapter;
import org.locationtech.geowave.analytic.distance.CoordinateCircleDistanceFn;
import org.locationtech.geowave.analytic.distance.DistanceFn;
import org.locationtech.geowave.core.geotime.index.SpatialDimensionalityTypeProvider;
import org.locationtech.geowave.core.geotime.index.SpatialOptions;
import org.locationtech.geowave.core.store.api.DataStore;
import org.locationtech.geowave.core.store.api.Index;
import org.locationtech.geowave.core.store.api.Writer;
import org.locationtech.jts.geom.Coordinate;
import org.locationtech.jts.geom.Geometry;
import org.locationtech.jts.geom.GeometryFactory;
import org.locationtech.jts.geom.LineString;
import org.locationtech.jts.geom.Point;
import org.opengis.feature.simple.SimpleFeature;
import org.opengis.feature.type.AttributeDescriptor;
import org.opengis.feature.type.GeometryType;
import org.opengis.referencing.FactoryException;
import org.opengis.referencing.cs.CoordinateSystem;
import org.opengis.referencing.cs.CoordinateSystemAxis;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/** Generate clusters of geometries. */
public class GeometryDataSetGenerator {
static final Logger LOGGER = LoggerFactory.getLogger(GeometryDataSetGenerator.class);
private final Random rand = new Random();
private final GeometryFactory geoFactory = new GeometryFactory();
private final DistanceFn See the NOTICE file distributed with this work for additional information regarding copyright
* ownership. All rights reserved. This program and the accompanying materials are made available
* under the terms of the Apache License, Version 2.0 which accompanies this distribution and is
* available at http://www.apache.org/licenses/LICENSE-2.0.txt
*/
package org.locationtech.geowave.analytic;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
import org.apache.commons.lang3.tuple.Pair;
import org.apache.commons.math.util.MathUtils;
import org.apache.commons.math3.geometry.Vector;
import org.apache.commons.math3.geometry.euclidean.twod.Euclidean2D;
import org.apache.commons.math3.geometry.euclidean.twod.Vector2D;
import org.locationtech.geowave.analytic.clustering.NeighborData;
import org.locationtech.geowave.analytic.distance.DistanceFn;
import org.locationtech.geowave.core.index.FloatCompareUtils;
import org.locationtech.jts.algorithm.CGAlgorithms;
import org.locationtech.jts.algorithm.ConvexHull;
import org.locationtech.jts.geom.Coordinate;
import org.locationtech.jts.geom.Geometry;
import org.locationtech.jts.geom.GeometryFactory;
import org.locationtech.jts.geom.Polygon;
import org.locationtech.jts.operation.union.UnaryUnionOp;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/** Set of algorithms to mere hulls and increase the gradient of convexity over hulls. */
public class GeometryHullTool {
protected static final Logger LOGGER = LoggerFactory.getLogger(GeometryHullTool.class);
DistanceFn Per the paper, N = concaveThreshold
*/
public Geometry concaveHullParkOhMethod(
final Geometry geometry,
final Collection Per the paper, N = concaveThreshold.
*
* This algorithm evaluates remarkably faster than Park and Oh, but the quality of the result
* is marginally less. If it is acceptable to have some small number of points fall outside of the
* hull and speed is critical, use this method. The measure of error is difficult to calculate
* since it is not directly calculated based on the number of inner points. Rather, the measure is
* based on some number of points in proximity the optimal concave hull.
*/
public Geometry concaveHull(
final Geometry geometry,
final Collection Does not currently work if the shapes intersect
*/
public Geometry connect(final Geometry shape1, final Geometry shape2) {
try {
if ((shape1 instanceof Polygon)
&& (shape2 instanceof Polygon)
&& !shape1.intersects(shape2)) {
return connect(shape1, shape2, getClosestPoints(shape1, shape2, distanceFnForCoordinate));
}
return UnaryUnionOp.union(Arrays.asList(shape1, shape2));
} catch (final Exception ex) {
LOGGER.warn("Exception caught in connect method", ex);
}
return createHullFromGeometry(shape1, Arrays.asList(shape2.getCoordinates()), false);
}
protected Geometry connect(
final Geometry shape1,
final Geometry shape2,
final Pair See the NOTICE file distributed with this work for additional information regarding copyright
* ownership. All rights reserved. This program and the accompanying materials are made available
* under the terms of the Apache License, Version 2.0 which accompanies this distribution and is
* available at http://www.apache.org/licenses/LICENSE-2.0.txt
*/
package org.locationtech.geowave.analytic;
import java.util.Collection;
import org.locationtech.geowave.analytic.param.ParameterEnum;
public interface IndependentJobRunner {
public int run(PropertyManagement properties) throws Exception;
public Collection See the NOTICE file distributed with this work for additional information regarding copyright
* ownership. All rights reserved. This program and the accompanying materials are made available
* under the terms of the Apache License, Version 2.0 which accompanies this distribution and is
* available at http://www.apache.org/licenses/LICENSE-2.0.txt
*/
package org.locationtech.geowave.analytic;
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.mapreduce.JobContext;
import org.locationtech.jts.geom.Geometry;
/**
* Project a n-dimensional item into a two-dimensional polygon for convex hull construction.
*
* @param See the NOTICE file distributed with this work for additional information regarding copyright
* ownership. All rights reserved. This program and the accompanying materials are made available
* under the terms of the Apache License, Version 2.0 which accompanies this distribution and is
* available at http://www.apache.org/licenses/LICENSE-2.0.txt
*/
package org.locationtech.geowave.analytic;
import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.ParseException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.locationtech.geowave.analytic.param.ParameterEnum;
import org.locationtech.geowave.core.index.ByteArrayUtils;
import org.locationtech.geowave.core.index.numeric.NumericRange;
import org.locationtech.geowave.core.index.persist.Persistable;
import org.locationtech.geowave.core.index.persist.PersistenceUtils;
import org.locationtech.geowave.core.store.api.Query;
import org.locationtech.geowave.core.store.api.QueryBuilder;
import org.locationtech.geowave.core.store.query.constraints.QueryConstraints;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Manage properties used by the Map Reduce environment that are provided through the API (e.g.
* command). Allow these arguments to be placed an 'args' list for 'main' executables (e.g.
* ToolRunner).
*
* The class supports some basic conversions.
*
* Non-serializable objects: {@link Persistable} instances are converted to and from byte
* formats. {@link QueryConstraints} is a special case, supporting WKT String. {@link Path} are
* converted to a from string representation of the their URI.
*
* Serializable objects: {@link NumericRange} supports min,max in string representation (e.g.
* "1.0,2.0")
*
* NOTE: ConfigutationWrapper implementation is scopeless.
*
* EXPECTED FUTURE WORK: I am bit unsatisfied with the duality of the parameters base class. In
* one case, in is treated a description for a class value and, in the other case, it is treated as
* a description for the type of a property value. The former is really a descriptor of a Class of
* type class. Generics do not help due to erasure. The impact of this inconsistency is the
* inability to validate on 'store'. Instead, validation occurs on 'gets'. The ultimate goal is to
* uniformly provide feedback to parameters from command line arguments and property files on
* submission to the manager rather than on extraction from the manager.
*/
public class PropertyManagement implements Serializable {
/** */
private static final long serialVersionUID = -4186468044516636362L;
static final Logger LOGGER = LoggerFactory.getLogger(PropertyManagement.class);
private final Map This is done if the preferred internal representation does not match that of a string. For
* example, a query is maintained as bytes even though it can be provided as a query
*
* @param converter
*/
public synchronized void addConverter(final PropertyConverter> converter) {
converters.add(converter);
}
private static byte[] toBytes(final Persistable persistableObject)
throws UnsupportedEncodingException {
return PersistenceUtils.toBinary(persistableObject);
}
private static Persistable fromBytes(final byte[] data) throws InstantiationException,
IllegalAccessException, ClassNotFoundException, UnsupportedEncodingException {
return PersistenceUtils.fromBinary(data);
}
private Object validate(final ParameterEnum propertyName, final Object value) {
if (value != null) {
if (value instanceof Class) {
if (((Class>) value).isAssignableFrom(propertyName.getHelper().getBaseClass())) {
throw new IllegalArgumentException(
String.format(
"%s does not accept class %s",
propertyName.self().toString(),
((Class>) value).getName()));
}
} else if (!propertyName.getHelper().getBaseClass().isInstance(value)) {
throw new IllegalArgumentException(
String.format(
"%s does not accept type %s",
propertyName.self().toString(),
value.getClass().getName()));
}
}
return value;
}
@SuppressWarnings("unchecked")
private Serializable convertIfNecessary(final ParameterEnum property, final Object value)
throws Exception {
if (!(value instanceof Serializable)) {
for (@SuppressWarnings("rawtypes")
final PropertyConverter converter : converters) {
if (converter.baseClass().isAssignableFrom(property.getHelper().getBaseClass())) {
return converter.convert(value);
}
}
}
if (!property.getHelper().getBaseClass().isInstance(value) && (value instanceof String)) {
for (@SuppressWarnings("rawtypes")
final PropertyConverter converter : converters) {
if (converter.baseClass().isAssignableFrom(property.getHelper().getBaseClass())) {
return converter.convert(converter.convert(value.toString()));
}
}
}
return (Serializable) value;
}
public interface PropertyConverter See the NOTICE file distributed with this work for additional information regarding copyright
* ownership. All rights reserved. This program and the accompanying materials are made available
* under the terms of the Apache License, Version 2.0 which accompanies this distribution and is
* available at http://www.apache.org/licenses/LICENSE-2.0.txt
*/
package org.locationtech.geowave.analytic;
import org.apache.hadoop.conf.Configuration;
import org.locationtech.geowave.core.index.ByteArrayUtils;
import org.locationtech.geowave.mapreduce.GeoWaveConfiguratorBase;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class ScopedJobConfiguration {
protected static final Logger LOGGER = LoggerFactory.getLogger(ScopedJobConfiguration.class);
private final Configuration jobConfiguration;
private final Class> scope;
private Logger logger = LOGGER;
public ScopedJobConfiguration(final Configuration jobConfiguration, final Class> scope) {
super();
this.jobConfiguration = jobConfiguration;
this.scope = scope;
}
public ScopedJobConfiguration(
final Configuration jobConfiguration,
final Class> scope,
final Logger logger) {
super();
this.jobConfiguration = jobConfiguration;
this.scope = scope;
this.logger = logger;
}
public int getInt(final Enum> property, final int defaultValue) {
final String propName = GeoWaveConfiguratorBase.enumToConfKey(scope, property);
if (jobConfiguration.getRaw(propName) == null) {
logger.warn("Using default for property " + propName);
}
final int v = jobConfiguration.getInt(propName, defaultValue);
return v;
}
public String getString(final Enum> property, final String defaultValue) {
final String propName = GeoWaveConfiguratorBase.enumToConfKey(scope, property);
if (jobConfiguration.getRaw(propName) == null) {
logger.warn("Using default for property " + propName);
}
return jobConfiguration.get(propName, defaultValue);
}
public See the NOTICE file distributed with this work for additional information regarding copyright
* ownership. All rights reserved. This program and the accompanying materials are made available
* under the terms of the Apache License, Version 2.0 which accompanies this distribution and is
* available at http://www.apache.org/licenses/LICENSE-2.0.txt
*/
package org.locationtech.geowave.analytic;
import java.io.IOException;
import java.io.Serializable;
import org.locationtech.geowave.core.store.adapter.TransientAdapterStore;
import org.locationtech.geowave.core.store.api.DataTypeAdapter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Support for adapter stores that are Serializable. Rather than for an adapter store to serialize
* its state, wrap an adapter store. If the adapter store is not serializable, then log a warning
* message upon serialization.
*/
public class SerializableAdapterStore implements TransientAdapterStore, Serializable {
/** */
private static final long serialVersionUID = 1L;
static final Logger LOGGER = LoggerFactory.getLogger(SerializableAdapterStore.class);
transient TransientAdapterStore adapterStore;
public SerializableAdapterStore() {}
public SerializableAdapterStore(final TransientAdapterStore adapterStore) {
super();
this.adapterStore = adapterStore;
}
private TransientAdapterStore getAdapterStore() {
if (adapterStore == null) {
throw new IllegalStateException("AdapterStore has not been initialized");
}
return adapterStore;
}
@Override
public void addAdapter(final DataTypeAdapter> adapter) {
getAdapterStore().addAdapter(adapter);
}
@Override
public DataTypeAdapter> getAdapter(final String typeName) {
return getAdapterStore().getAdapter(typeName);
}
@Override
public boolean adapterExists(final String typeName) {
return getAdapterStore().adapterExists(typeName);
}
@Override
public DataTypeAdapter>[] getAdapters() {
return getAdapterStore().getAdapters();
}
@Override
public void removeAll() {
getAdapterStore().removeAll();
}
private void writeObject(final java.io.ObjectOutputStream out) throws IOException {
if (adapterStore instanceof Serializable) {
out.writeBoolean(true);
out.writeObject(adapterStore);
} else {
out.writeBoolean(false);
}
}
private void readObject(final java.io.ObjectInputStream in)
throws IOException, ClassNotFoundException {
if (in.readBoolean()) {
adapterStore = (TransientAdapterStore) in.readObject();
} else {
LOGGER.warn("Unable to initialized AdapterStore; the store is not serializable");
}
}
@Override
public void removeAdapter(final String typeName) {
getAdapterStore().removeAdapter(typeName);
}
}
================================================
FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/ShapefileTool.java
================================================
/**
* Copyright (c) 2013-2022 Contributors to the Eclipse Foundation
*
* See the NOTICE file distributed with this work for additional information regarding copyright
* ownership. All rights reserved. This program and the accompanying materials are made available
* under the terms of the Apache License, Version 2.0 which accompanies this distribution and is
* available at http://www.apache.org/licenses/LICENSE-2.0.txt
*/
package org.locationtech.geowave.analytic;
import java.io.File;
import java.io.IOException;
import java.io.Serializable;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.io.FileUtils;
import org.geotools.data.DefaultTransaction;
import org.geotools.data.FeatureWriter;
import org.geotools.data.Transaction;
import org.geotools.data.shapefile.ShapefileDataStore;
import org.geotools.data.shapefile.ShapefileDataStoreFactory;
import org.geotools.feature.simple.SimpleFeatureBuilder;
import org.geotools.feature.simple.SimpleFeatureTypeBuilder;
import org.geotools.referencing.crs.DefaultGeographicCRS;
import org.locationtech.jts.geom.Geometry;
import org.locationtech.jts.geom.Point;
import org.locationtech.jts.geom.Polygon;
import org.opengis.feature.simple.SimpleFeature;
import org.opengis.feature.simple.SimpleFeatureType;
import org.opengis.feature.type.AttributeDescriptor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class ShapefileTool {
private static final Logger LOGGER = LoggerFactory.getLogger(ShapefileTool.class);
private static SimpleFeatureType createFeatureType(final String typeName, final boolean isPoint) {
final SimpleFeatureTypeBuilder builder = new SimpleFeatureTypeBuilder();
builder.setName(typeName);
builder.setCRS(DefaultGeographicCRS.WGS84); // <- Coordinate reference
// system
// add attributes in order
builder.add("the_geom", isPoint ? Point.class : Polygon.class);
builder.length(15).add("Name", String.class); // <- 15 chars width for name field
// build the type
return builder.buildFeatureType();
}
@edu.umd.cs.findbugs.annotations.SuppressFBWarnings(
value = "RV_RETURN_VALUE_IGNORED_BAD_PRACTICE",
justification = "Directories may alreadybe there")
public static void writeShape(final String typeName, final File dir, final Geometry[] shapes)
throws IOException {
FileUtils.deleteDirectory(dir);
dir.mkdirs();
final SimpleFeatureBuilder featureBuilder =
new SimpleFeatureBuilder(createFeatureType(typeName, shapes[0] instanceof Point));
final ShapefileDataStoreFactory dataStoreFactory = new ShapefileDataStoreFactory();
final Map See the NOTICE file distributed with this work for additional information regarding copyright
* ownership. All rights reserved. This program and the accompanying materials are made available
* under the terms of the Apache License, Version 2.0 which accompanies this distribution and is
* available at http://www.apache.org/licenses/LICENSE-2.0.txt
*/
package org.locationtech.geowave.analytic;
import java.io.IOException;
import java.util.UUID;
import org.apache.hadoop.mapreduce.JobContext;
import org.locationtech.geowave.analytic.AnalyticFeature.ClusterFeatureAttribute;
import org.locationtech.jts.geom.Coordinate;
import org.locationtech.jts.geom.Geometry;
import org.opengis.feature.simple.SimpleFeature;
import org.slf4j.Logger;
public class SimpleFeatureItemWrapperFactory implements AnalyticItemWrapperFactory See the NOTICE file distributed with this work for additional information regarding copyright
* ownership. All rights reserved. This program and the accompanying materials are made available
* under the terms of the Apache License, Version 2.0 which accompanies this distribution and is
* available at http://www.apache.org/licenses/LICENSE-2.0.txt
*/
package org.locationtech.geowave.analytic;
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.mapreduce.JobContext;
import org.locationtech.jts.geom.Geometry;
import org.opengis.feature.simple.SimpleFeature;
/** Assumes two-dimensional simple feature without time dimensions. */
public class SimpleFeatureProjection implements Projection See the NOTICE file distributed with this work for additional information regarding copyright
* ownership. All rights reserved. This program and the accompanying materials are made available
* under the terms of the Apache License, Version 2.0 which accompanies this distribution and is
* available at http://www.apache.org/licenses/LICENSE-2.0.txt
*/
package org.locationtech.geowave.analytic.clustering;
import java.io.IOException;
import org.apache.hadoop.mapreduce.JobContext;
import org.locationtech.geowave.analytic.AnalyticItemWrapper;
import org.locationtech.geowave.analytic.AnalyticItemWrapperFactory;
import org.locationtech.geowave.analytic.kmeans.AssociationNotification;
import org.locationtech.jts.geom.Coordinate;
import org.locationtech.jts.geom.Geometry;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Determine the group ID for an item dynamically.
*
* @param See the NOTICE file distributed with this work for additional information regarding copyright
* ownership. All rights reserved. This program and the accompanying materials are made available
* under the terms of the Apache License, Version 2.0 which accompanies this distribution and is
* available at http://www.apache.org/licenses/LICENSE-2.0.txt
*/
package org.locationtech.geowave.analytic.clustering;
import java.io.IOException;
import java.util.List;
import org.locationtech.geowave.analytic.AnalyticItemWrapper;
import org.locationtech.geowave.analytic.clustering.exception.MatchingCentroidNotFoundException;
import org.locationtech.jts.geom.Coordinate;
/**
* Manage centroids created per batch and per group of analytic processes. There can be multiple
* groups per batch. A group is loosely interpreted as a set of item geometries under analysis. The
* sets can be defined by shared characteristics.
*
* @param See the NOTICE file distributed with this work for additional information regarding copyright
* ownership. All rights reserved. This program and the accompanying materials are made available
* under the terms of the Apache License, Version 2.0 which accompanies this distribution and is
* available at http://www.apache.org/licenses/LICENSE-2.0.txt
*/
package org.locationtech.geowave.analytic.clustering;
import java.io.IOException;
import java.io.Serializable;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.collections.map.LRUMap;
import org.apache.commons.lang3.tuple.Pair;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.JobContext;
import org.geotools.data.DefaultTransaction;
import org.geotools.data.FeatureWriter;
import org.geotools.data.Transaction;
import org.geotools.data.shapefile.ShapefileDataStore;
import org.geotools.data.shapefile.ShapefileDataStoreFactory;
import org.geotools.feature.simple.SimpleFeatureBuilder;
import org.geotools.feature.simple.SimpleFeatureTypeBuilder;
import org.geotools.feature.type.BasicFeatureTypes;
import org.geotools.filter.FilterFactoryImpl;
import org.locationtech.geowave.adapter.vector.FeatureDataAdapter;
import org.locationtech.geowave.analytic.AnalyticFeature;
import org.locationtech.geowave.analytic.AnalyticFeature.ClusterFeatureAttribute;
import org.locationtech.geowave.analytic.AnalyticItemWrapper;
import org.locationtech.geowave.analytic.AnalyticItemWrapperFactory;
import org.locationtech.geowave.analytic.PropertyManagement;
import org.locationtech.geowave.analytic.ScopedJobConfiguration;
import org.locationtech.geowave.analytic.clustering.exception.MatchingCentroidNotFoundException;
import org.locationtech.geowave.analytic.param.CentroidParameters;
import org.locationtech.geowave.analytic.param.GlobalParameters;
import org.locationtech.geowave.analytic.param.ParameterEnum;
import org.locationtech.geowave.analytic.param.StoreParameters;
import org.locationtech.geowave.analytic.store.PersistableStore;
import org.locationtech.geowave.core.geotime.index.SpatialDimensionalityTypeProvider;
import org.locationtech.geowave.core.geotime.index.SpatialOptions;
import org.locationtech.geowave.core.geotime.store.GeotoolsFeatureDataAdapter;
import org.locationtech.geowave.core.geotime.store.query.api.VectorQueryBuilder;
import org.locationtech.geowave.core.index.StringUtils;
import org.locationtech.geowave.core.store.CloseableIterator;
import org.locationtech.geowave.core.store.adapter.PersistentAdapterStore;
import org.locationtech.geowave.core.store.api.DataStore;
import org.locationtech.geowave.core.store.api.Index;
import org.locationtech.geowave.core.store.api.QueryBuilder;
import org.locationtech.geowave.core.store.api.Writer;
import org.locationtech.geowave.core.store.index.IndexStore;
import org.locationtech.geowave.mapreduce.GeoWaveConfiguratorBase;
import org.locationtech.jts.geom.Coordinate;
import org.locationtech.jts.geom.Geometry;
import org.locationtech.jts.geom.Point;
import org.opengis.feature.simple.SimpleFeature;
import org.opengis.feature.simple.SimpleFeatureType;
import org.opengis.feature.type.AttributeDescriptor;
import org.opengis.feature.type.GeometryType;
import org.opengis.filter.Filter;
import org.opengis.filter.expression.Expression;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Manages the population of centroids by group id and batch id.
*
* @param See the NOTICE file distributed with this work for additional information regarding copyright
* ownership. All rights reserved. This program and the accompanying materials are made available
* under the terms of the Apache License, Version 2.0 which accompanies this distribution and is
* available at http://www.apache.org/licenses/LICENSE-2.0.txt
*/
package org.locationtech.geowave.analytic.clustering;
import org.locationtech.geowave.analytic.AnalyticItemWrapper;
public class CentroidPairing See the NOTICE file distributed with this work for additional information regarding copyright
* ownership. All rights reserved. This program and the accompanying materials are made available
* under the terms of the Apache License, Version 2.0 which accompanies this distribution and is
* available at http://www.apache.org/licenses/LICENSE-2.0.txt
*/
package org.locationtech.geowave.analytic.clustering;
import java.io.IOException;
import java.util.LinkedList;
import java.util.List;
import org.geotools.feature.type.BasicFeatureTypes;
import org.locationtech.geowave.adapter.vector.FeatureDataAdapter;
import org.locationtech.geowave.analytic.AnalyticFeature;
import org.locationtech.geowave.analytic.PropertyManagement;
import org.locationtech.geowave.analytic.extract.DimensionExtractor;
import org.locationtech.geowave.analytic.param.CentroidParameters;
import org.locationtech.geowave.analytic.param.CommonParameters;
import org.locationtech.geowave.analytic.param.StoreParameters;
import org.locationtech.geowave.analytic.store.PersistableStore;
import org.locationtech.geowave.core.geotime.index.SpatialDimensionalityTypeProvider;
import org.locationtech.geowave.core.geotime.index.SpatialOptions;
import org.locationtech.geowave.core.geotime.store.query.ExplicitSpatialQuery;
import org.locationtech.geowave.core.index.ByteArray;
import org.locationtech.geowave.core.index.QueryRanges;
import org.locationtech.geowave.core.store.adapter.AdapterStore;
import org.locationtech.geowave.core.store.api.DataTypeAdapter;
import org.locationtech.geowave.core.store.api.Index;
import org.locationtech.geowave.core.store.index.IndexStore;
import org.locationtech.geowave.core.store.util.DataStoreUtils;
import org.locationtech.jts.geom.Polygon;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class ClusteringUtils {
public static final String CLUSTERING_CRS = "EPSG:4326";
static final Logger LOGGER = LoggerFactory.getLogger(ClusteringUtils.class);
private static DataTypeAdapter> createAdapter(
final String sampleDataTypeId,
final String sampleDataNamespaceURI,
final AdapterStore adapterStore,
final String[] dimensionNames) {
final FeatureDataAdapter adapter =
AnalyticFeature.createGeometryFeatureAdapter(
sampleDataTypeId,
dimensionNames,
sampleDataNamespaceURI,
CLUSTERING_CRS);
final ByteArray dbId = new ByteArray(sampleDataTypeId);
if (!adapterStore.adapterExists(dbId)) {
adapterStore.addAdapter(adapter);
return adapter;
} else {
return adapterStore.getAdapter(dbId);
}
}
public static DataTypeAdapter[] getAdapters(final PropertyManagement propertyManagement)
throws IOException {
final PersistableStore store =
(PersistableStore) StoreParameters.StoreParam.INPUT_STORE.getHelper().getValue(
propertyManagement);
final AdapterStore adapterStore = store.getDataStoreOptions().createAdapterStore();
return adapterStore.getAdapters();
}
public static Index[] getIndices(final PropertyManagement propertyManagement) {
final PersistableStore store =
(PersistableStore) StoreParameters.StoreParam.INPUT_STORE.getHelper().getValue(
propertyManagement);
final IndexStore indexStore = store.getDataStoreOptions().createIndexStore();
try (final org.locationtech.geowave.core.store.CloseableIterator See the NOTICE file distributed with this work for additional information regarding copyright
* ownership. All rights reserved. This program and the accompanying materials are made available
* under the terms of the Apache License, Version 2.0 which accompanies this distribution and is
* available at http://www.apache.org/licenses/LICENSE-2.0.txt
*/
package org.locationtech.geowave.analytic.clustering;
import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang3.tuple.Pair;
import org.apache.hadoop.io.Writable;
import org.locationtech.geowave.analytic.AnalyticItemWrapperFactory;
import org.locationtech.geowave.core.index.StringUtils;
import org.locationtech.geowave.core.index.numeric.MultiDimensionalNumericData;
import org.locationtech.geowave.core.store.CloseableIterator;
import org.locationtech.geowave.core.store.adapter.FieldDescriptor;
import org.locationtech.geowave.core.store.adapter.FieldDescriptorBuilder;
import org.locationtech.geowave.core.store.adapter.InternalAdapterStore;
import org.locationtech.geowave.core.store.adapter.PersistentAdapterStore;
import org.locationtech.geowave.core.store.api.DataStore;
import org.locationtech.geowave.core.store.api.DataTypeAdapter;
import org.locationtech.geowave.core.store.api.RowBuilder;
import org.locationtech.geowave.core.store.api.Index;
import org.locationtech.geowave.core.store.api.QueryBuilder;
import org.locationtech.geowave.core.store.cli.store.DataStorePluginOptions;
import org.locationtech.geowave.core.store.data.IndexedPersistenceEncoding;
import org.locationtech.geowave.core.store.data.field.FieldReader;
import org.locationtech.geowave.core.store.data.field.FieldUtils;
import org.locationtech.geowave.core.store.index.CommonIndexModel;
import org.locationtech.geowave.core.store.index.IndexStore;
import org.locationtech.geowave.core.store.index.NullIndex;
import org.locationtech.geowave.core.store.query.constraints.QueryConstraints;
import org.locationtech.geowave.core.store.query.filter.QueryFilter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Find the max change in distortion between some k and k-1, picking the value k associated with
* that change.
*
* In a multi-group setting, each group may have a different optimal k. Thus, the optimal batch
* may be different for each group. Each batch is associated with a different value k.
*
* Choose the appropriate batch for each group. Then change the batch identifier for group
* centroids to a final provided single batch identifier ( parent batch ).
*/
public class DistortionGroupManagement {
static final Logger LOGGER = LoggerFactory.getLogger(DistortionGroupManagement.class);
public static final Index DISTORTIONS_INDEX = new NullIndex("DISTORTIONS");
public static final String[] DISTORTIONS_INDEX_ARRAY = new String[] {DISTORTIONS_INDEX.getName()};
final DataStore dataStore;
final IndexStore indexStore;
final PersistentAdapterStore adapterStore;
final InternalAdapterStore internalAdapterStore;
public DistortionGroupManagement(final DataStorePluginOptions dataStoreOptions) {
dataStore = dataStoreOptions.createDataStore();
indexStore = dataStoreOptions.createIndexStore();
adapterStore = dataStoreOptions.createAdapterStore();
internalAdapterStore = dataStoreOptions.createInternalAdapterStore();
final DistortionDataAdapter adapter = new DistortionDataAdapter();
dataStore.addType(adapter, DISTORTIONS_INDEX);
}
public static class BatchIdFilter implements QueryFilter {
String batchId;
public BatchIdFilter() {}
public BatchIdFilter(final String batchId) {
super();
this.batchId = batchId;
}
@Override
public boolean accept(
final CommonIndexModel indexModel,
final IndexedPersistenceEncoding> persistenceEncoding) {
return new DistortionEntry(persistenceEncoding.getDataId(), 0.0).batchId.equals(batchId);
}
@Override
public byte[] toBinary() {
return StringUtils.stringToBinary(batchId);
}
@Override
public void fromBinary(final byte[] bytes) {
batchId = StringUtils.stringFromBinary(bytes);
}
}
public static class BatchIdQuery implements QueryConstraints {
String batchId;
public BatchIdQuery() {}
public BatchIdQuery(final String batchId) {
super();
this.batchId = batchId;
}
@Override
public List