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

Java SpatialRelation类代码示例

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

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



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

示例1: getBoundingStateForCoordinate

import com.spatial4j.core.shape.SpatialRelation; //导入依赖的package包/类
public String getBoundingStateForCoordinate(Double lat, Double lng) {

		Point onePoint = ctx.makePoint(lat, lng);

		for (String oneShapeKey : geometries.keySet()) {

			Shape oneShape = geometries.get(oneShapeKey);

			SpatialRelation relation = oneShape.relate(onePoint);
			if (relation == SpatialRelation.CONTAINS || relation == SpatialRelation.INTERSECTS
					|| relation == SpatialRelation.WITHIN) {
				return oneShapeKey;
			} else {
				System.out.println("NOT IN:" + relation.toString());
			}
		}
		return null;
	}
 
开发者ID:InsightEdge,项目名称:geospatial-catastrophe-modeling,代码行数:19,代码来源:PointInPolygonHelper.java


示例2: isPointInPolygon

import com.spatial4j.core.shape.SpatialRelation; //导入依赖的package包/类
public Boolean isPointInPolygon(Double lat, Double lng) {

		Point onePoint = ctx.makePoint(lat, lng);

		for (Shape oneShape : geometries.values()) {

			SpatialRelation relation = oneShape.relate(onePoint);
			if (relation == SpatialRelation.CONTAINS || relation == SpatialRelation.INTERSECTS
					|| relation == SpatialRelation.WITHIN) {
				return true;
			} else {
				System.out.println("NOT IN:" + relation.toString());
			}
		}
		return false;
	}
 
开发者ID:InsightEdge,项目名称:geospatial-catastrophe-modeling,代码行数:17,代码来源:PointInPolygonHelper.java


示例3: relateApprox

import com.spatial4j.core.shape.SpatialRelation; //导入依赖的package包/类
private SpatialRelation relateApprox(Shape other) {
  if (biasContainsThenWithin) {
    if (shape1.relate(other) == CONTAINS || shape1.equals(other)
        || shape2.relate(other) == CONTAINS || shape2.equals(other)) return CONTAINS;

    if (shape1.relate(other) == WITHIN && shape2.relate(other) == WITHIN) return WITHIN;

  } else {
    if ((shape1.relate(other) == WITHIN || shape1.equals(other))
        && (shape2.relate(other) == WITHIN || shape2.equals(other))) return WITHIN;

    if (shape1.relate(other) == CONTAINS || shape2.relate(other) == CONTAINS) return CONTAINS;
  }

  if (shape1.relate(other).intersects() || shape2.relate(other).intersects())
    return INTERSECTS;//might actually be 'CONTAINS' if the pair are adjacent but we handle that later
  return DISJOINT;
}
 
开发者ID:europeana,项目名称:search,代码行数:19,代码来源:SpatialOpRecursivePrefixTreeTest.java


示例4: relate

import com.spatial4j.core.shape.SpatialRelation; //导入依赖的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


示例5: relateApprox

import com.spatial4j.core.shape.SpatialRelation; //导入依赖的package包/类
private SpatialRelation relateApprox(Shape other) {
  if (biasContainsThenWithin) {
    if (shape1.relate(other) == CONTAINS || shape1.equals(other)
        || shape2.relate(other) == CONTAINS || shape2.equals(other)) return CONTAINS;

    if (shape1.relate(other) == WITHIN && shape2.relate(other) == WITHIN) return WITHIN;

  } else {
    if ((shape1.relate(other) == WITHIN || shape1.equals(other))
        && (shape2.relate(other) == WITHIN || shape2.equals(other))) return WITHIN;

    if (shape1.relate(other) == CONTAINS || shape2.relate(other) == CONTAINS) return CONTAINS;
  }

  if (shape1.relate(other).intersects() || shape2.relate(other).intersects())
    return INTERSECTS;//might actually be 'CONTAINS' if these 2 are adjacent
  return DISJOINT;
}
 
开发者ID:jimaguere,项目名称:Maskana-Gestor-de-Conocimiento,代码行数:19,代码来源:SpatialOpRecursivePrefixTreeTest.java


示例6: evaluateRecord

