Hi
Emilio,
This
is Christian, a colleague of Markus - the initial requester,
who is currently out-of-office. Maybe I can answer your
question.
We’re
using the GeoTools API to query the data. We basically do it
in the same way as described in the geomesa-tutorial
https://github.com/geomesa/geomesa-tutorials/blob/master/geomesa-tutorials-common/src/main/java/org/geomesa/example/transformations/GeoMesaQueryTutorial.java
First,
we build an org.geotools.data.Query instance using
org.opengis.filter.FilterFactory2. We’re applying temporal
and spatial constraints as well as a constraint on a custom
attribute called VIN:
Query query
=
new
Query(typeName);
List<Filter> filters = new
ArrayList<>();
FilterFactory2 filterFactory = CommonFactoryFinder.getFilterFactory2();
//
temporal filter:
filters.add(filterFactory.between(
filterFactory.property(EventSimpleFeature.DATE_TIME_GROUP),
filterFactory.literal(dateFrom),
filterFactory.literal(dateTo)));
//
spatial filter:
filters.add(filterFactory
.bbox(filterFactory.property(EventSimpleFeature.GEOMETRY),
boundingBox.getMinX(),
boundingBox.getMinY(),
boundingBox.getMaxX(),
boundingBox.getMaxY(),
"EPSG:4326"));
//
vin filter:
filters.add(filterFactory
.equals(filterFactory.property(EventSimpleFeature.VIN),
filterFactory.literal(vin)));
query.setFilter(filterFactory.and(filters));
query.setPropertyNames(fieldNames);
return
query;
With
that query we then instantiate an
org.geotools.data.FeatureReader to read the filtered
(according the given query) entries:
FeatureReader<SimpleFeatureType,
SimpleFeature> reader =
dataStore.getFeatureReader(query,
Transaction.AUTO_COMMIT);
while
(reader.hasNext())
{
SimpleFeature feature = reader.next();
// do
something with the feature ...
}
Is
that sufficient for a further analysis on your side?
Thanks
for your support!
Best
regards
Christian
Hello,
Could you provide the code you're using to query
programmatically?
Thanks,
Emilio
Hello,
In a current project
we are using geomesa-fs-data-store for our
network-measurements. We are collecting these
network-measurements from driving vehicles.
The issues is that we
are facing a mismatch with returned data between
“geomesa-fs export” and querying geomesa programmatically.
This is the geomesa-fs
export-command: ./geomesa-fs export -p
………./geomesa-data-store/ -f ModemState --cql
"dtg>=2019-04-13T23:40:00Z AND
dtg<=2019-04-14T01:00:00Z AND vin LIKE
'%VINSYSTEMTEST1%'"
This is the query from
a debug-statement when querying geomesa programmatically:
2019-05-08
16:16:16.073 [http-nio-8130-exec-2] INFO
org.apache.parquet.filter2.compat.FilterCompat - Filtering
using predicate: and(and(and(and(and(gteq(geom.x, -180.0),
gteq(geom.y, -90.0)), lteq(geom.x, 180.0)), lteq(geom.y,
90.0)), and(gteq(dtg, 1555198800000), lteq(dtg,
1555203600000))), eq(vin, Binary{"VINSYSTEMTEST1"}))
While the export
returns 1 event, the programmatic query returns 0 events.
The event is found in
the programmatic case when extending the search-interval
to an earlier time. E.g. from 2019-04-13T23:40:00Z to
2019-04-13T00:40:00Z
I am also attaching
the test-data.
We are using:
Geomesa-fs-datastore_2.11:2.2.0
Geomesa-fs-storage-parquet_2.11:2.2.0
Partitioning-Scheme:
daily, z2-2bit
The storage-type is
parquet on AWS S3.
I hope you can help. Thanks,
Markus
Thamm
If you are not the addressee, please inform us immediately
that you have received this e-mail by mistake, and delete
it. We thank you for your support.
_______________________________________________
geomesa-users mailing list
geomesa-users@xxxxxxxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.locationtech.org/mailman/listinfo/geomesa-users