• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Java Rectangle类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了Java中com.spatial4j.core.shape.Rectangle的典型用法代码示例。如果您正苦于以下问题:Java Rectangle类的具体用法?Java Rectangle怎么用?Java Rectangle使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



Rectangle类属于com.spatial4j.core.shape包,在下文中一共展示了Rectangle类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Java代码示例。

示例1: makeShape

import com.spatial4j.core.shape.Rectangle; //导入依赖的package包/类
@Override
public Rectangle makeShape(OCompositeKey key, SpatialContext ctx) {

  Point[] points = new Point[2];
  int i = 0;

  for (Object o : key.getKeys()) {
    List<Number> numbers = (List<Number>) o;
    double lat = ((Double) OType.convert(numbers.get(0), Double.class)).doubleValue();
    double lng = ((Double) OType.convert(numbers.get(1), Double.class)).doubleValue();
    points[i] = ctx.makePoint(lng, lat);
    i++;
  }

  Point lowerLeft = points[0];
  Point topRight = points[1];
  if (lowerLeft.getX() > topRight.getX()) {
    double x = lowerLeft.getX();
    lowerLeft = ctx.makePoint(topRight.getX(), lowerLeft.getY());
    topRight = ctx.makePoint(x, topRight.getY());
  }
  return ctx.makeRectangle(lowerLeft, topRight);
}
 
开发者ID:orientechnologies,项目名称:orientdb-spatial,代码行数:24,代码来源:ORectangleLegacyBuilder.java


示例2: calcDistanceFromErrPct

import com.spatial4j.core.shape.Rectangle; //导入依赖的package包/类
/**
 * Computes the distance given a shape and the {@code distErrPct}.  The
 * algorithm is the fraction of the distance from the center of the query
 * shape to its closest bounding box corner.
 *
 * @param shape Mandatory.
 * @param distErrPct 0 to 0.5
 * @param ctx Mandatory
 * @return A distance (in degrees).
 */
public static double calcDistanceFromErrPct(Shape shape, double distErrPct, SpatialContext ctx) {
  if (distErrPct < 0 || distErrPct > 0.5) {
    throw new IllegalArgumentException("distErrPct " + distErrPct + " must be between [0 to 0.5]");
  }
  if (distErrPct == 0 || shape instanceof Point) {
    return 0;
  }
  Rectangle bbox = shape.getBoundingBox();
  //Compute the distance from the center to a corner.  Because the distance
  // to a bottom corner vs a top corner can vary in a geospatial scenario,
  // take the closest one (greater precision).
  Point ctr = bbox.getCenter();
  double y = (ctr.getY() >= 0 ? bbox.getMaxY() : bbox.getMinY());
  double diagonalDist = ctx.getDistCalc().distance(ctr, bbox.getMaxX(), y);
  return diagonalDist * distErrPct;
}
 
开发者ID:europeana,项目名称:search,代码行数:27,代码来源:SpatialArgs.java


示例3: makeSpatialQuery

import com.spatial4j.core.shape.Rectangle; //导入依赖的package包/类
private Query makeSpatialQuery(SpatialArgs args) {
  Shape shape = args.getShape();
  if (!(shape instanceof Rectangle))
    throw new UnsupportedOperationException("Can only query by Rectangle, not " + shape);

  Rectangle bbox = (Rectangle) shape;
  Query spatial;

  // Useful for understanding Relations:
  // http://edndoc.esri.com/arcsde/9.1/general_topics/understand_spatial_relations.htm
  SpatialOperation op = args.getOperation();
       if( op == SpatialOperation.BBoxIntersects ) spatial = makeIntersects(bbox);
  else if( op == SpatialOperation.BBoxWithin     ) spatial = makeWithin(bbox);
  else if( op == SpatialOperation.Contains       ) spatial = makeContains(bbox);
  else if( op == SpatialOperation.Intersects     ) spatial = makeIntersects(bbox);
  else if( op == SpatialOperation.IsEqualTo      ) spatial = makeEquals(bbox);
  else if( op == SpatialOperation.IsDisjointTo   ) spatial = makeDisjoint(bbox);
  else if( op == SpatialOperation.IsWithin       ) spatial = makeWithin(bbox);
  else { //no Overlaps support yet
      throw new UnsupportedSpatialOperation(op);
  }
  return spatial;
}
 