import com.spatial4j.core.shape.SpatialRelation; //导入依赖的package包/类
@Override
public Object evaluateRecord(OIdentifiable iRecord, ODocument iCurrentResult, OSQLFilterCondition iCondition, Object iLeft,
    Object iRight, OCommandContext iContext) {

  List<Number> left = (List<Number>) iLeft;

  double lat = left.get(0).doubleValue();
  double lon = left.get(1).doubleValue();

  Shape shape = factory.context().makePoint(lon, lat);
  List<Number> right = (List<Number>) iRight;

  double lat1 = right.get(0).doubleValue();
  double lon1 = right.get(1).doubleValue();
  Shape shape1 = factory.context().makePoint(lon1, lat1);

  Map map = (Map) right.get(2);
  double distance = 0;

  Number n = (Number) map.get("maxDistance");
  if (n != null) {
    distance = n.doubleValue();
  }
  Point p = (Point) shape1;
  Circle circle = factory.context().makeCircle(p.getX(), p.getY(),
      DistanceUtils.dist2Degrees(distance, DistanceUtils.EARTH_MEAN_RADIUS_KM));
  double docDistDEG = factory.context().getDistCalc().distance((Point) shape, p);
  final double docDistInKM = DistanceUtils.degrees2Dist(docDistDEG, DistanceUtils.EARTH_EQUATORIAL_RADIUS_KM);
  iContext.setVariable("distance", docDistInKM);
  return shape.relate(circle) == SpatialRelation.WITHIN;
}
 
开发者ID:orientechnologies,项目名称:orientdb-spatial,代码行数:32,代码来源:OLuceneNearOperator.java


示例7: evaluateRecord

import com.spatial4j.core.shape.SpatialRelation; //导入依赖的package包/类
@Override
public Object evaluateRecord(OIdentifiable iRecord, ODocument iCurrentResult, OSQLFilterCondition iCondition, Object iLeft,
    Object iRight, OCommandContext iContext) {
  List<Number> left = (List<Number>) iLeft;

  double lat = left.get(0).doubleValue();
  double lon = left.get(1).doubleValue();

  Shape shape = SpatialContext.GEO.makePoint(lon, lat);

  Shape shape1 = shapeFactory.makeShape(new OSpatialCompositeKey((List<?>) iRight), SpatialContext.GEO);

  return shape.relate(shape1) == SpatialRelation.WITHIN;
}
 
开发者ID:orientechnologies,项目名称:orientdb-spatial,代码行数:15,代码来源:OLuceneWithinOperator.java


示例8: execute

import com.spatial4j.core.shape.SpatialRelation; //导入依赖的package包/类
@Override
public Object execute(Object iThis, OIdentifiable iCurrentRecord, Object iCurrentResult, Object[] iParams,
    OCommandContext iContext) {
  Shape shape = factory.fromObject(iParams[0]);

  Shape shape1 = factory.fromObject(iParams[1]);

  return shape.relate(shape1) == SpatialRelation.CONTAINS && shape1.relate(shape) == SpatialRelation.CONTAINS;
}
 
开发者ID:orientechnologies,项目名称:orientdb-spatial,代码行数:10,代码来源:OSTEqualsFunction.java


示例9: execute

import com.spatial4j.core.shape.SpatialRelation; //导入依赖的package包/类
@Override
public Object execute(Object iThis, OIdentifiable iCurrentRecord, Object iCurrentResult, Object[] iParams,
    OCommandContext iContext) {
  Shape shape = factory.fromObject(iParams[0]);

  Shape shape1 = factory.fromObject(iParams[1]);

  return shape.relate(shape1) == SpatialRelation.DISJOINT;
}
 
开发者ID:orientechnologies,项目名称:orientdb-spatial,代码行数:10,代码来源:OSTDisjointFunction.java


示例10: getSubCells

import com.spatial4j.core.shape.SpatialRelation; //导入依赖的package包/类
/**
 * Like {@link #getSubCells()} but with the results filtered by a shape. If
 * that shape is a {@link com.spatial4j.core.shape.Point} then it must call
 * {@link #getSubCell(com.spatial4j.core.shape.Point)}. The returned cells
 * should have {@link Cell#getShapeRel()} set to their relation with {@code
 * shapeFilter}. In addition, {@link Cell#isLeaf()}
 * must be true when that relation is WITHIN.
 * <p/>
 * Precondition: Never called when getLevel() == maxLevel.
 *
 * @param shapeFilter an optional filter for the returned cells.
 * @return A set of cells (no dups), sorted. Not Modifiable.
 */
public Collection<Cell> getSubCells(Shape shapeFilter) {
  //Note: Higher-performing subclasses might override to consider the shape filter to generate fewer cells.
  if (shapeFilter instanceof Point) {
    Cell subCell = getSubCell((Point) shapeFilter);
    subCell.shapeRel = SpatialRelation.CONTAINS;
    return Collections.singletonList(subCell);
  }
  Collection<Cell> cells = getSubCells();

  if (shapeFilter == null) {
    return cells;
  }

  //TODO change API to return a filtering iterator
  List<Cell> copy = new ArrayList<>(cells.size());
  for (Cell cell : cells) {
    SpatialRelation rel = cell.getShape().relate(shapeFilter);
    if (rel == SpatialRelation.DISJOINT)
      continue;
    cell.shapeRel = rel;
    if (rel == SpatialRelation.WITHIN)
      cell.setLeaf();
    copy.add(cell);
  }
  return copy;
}
 
开发者ID:europeana,项目名称:search,代码行数:40,代码来源:Cell.java


示例11: testShapePair

import com.spatial4j.core.shape.SpatialRelation; //导入依赖的package包/类
@Test
public void testShapePair() {
  ctx = SpatialContext.GEO;
  setupCtx2D(ctx);

  Shape leftShape = new ShapePair(ctx.makeRectangle(-74, -56, -8, 1), ctx.makeRectangle(-180, 134, -90, 90), true);
  Shape queryShape = ctx.makeRectangle(-180, 180, -90, 90);
  assertEquals(SpatialRelation.WITHIN, leftShape.relate(queryShape));
}
 
开发者ID:europeana,项目名称:search,代码行数:10,代码来源:SpatialOpRecursivePrefixTreeTest.java


示例12: relate

import com.spatial4j.core.shape.SpatialRelation; //导入依赖的package包/类
@Override
public SpatialRelation relate(Shape other) {
  SpatialRelation r = relateApprox(other);
  if (r == DISJOINT)
    return r;
  if (r == CONTAINS)
    return r;
  if (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.
  boolean pairTouches = shape1.relate(shape2).intersects();
  if (!pairTouches)
    return r;
  //test all 4 corners
  // Note: awkwardly, we use a non-geo context for this because in geo, -180 & +180 are the same place, which means
  //  that "other" might wrap the world horizontally and yet all it's corners could be in shape1 (or shape2) even
  //  though shape1 is only adjacent to the dateline. I couldn't think of a better way to handle this.
  Rectangle oRect = (Rectangle)other;
  if (cornerContainsNonGeo(oRect.getMinX(), oRect.getMinY())
      && cornerContainsNonGeo(oRect.getMinX(), oRect.getMaxY())
      && cornerContainsNonGeo(oRect.getMaxX(), oRect.getMinY())
      && cornerContainsNonGeo(oRect.getMaxX(), oRect.getMaxY()) )
    return CONTAINS;
  return r;
}
 
开发者ID:europeana,项目名称:search,代码行数:28,代码来源:SpatialOpRecursivePrefixTreeTest.java


示例13: evaluateRecord

import com.spatial4j.core.shape.SpatialRelation; //导入依赖的package包/类
@Override
public Object evaluateRecord(OIdentifiable iRecord, ODocument iCurrentResult, OSQLFilterCondition iCondition, Object iLeft,
    Object iRight, OCommandContext iContext) {

  List<Number> left = (List<Number>) iLeft;

  double lat = left.get(0).doubleValue();
  double lon = left.get(1).doubleValue();

  Shape shape = SpatialContext.GEO.makePoint(lon, lat);
  List<Number> right = (List<Number>) iRight;

  double lat1 =  right.get(0).doubleValue();
  double lon1 =  right.get(1).doubleValue();
  Shape shape1 = SpatialContext.GEO.makePoint(lon1, lat1);

  Map map = (Map) right.get(2);
  double distance = 0;

  Number n = (Number) map.get("maxDistance");
  if (n != null) {
    distance = n.doubleValue();
  }
  Point p = (Point) shape1;
  Circle circle = SpatialContext.GEO.makeCircle(p.getX(), p.getY(),
      DistanceUtils.dist2Degrees(distance, DistanceUtils.EARTH_MEAN_RADIUS_KM));
  double docDistDEG = SpatialContext.GEO.getDistCalc().distance((Point) shape, p);
  final double docDistInKM = DistanceUtils.degrees2Dist(docDistDEG, DistanceUtils.EARTH_EQUATORIAL_RADIUS_KM);
  iContext.setVariable("distance", docDistInKM);
  return shape.relate(circle) == SpatialRelation.WITHIN;
}
 
开发者ID:orientechnologies,项目名称:orientdb-lucene,代码行数:32,代码来源:OLuceneNearOperator.java


示例14: getSubCells

import com.spatial4j.core.shape.SpatialRelation; //导入依赖的package包/类
/**
 * Like {@link #getSubCells()} but with the results filtered by a shape. If
 * that shape is a {@link com.spatial4j.core.shape.Point} then it must call
 * {@link #getSubCell(com.spatial4j.core.shape.Point)}. The returned cells
 * should have {@link Node#getShapeRel()} set to their relation with {@code
 * shapeFilter}. In addition, {@link org.apache.lucene.spatial.prefix.tree.Node#isLeaf()}
 * must be true when that relation is WITHIN.
 * <p/>
 * Precondition: Never called when getLevel() == maxLevel.
 *
 * @param shapeFilter an optional filter for the returned cells.
 * @return A set of cells (no dups), sorted. Not Modifiable.
 */
public Collection<Node> getSubCells(Shape shapeFilter) {
  //Note: Higher-performing subclasses might override to consider the shape filter to generate fewer cells.
  if (shapeFilter instanceof Point) {
    Node subCell = getSubCell((Point) shapeFilter);
    subCell.shapeRel = SpatialRelation.CONTAINS;
    return Collections.singletonList(subCell);
  }
  Collection<Node> cells = getSubCells();

  if (shapeFilter == null) {
    return cells;
  }

  //TODO change API to return a filtering iterator
  List<Node> copy = new ArrayList<Node>(cells.size());
  for (Node cell : cells) {
    SpatialRelation rel = cell.getShape().relate(shapeFilter);
    if (rel == SpatialRelation.DISJOINT)
      continue;
    cell.shapeRel = rel;
    if (rel == SpatialRelation.WITHIN)
      cell.setLeaf();
    copy.add(cell);
  }
  return copy;
}
 
开发者ID:pkarmstr,项目名称:NYBC,代码行数:40,代码来源:Node.java


示例15: getSubCells

import com.spatial4j.core.shape.SpatialRelation; //导入依赖的package包/类
/**
 * Like {@link #getSubCells()} but with the results filtered by a shape. If
 * that shape is a {@link com.spatial4j.core.shape.Point} then it must call
 * {@link #getSubCell(com.spatial4j.core.shape.Point)}. The returned cells
 * should have {@link Cell#getShapeRel()} set to their relation with {@code
 * shapeFilter}. In addition, {@link Cell#isLeaf()}
 * must be true when that relation is WITHIN.
 * <p/>
 * Precondition: Never called when getLevel() == maxLevel.
 *
 * @param shapeFilter an optional filter for the returned cells.
 * @return A set of cells (no dups), sorted. Not Modifiable.
 */
public Collection<Cell> getSubCells(Shape shapeFilter) {
  //Note: Higher-performing subclasses might override to consider the shape filter to generate fewer cells.
  if (shapeFilter instanceof Point) {
    Cell subCell = getSubCell((Point) shapeFilter);
    subCell.shapeRel = SpatialRelation.CONTAINS;
    return Collections.singletonList(subCell);
  }
  Collection<Cell> cells = getSubCells();

  if (shapeFilter == null) {
    return cells;
  }

  //TODO change API to return a filtering iterator
  List<Cell> copy = new ArrayList<Cell>(cells.size());
  for (Cell cell : cells) {
    SpatialRelation rel = cell.getShape().relate(shapeFilter);
    if (rel == SpatialRelation.DISJOINT)
      continue;
    cell.shapeRel = rel;
    if (rel == SpatialRelation.WITHIN)
      cell.setLeaf();
    copy.add(cell);
  }
  return copy;
}
 
开发者ID:yintaoxue,项目名称:read-open-source-code,代码行数:40,代码来源:Cell.java


示例16: getSpatialRelation

import com.spatial4j.core.shape.SpatialRelation; //导入依赖的package包/类
private SpatialRelation getSpatialRelation(Geoshape other) {
    Preconditions.checkNotNull(other);
    return convert2Spatial4j().relate(other.convert2Spatial4j());
}
 
开发者ID:graben1437,项目名称:titan1withtp3.1,代码行数:5,代码来源:Geoshape.java


示例17: intersect

import com.spatial4j.core.shape.SpatialRelation; //导入依赖的package包/类
public boolean intersect(Geoshape other) {
    SpatialRelation r = getSpatialRelation(other);
    return r==SpatialRelation.INTERSECTS || r==SpatialRelation.CONTAINS || r==SpatialRelation.WITHIN;
}
 
开发者ID:graben1437,项目名称:titan1withtp3.1,代码行数:5,代码来源:Geoshape.java


示例18: within

import com.spatial4j.core.shape.SpatialRelation; //导入依赖的package包/类
public boolean within(Geoshape outer) {
    return getSpatialRelation(outer)==SpatialRelation.WITHIN;
}
 
开发者ID:graben1437,项目名称:titan1withtp3.1,代码行数:4,代码来源:Geoshape.java


示例19: disjoint

import com.spatial4j.core.shape.SpatialRelation; //导入依赖的package包/类
public boolean disjoint(Geoshape other) {
    return getSpatialRelation(other)==SpatialRelation.DISJOINT;
}
 
开发者ID:graben1437,项目名称:titan1withtp3.1,代码行数:4,代码来源:Geoshape.java


示例20: geoIntersectTest

import com.spatial4j.core.shape.SpatialRelation; //导入依赖的package包/类
@Test
public void geoIntersectTest() throws IOException, ParseException {

  RecursivePrefixTreeStrategy strategy = new RecursivePrefixTreeStrategy(new GeohashPrefixTree(JtsSpatialContext.GEO, 11),
      "location");

  strategy.setDistErrPct(0);

  IndexWriterConfig conf = new IndexWriterConfig(new StandardAnalyzer());
  final RAMDirectory directory = new RAMDirectory();
  final IndexWriter writer = new IndexWriter(directory, conf);

  Shape point = JtsSpatialContext.GEO.getWktShapeParser().parse("POINT (9.4714708 47.6819432)");

  Shape polygon = JtsSpatialContext.GEO
      .getWktShapeParser()
      .parse(
          "POLYGON((9.481201171875 47.64885294675266,9.471416473388672 47.65128140482982,9.462661743164062 47.64781214443791,9.449443817138672 47.656947367880335,9.445838928222656 47.66110972448931,9.455795288085938 47.667352637215,9.469013214111328 47.67255449415724,9.477081298828125 47.679142768657066,9.490299224853516 47.678680460743834,9.506263732910156 47.679258344995326,9.51364517211914 47.68191653011071,9.518795013427734 47.677177931734406,9.526691436767578 47.679489496903706,9.53390121459961 47.67139857075435,9.50918197631836 47.66180341832901,9.50815200805664 47.6529003141482,9.51192855834961 47.64654002455372,9.504375457763672 47.64237650648966,9.49270248413086 47.649662445325035,9.48617935180664 47.65151268066222,9.481201171875 47.64885294675266))");

  Document doc = new Document();

  Assert.assertNotEquals(point.relate(polygon), SpatialRelation.INTERSECTS);
  for (IndexableField f : strategy.createIndexableFields(point)) {
    doc.add(f);
  }

  writer.addDocument(doc);
  writer.commit();

  SpatialArgs args = new SpatialArgs(SpatialOperation.Intersects, polygon.getBoundingBox());
  Filter filter = strategy.makeFilter(args);
  IndexReader reader = DirectoryReader.open(directory);

  IndexSearcher searcher = new IndexSearcher(reader);

  TopDocs search = searcher.search(new MatchAllDocsQuery(), filter, 1000);
  Assert.assertEquals(search.totalHits, 0);

  reader.close();
  writer.close();
}
 
开发者ID:orientechnologies,项目名称:orientdb-spatial,代码行数:42,代码来源:LuceneGeoTest.java



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


鲜花

握手

雷人

路过

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

请发表评论

全部评论

专题导读
上一篇:
Java EndElementTree类代码示例发布时间:2022-05-22
下一篇:
Java BulkWriteResult类代码示例发布时间: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