Dear geomesa developers,
First of all many thanks for the
Geomesa project: I am an happy user, and it is very
useful.
I am trying to use the TubeSelectProcess, but I am getting the following error:
16/07/25 17:20:24 ERROR
tube.NoGapFill: Unable to retrieve date field from input
tubeFeatures...ensure there a field named dtg
java.lang.IllegalArgumentException:
Unable to retrieve date field from input
tubeFeatures...ensure there a field named "dtg"
at
org.locationtech.geomesa.accumulo.process.tube.TubeBuilder$$anonfun$transform$1.apply(TubeBuilder.scala:94)
at
org.locationtech.geomesa.accumulo.process.tube.TubeBuilder$$anonfun$transform$1.apply(TubeBuilder.scala:86)
at
scala.collection.Iterator$$anon$11.next(Iterator.scala:370)
at
scala.collection.Iterator$$anon$11.next(Iterator.scala:370)
at
scala.collection.Iterator$class.toStream(Iterator.scala:1180)
at
scala.collection.AbstractIterator.toStream(Iterator.scala:1194)
at
scala.collection.TraversableOnce$class.toSeq(TraversableOnce.scala:296)
at
scala.collection.AbstractIterator.toSeq(Iterator.scala:1194)
at
org.locationtech.geomesa.accumulo.process.tube.NoGapFill.createTube(TubeBuilder.scala:141)
at
org.locationtech.geomesa.accumulo.process.tube.TubeVisitor.tubeSelect(TubeSelectProcess.scala:161)
at
org.locationtech.geomesa.accumulo.data.AccumuloFeatureCollection.accepts(AccumuloFeatureSource.scala:135)
at
org.locationtech.geomesa.accumulo.process.tube.TubeSelectProcess.execute(TubeSelectProcess.scala:109)
It seems that it is looking in my
catalog for a default field that has to be called to “dtg”.
My catalog has his own data field
with a different name (TS instead of dtg), and scanning the
metadata table I can see that there is a link between the
dtgfield and my own field
<snip>
~METADATA_positional dtgfield: []
TS
</snip>
Further debugging bring me to a
piece of code that I suppose could be my problem
def extractDtgField(sft: SimpleFeatureType) =
sft.getAttributeDescriptors
.filter { _.getUserData.contains(Constants.SF_PROPERTY_START_TIME) }
.headOption
.map { _.getName.toString }
.getOrElse(DEFAULT_DTG_FIELD)
This is seems to be always the
default_dfg_field value.
The process that I am doing is to
query with different filters my catalog, creating 2
different datasets: the input collection, and the dataset
where to check matching features, and then run the
TubeSelectionProcess over the two datasets.
For the context: I tried to run the
same code on a catalog that contained the “dtg” field as the
Date field, and the process was fine and I was getting the
results that I wanted/expected.
The stack that I am using is
Accumulo 1.7.0, Geomesa 1.2.1
GeoMesa Version 1.2.1 built on
2016-03-25 16:17.
Commit ID:
e577807844341849afeab04f5d034c6ca1b663c4
Branch: geomesa-1.2.1
Any advice would be very much
appreciate.
Many thanks,
Federica
This email (and any attachments) may contain confidential
information and is intended solely for the recipient(s) to whom
the email is addressed. If you received this email in error,
please inform us immediately and delete the email and all
attachments without further using, copying or disclosing the
information. This email and any attachments are believed to be,
but cannot be guaranteed to be, secure or virus-free. Satellite
Applications Catapult Limited is registered in England &
Wales. Company Number: 7964746. Registered office: Electron
Building, Fermi Avenue, Harwell Oxford, Didcot, Oxfordshire OX11
0QR.