开发者ID:europeana,项目名称:search,代码行数:24,代码来源:BBoxStrategy.java


示例4: toNonGeo

import com.spatial4j.core.shape.Rectangle; //导入依赖的package包/类
private Shape toNonGeo(Shape shape) {
  if (!ctx.isGeo())
    return shape;//already non-geo
  if (shape instanceof Rectangle) {
    Rectangle rect = (Rectangle) shape;
    if (rect.getCrossesDateLine()) {
      return new ShapePair(
          ctx2D.makeRectangle(rect.getMinX(), 180, rect.getMinY(), rect.getMaxY()),
          ctx2D.makeRectangle(-180, rect.getMaxX(), rect.getMinY(), rect.getMaxY()),
          biasContainsThenWithin);
    } else {
      return ctx2D.makeRectangle(rect.getMinX(), rect.getMaxX(), rect.getMinY(), rect.getMaxY());
    }
  }
  //no need to do others; this addresses the -180/+180 ambiguity corner test problem
  return shape;
}
 
开发者ID:europeana,项目名称:search,代码行数:18,代码来源:SpatialOpRecursivePrefixTreeTest.java


示例5: testCellTraverse

import com.spatial4j.core.shape.Rectangle; //导入依赖的package包/类
@Test
public void testCellTraverse() {
  trie = new GeohashPrefixTree(ctx,4);

  Cell prevC = null;
  Cell c = trie.getWorldCell();
  assertEquals(0, c.getLevel());
  assertEquals(ctx.getWorldBounds(), c.getShape());
  while(c.getLevel() < trie.getMaxLevels()) {
    prevC = c;
    c = c.getSubCells().iterator().next();//TODO random which one?
    
    assertEquals(prevC.getLevel()+1,c.getLevel());
    Rectangle prevNShape = (Rectangle) prevC.getShape();
    Shape s = c.getShape();
    Rectangle sbox = s.getBoundingBox();
    assertTrue(prevNShape.getWidth() > sbox.getWidth());
    assertTrue(prevNShape.getHeight() > sbox.getHeight());
  }
}
 
开发者ID:europeana,项目名称:search,代码行数:21,代码来源:SpatialPrefixTreeTest.java


示例6: testQueries

import com.spatial4j.core.shape.Rectangle; //导入依赖的package包/类
@Test
public void testQueries() throws IOException {
  String name = StrategyTestCase.QTEST_Cities_Intersects_BBox;

  InputStream in = getClass().getClassLoader().getResourceAsStream(name);
  SpatialContext ctx = SpatialContext.GEO;
  Iterator<SpatialTestQuery> iter = SpatialTestQuery.getTestQueries(
      new SpatialArgsParser(), ctx, name, in );//closes the InputStream
  List<SpatialTestQuery> tests = new ArrayList<>();
  while( iter.hasNext() ) {
    tests.add( iter.next() );
  }
  Assert.assertEquals( 3, tests.size() );

  SpatialTestQuery sf = tests.get(0);
  // assert
  Assert.assertEquals( 1, sf.ids.size() );
  Assert.assertTrue( sf.ids.get(0).equals( "G5391959" ) );
  Assert.assertTrue( sf.args.getShape() instanceof Rectangle);
  Assert.assertEquals(SpatialOperation.Intersects, sf.args.getOperation());
}
 
开发者ID:europeana,项目名称:search,代码行数:22,代码来源:TestTestFramework.java


示例7: gridSnapp

