Skip to content

About Z3 query #28

@152056212

Description

@152056212
  1. I do this query : BBOX(geom, 118.180168,24.060873,118.28798,24.149692) AND dtg DURING 2017-01-01T07:14:00+00:00/2017-01-01T08:20:00+00:00
  2. Console log is : createQueryPlan QueryStrategy(Z3Index(geom,dtg)[BBOX(geom, 118.180168,24.060873,118.28798,24.149692) AND dtg DURING 2017-01-01T07:14:00+00:00/2017-01-01T08:20:00+00:00][None],Stream(BoundedByteRange([B@100c567f,[B@30c0d731), ?),Stream(BoundedRange(Z3IndexKey(2452,4299856006940196864),Z3IndexKey(2452,4299856006956974079)), ?),List(),None,Hints:
    org.geotools.util.factory.Hints$ClassKey@325bb9a6 = SimpleFeatureType ais-quickstart ShipName:String,CallSign:String,IMO:String,MMSI:String:cardinality=high,ShipTypeCN:String,ShipTypeEN:String,NavStatusCN:String,NavStatusEN:String,Length:Double,Width:Double,Draught:Double,Heading:Double,Course:String,Speed:String,Lon:String,Lat:String,Rot:String,Dest:String,ETA:String,Receivedtime(UTC+8):String,UnixTime:String,Lon_d:String,Lat_d:String,dtg:Date,*geom:Point:srid=4326
    org.geotools.util.factory.Hints$ClassKey@f478a81 = z3:6:geom:dtg
    System defaults:
    FORCE_LONGITUDE_FIRST_AXIS_ORDER = true
    ,Some(Z3IndexValues(org.locationtech.geomesa.curve.Z3SFC@28fd3dc1,FilterValues(List(POLYGON ((118.180168 24.060873, 118.28798 24.060873, 118.28798 24.149692, 118.180168 24.149692, 118.180168 24.060873))),true,false),List((118.180168,24.060873,118.28798,24.149692)),FilterValues(List([2017-01-01T07:14:01Z,2017-01-01T08:19:59Z]),true,false),Map(2452 -> List((285241,289199))),List())))
  3. And query result is 0, but it is not correct by look for database.
  4. By debug, look this function in package org.locationtech.sfcurve.zorder and abstract class ZN:
    debug

So why output is ( Input is ZRange(4299856006940196864,4299856006956974079)) :
output

  1. And dont understand this function** : /
    • Calculates ranges in index space that match any of the input bounds. Uses breadth-first searching to
    • allow a limit on the number of ranges returned.
    • To improve performance, the following decisions have been made:
    • uses loops instead of foreach/maps
    • uses java queues instead of scala queues
    • allocates initial sequences of decent size
    • sorts once at the end before merging
    • @param zbounds search space
    • @param precision precision to consider, in bits (max 64)
    • @param maxRanges loose cap on the number of ranges to return. A higher number of ranges will have less
    •              false positives, but require more processing.
      
    • @param maxRecurse max levels of recursion to apply before stopping
    • @return ranges covering the search space
      */
      def zranges(zbounds: Array[ZRange],
      precision: Int = 64,
      maxRanges: Option[Int] = None,
      maxRecurse: Option[Int] = Some(ZN.DefaultRecurse)): Seq[IndexRange] = {
      .......
      }`

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions