use of org.mapdb.Fun.Tuple3 in project traffic-engine by opentraffic.
the class StreetDataStore method delete.
@Override
public void delete(SpatialDataItem obj) {
Tuple3 segmentId = ((StreetSegment) obj).getSegmentId();
segmentIndex.remove(segmentId);
super.delete(obj);
}
use of org.mapdb.Fun.Tuple3 in project traffic-engine by opentraffic.
the class StreetDataStore method delete.
@Override
public void delete(List<SpatialDataItem> objs) {
List<SpatialDataItem> segments = new ArrayList<SpatialDataItem>();
for (SpatialDataItem obj : objs) {
Tuple3 segmentId = ((StreetSegment) obj).getSegmentId();
if (!segmentIndex.containsKey(segmentId))
continue;
segments.add(obj);
segmentIndex.remove(segmentId);
}
super.delete(segments);
}
use of org.mapdb.Fun.Tuple3 in project traffic-engine by opentraffic.
the class StreetDataStore method save.
@Override
public void save(List<SpatialDataItem> objs) {
List<SpatialDataItem> segments = new ArrayList<SpatialDataItem>();
for (SpatialDataItem obj : objs) {
Tuple3 segmentId = ((StreetSegment) obj).getSegmentId();
if (segmentIndex.containsKey(segmentId))
continue;
segments.add(obj);
segmentIndex.put(segmentId, obj.id);
}
super.save(segments);
}
use of org.mapdb.Fun.Tuple3 in project traffic-engine by opentraffic.
the class StreetDataStore method save.
public void save(SpatialDataItem obj) {
Tuple3 segmentId = ((StreetSegment) obj).getSegmentId();
if (segmentIndex.containsKey(segmentId))
return;
segmentIndex.put(segmentId, obj.id);
super.save(obj);
}
use of org.mapdb.Fun.Tuple3 in project traffic-engine by opentraffic.
the class SpatialDataStore method getIdsByEnvelope.
public List<Long> getIdsByEnvelope(Envelope env) {
int y1 = getTileY(env.getMinY(), Z_INDEX);
int x1 = getTileX(env.getMinX(), Z_INDEX);
int y2 = getTileY(env.getMaxY(), Z_INDEX);
int x2 = getTileX(env.getMaxX(), Z_INDEX);
int minY;
int maxY;
int minX;
int maxX;
if (x1 < x2) {
minX = x1;
maxX = x2;
} else {
minX = x2;
maxX = x1;
}
if (y1 < y2) {
minY = y1;
maxY = y2;
} else {
minY = y2;
maxY = y1;
}
minX--;
maxX++;
minY--;
maxY++;
List<Long> ids = new ArrayList();
for (int tileX = minX; tileX <= maxX; tileX++) {
NavigableSet<Tuple3<Integer, Integer, Long>> xSubset = tileIndex.subSet(// inclusive lower bound, null tests lower than anything
new Tuple3(tileX, minY, null), // inclusive lower bound, null tests lower than anything
true, // inclusive upper bound, HI tests higher than anything
new Tuple3(tileX, maxY, Fun.HI), // inclusive upper bound, HI tests higher than anything
true);
for (Tuple3<Integer, Integer, Long> item : xSubset) {
ids.add(item.c);
}
}
return ids;
}
Aggregations