import com.spatial4j.core.shape.Rectangle; //导入依赖的package包/类
protected Rectangle gridSnapp(Shape snapMe) {
  //The next 4 lines mimic PrefixTreeStrategy.createIndexableFields()
  double distErrPct = ((PrefixTreeStrategy) strategy).getDistErrPct();
  double distErr = SpatialArgs.calcDistanceFromErrPct(snapMe, distErrPct, ctx);
  int detailLevel = grid.getLevelForDistance(distErr);
  List<Node> cells = grid.getNodes(snapMe, detailLevel, false, true);

  //calc bounding box of cells.
  double minX = Double.POSITIVE_INFINITY, maxX = Double.NEGATIVE_INFINITY;
  double minY = Double.POSITIVE_INFINITY, maxY = Double.NEGATIVE_INFINITY;
  for (Node cell : cells) {
    assert cell.getLevel() <= detailLevel;
    Rectangle cellR = cell.getShape().getBoundingBox();

    minX = Math.min(minX, cellR.getMinX());
    maxX = Math.max(maxX, cellR.getMaxX());
    minY = Math.min(minY, cellR.getMinY());
    maxY = Math.max(maxY, cellR.getMaxY());
  }
  return ctx.makeRectangle(minX, maxX, minY, maxY);
}
 
开发者ID:pkarmstr,项目名称:NYBC,代码行数:22,代码来源:SpatialOpRecursivePrefixTreeTest.java


示例8: testNodeTraverse

import com.spatial4j.core.shape.Rectangle; //导入依赖的package包/类
@Test
public void testNodeTraverse() {
  trie = new GeohashPrefixTree(ctx,4);

  Node prevN = null;
  Node n = trie.getWorldNode();
  assertEquals(0,n.getLevel());
  assertEquals(ctx.getWorldBounds(),n.getShape());
  while(n.getLevel() < trie.getMaxLevels()) {
    prevN = n;
    n = n.getSubCells().iterator().next();//TODO random which one?
    
    assertEquals(prevN.getLevel()+1,n.getLevel());
    Rectangle prevNShape = (Rectangle) prevN.getShape();
    Shape s = n.getShape();
    Rectangle sbox = s.getBoundingBox();
    assertTrue(prevNShape.getWidth() > sbox.getWidth());
    assertTrue(prevNShape.getHeight() > sbox.getHeight());
  }
}
 
开发者ID:pkarmstr,项目名称:NYBC,代码行数:21,代码来源:SpatialPrefixTreeTest.java


示例9: testQueries

import com.spatial4j.core.shape.Rectangle; //导入依赖的package包/类
@Test
public void testQueries() throws IOException {
  String name = StrategyTestCase.QTEST_Cities_Intersects_BBox;

  InputStream in = getClass().getClassLoader().getResourceAsStream(name);
  SpatialContext ctx = SpatialContext.GEO;
  Iterator<SpatialTestQuery> iter = SpatialTestQuery.getTestQueries(
      new SpatialArgsParser(), ctx, name, in );
  List<SpatialTestQuery> tests = new ArrayList<SpatialTestQuery>();
  while( iter.hasNext() ) {
    tests.add( iter.next() );
  }
  Assert.assertEquals( 3, tests.size() );

  SpatialTestQuery sf = tests.get(0);
 // assert
  Assert.assertEquals( 1, sf.ids.size() );
  Assert.assertTrue( sf.ids.get(0).equals( "G5391959" ) );
  Assert.assertTrue( sf.args.getShape() instanceof Rectangle);
  Assert.assertEquals( SpatialOperation.Intersects, sf.args.getOperation() );
}
 
开发者ID:pkarmstr,项目名称:NYBC,代码行数:22,代码来源:TestTestFramework.java


示例10: writeShape

import com.spatial4j.core.shape.Rectangle; //导入依赖的package包/类
/** Overloaded to provide a number format. */
public String writeShape(Shape shape, NumberFormat nf) {
  if (shape instanceof Point) {
    Point point = (Point) shape;
    return nf.format(point.getX()) + " " + nf.format(point.getY());
  } else if (shape instanceof Rectangle) {
    Rectangle rect = (Rectangle) shape;
    return nf.format(rect.getMinX()) + " " + nf.format(rect.getMinY()) + " " + nf.format(rect.getMaxX()) + " "
        + nf.format(rect.getMaxY());
  } else if (shape instanceof Circle) {
    Circle c = (Circle) shape;
    return "Circle(" + nf.format(c.getCenter().getX()) + " " + nf.format(c.getCenter().getY()) + " " + "d="
        + nf.format(c.getRadius()) + ")";
  }
  return shape.toString();
}
 
开发者ID:apache,项目名称:incubator-blur,代码行数:17,代码来源:ShapeReadWriter.java


示例11: gridSnap

import com.spatial4j.core.shape.Rectangle; //导入依赖的package包/类
protected Rectangle gridSnap(Shape snapMe) {
  //The next 4 lines mimic PrefixTreeStrategy.createIndexableFields()
  double distErrPct = ((PrefixTreeStrategy) strategy).getDistErrPct();
  double distErr = SpatialArgs.calcDistanceFromErrPct(snapMe, distErrPct, ctx);
  int detailLevel = grid.getLevelForDistance(distErr);
  List<Cell> cells = grid.getCells(snapMe, detailLevel, false, true);

  //calc bounding box of cells.
  double minX = Double.POSITIVE_INFINITY, maxX = Double.NEGATIVE_INFINITY;
  double minY = Double.POSITIVE_INFINITY, maxY = Double.NEGATIVE_INFINITY;
  for (Cell cell : cells) {
    assert cell.getLevel() <= detailLevel;
    Rectangle cellR = cell.getShape().getBoundingBox();

    minX = Math.min(minX, cellR.getMinX());
    maxX = Math.max(maxX, cellR.getMaxX());
    minY = Math.min(minY, cellR.getMinY());
    maxY = Math.max(maxY, cellR.getMaxY());
  }
  return ctx.makeRectangle(minX, maxX, minY, maxY);
}
 
开发者ID:jimaguere,项目名称:Maskana-Gestor-de-Conocimiento,代码行数:22,代码来源:SpatialOpRecursivePrefixTreeTest.java


示例12: relate

import com.spatial4j.core.shape.Rectangle; //导入依赖的package包/类
@Override
public SpatialRelation relate(Shape other) {
  SpatialRelation r = relateApprox(other);
  if (r != INTERSECTS && !(r == WITHIN && biasContainsThenWithin))
    return r;
  //See if the correct answer is actually Contains, when the indexed shapes are adjacent,
  // creating a larger shape that contains the input shape.
  Rectangle oRect = (Rectangle)other;
  boolean pairTouches = shape1.relate(shape2).intersects();
  if (!pairTouches)
    return r;
  //test all 4 corners
  if (relate(ctx.makePoint(oRect.getMinX(), oRect.getMinY())) == CONTAINS
      && relate(ctx.makePoint(oRect.getMinX(), oRect.getMaxY())) == CONTAINS
      && relate(ctx.makePoint(oRect.getMaxX(), oRect.getMinY())) == CONTAINS
      && relate(ctx.makePoint(oRect.getMaxX(), oRect.getMaxY())) == CONTAINS)
    return CONTAINS;
  return r;
}
 
开发者ID:jimaguere,项目名称:Maskana-Gestor-de-Conocimiento,代码行数:20,代码来源:SpatialOpRecursivePrefixTreeTest.java


示例13: getQuery

import com.spatial4j.core.shape.Rectangle; //导入依赖的package包/类
private Query getQuery(Function inner, Context context) {
    RefLiteralPair innerPair = new RefLiteralPair(inner);
    if (!innerPair.isValid()) {
        return null;
    }
    if (innerPair.reference().valueType().equals(DataTypes.GEO_SHAPE)) {
        // we have within('POINT(0 0)', shape_column)
        return genericFunctionFilter(inner, context);
    }
    GeoPointFieldMapper.GeoPointFieldType geoPointFieldType = getGeoPointFieldType(
            innerPair.reference().ident().columnIdent().fqn(),
            context.mapperService);

    Map<String, Object> geoJSON = (Map<String, Object>) innerPair.input().value();
    Shape shape = GeoJSONUtils.map2Shape(geoJSON);
    Geometry geometry = JtsSpatialContext.GEO.getGeometryFrom(shape);
    IndexGeoPointFieldData fieldData = context.fieldDataService.getForField(geoPointFieldType);
    if (geometry.isRectangle()) {
        Rectangle boundingBox = shape.getBoundingBox();
        return new InMemoryGeoBoundingBoxQuery(
                new GeoPoint(boundingBox.getMaxY(), boundingBox.getMinX()),
                new GeoPoint(boundingBox.getMinY(), boundingBox.getMaxX()),
                fieldData
        );
    } else {
        Coordinate[] coordinates = geometry.getCoordinates();
        GeoPoint[] points = new GeoPoint[coordinates.length];
        for (int i = 0; i < coordinates.length; i++) {
            Coordinate coordinate = coordinates[i];
            points[i] = new GeoPoint(coordinate.y, coordinate.x);
        }
        return new GeoPolygonQuery(fieldData, points);
    }
}
 
开发者ID:baidu,项目名称:Elasticsearch,代码行数:35,代码来源:LuceneQueryBuilder.java


示例14: fromDoc

import com.spatial4j.core.shape.Rectangle; //导入依赖的package包/类
@Override
public Rectangle fromDoc(ODocument document) {
  validate(document);
  List<Number> coordinates = document.field(COORDINATES);

  Point topLeft = SPATIAL_CONTEXT.makePoint(coordinates.get(0).doubleValue(), coordinates.get(1).doubleValue());
  Point bottomRight = SPATIAL_CONTEXT.makePoint(coordinates.get(2).doubleValue(), coordinates.get(3).doubleValue());
  Rectangle rectangle = SPATIAL_CONTEXT.makeRectangle(topLeft, bottomRight);
  return rectangle;
}
 
开发者ID:orientechnologies,项目名称:orientdb-spatial,代码行数:11,代码来源:ORectangleShapeBuilder.java


示例15: toDoc

import com.spatial4j.core.shape.Rectangle; //导入依赖的package包/类
@Override
public ODocument toDoc(final Rectangle shape) {

  ODocument doc = new ODocument(getName());

  doc.field(COORDINATES, new ArrayList<Double>() {
    {
      add(shape.getMinX());
      add(shape.getMinY());
      add(shape.getMaxX());
      add(shape.getMaxY());
    }
  });
  return doc;
}
 
开发者ID:orientechnologies,项目名称:orientdb-spatial,代码行数:16,代码来源:ORectangleShapeBuilder.java


示例16: fromText

import com.spatial4j.core.shape.Rectangle; //导入依赖的package包/类
public T fromText(String wkt) throws ParseException {
  T entity = (T) SPATIAL_CONTEXT.getWktShapeParser().parse(wkt);

  if (entity instanceof Rectangle) {
    Geometry geometryFrom = SPATIAL_CONTEXT.getGeometryFrom(entity);
    entity = (T) SPATIAL_CONTEXT.makeShape(geometryFrom);
  }
  return entity;
}
 
开发者ID:orientechnologies,项目名称:orientdb-spatial,代码行数:10,代码来源:OShapeBuilder.java


示例17: toDoc

import com.spatial4j.core.shape.Rectangle; //导入依赖的package包/类
@Override
public ODocument toDoc(Shape shape) {

  // TODO REFACTOR
  ODocument doc = null;
  if (Point.class.isAssignableFrom(shape.getClass())) {
    doc = factories.get(OPointShapeBuilder.NAME).toDoc(shape);
  } else if (Rectangle.class.isAssignableFrom(shape.getClass())) {
    doc = factories.get(ORectangleShapeBuilder.NAME).toDoc(shape);
  } else if (JtsGeometry.class.isAssignableFrom(shape.getClass())) {
    JtsGeometry geometry = (JtsGeometry) shape;
    Geometry geom = geometry.getGeom();
    doc = factories.get("O" + geom.getClass().getSimpleName()).toDoc(shape);

  } else if (ShapeCollection.class.isAssignableFrom(shape.getClass())) {
    ShapeCollection collection = (ShapeCollection) shape;

    if (isMultiPolygon(collection)) {
      doc = factories.get("OMultiPolygon").toDoc(createMultiPolygon(collection));
    } else if (isMultiPoint(collection)) {
      doc = factories.get("OMultiPoint").toDoc(createMultiPoint(collection));
    } else if (isMultiLine(collection)) {
      doc = factories.get("OMultiLineString").toDoc(createMultiLine(collection));
    } else {
      doc = factories.get("OGeometryCollection").toDoc(shape);
    }
  }
  return doc;
}
 
开发者ID:orientechnologies,项目名称:orientdb-spatial,代码行数:30,代码来源:OShapeFactory.java


示例18: GeohashPrefixTree

import com.spatial4j.core.shape.Rectangle; //导入依赖的package包/类
public GeohashPrefixTree(SpatialContext ctx, int maxLevels) {
  super(ctx, maxLevels);
  Rectangle bounds = ctx.getWorldBounds();
  if (bounds.getMinX() != -180)
    throw new IllegalArgumentException("Geohash only supports lat-lon world bounds. Got "+bounds);
  int MAXP = getMaxLevelsPossible();
  if (maxLevels <= 0 || maxLevels > MAXP)
    throw new IllegalArgumentException("maxLen must be [1-"+MAXP+"] but got "+ maxLevels);
}
 
开发者ID:europeana,项目名称:search,代码行数:10,代码来源:GeohashPrefixTree.java


示例19: getDistanceForLevel

import com.spatial4j.core.shape.Rectangle; //导入依赖的package包/类
/**
 * Given a cell having the specified level, returns the distance from opposite
 * corners. Since this might very depending on where the cell is, this method
 * may over-estimate.
 *
 * @param level [1 to maxLevels]
 * @return > 0
 */
public double getDistanceForLevel(int level) {
  if (level < 1 || level > getMaxLevels())
    throw new IllegalArgumentException("Level must be in 1 to maxLevels range");
  //TODO cache for each level
  Cell cell = getCell(ctx.getWorldBounds().getCenter(), level);
  Rectangle bbox = cell.getShape().getBoundingBox();
  double width = bbox.getWidth();
  double height = bbox.getHeight();
  //Use standard cartesian hypotenuse. For geospatial, this answer is larger
  // than the correct one but it's okay to over-estimate.
  return Math.sqrt(width * width + height * height);
}
 
开发者ID:europeana,项目名称:search,代码行数:21,代码来源:SpatialPrefixTree.java


示例20: QuadPrefixTree

import com.spatial4j.core.shape.Rectangle; //导入依赖的package包/类
public QuadPrefixTree(
    SpatialContext ctx, Rectangle bounds, int maxLevels) {
  super(ctx, maxLevels);
  this.xmin = bounds.getMinX();
  this.xmax = bounds.getMaxX();
  this.ymin = bounds.getMinY();
  this.ymax = bounds.getMaxY();

  levelW = new double[maxLevels];
  levelH = new double[maxLevels];
  levelS = new int[maxLevels];
  levelN = new int[maxLevels];

  gridW = xmax - xmin;
  gridH = ymax - ymin;
  this.xmid = xmin + gridW/2.0;
  this.ymid = ymin + gridH/2.0;
  levelW[0] = gridW/2.0;
  levelH[0] = gridH/2.0;
  levelS[0] = 2;
  levelN[0] = 4;

  for (int i = 1; i < levelW.length; i++) {
    levelW[i] = levelW[i - 1] / 2.0;
    levelH[i] = levelH[i - 1] / 2.0;
    levelS[i] = levelS[i - 1] * 2;
    levelN[i] = levelN[i - 1] * 4;
  }
}
 
开发者ID:europeana,项目名称:search,代码行数:30,代码来源:QuadPrefixTree.java



注:本文中的com.spatial4j.core.shape.Rectangle类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Java Name类代码示例发布时间:2022-05-22
下一篇:
Java HeapByteBufferAllocator类代码示例发布时间:2022-05-22
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap