org.locationtech.jts.geom.GeometryFactory.createMultiPolygon()方法的使用及代码示例

x33g5p2x  于2022-01-19 转载在 其他  
字(6.6k)|赞(0)|评价(0)|浏览(116)

本文整理了Java中org.locationtech.jts.geom.GeometryFactory.createMultiPolygon()方法的一些代码示例,展示了GeometryFactory.createMultiPolygon()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。GeometryFactory.createMultiPolygon()方法的具体详情如下:
包路径:org.locationtech.jts.geom.GeometryFactory
类名称:GeometryFactory
方法名:createMultiPolygon

GeometryFactory.createMultiPolygon介绍

[英]Creates a MultiPolygon using the given Polygons; a null or empty array will create an empty Polygon. The polygons must conform to the assertions specified in the OpenGIS Simple Features Specification for SQL.
[中]使用给定多边形创建多多边形;空数组或空数组将创建空多边形。多边形必须符合OpenGIS Simple Features Specification for SQL中指定的断言。

代码示例

代码示例来源:origin: prestodb/presto

if (partCount == 0) {
  if (multitype) {
    return GEOMETRY_FACTORY.createMultiPolygon();
  return GEOMETRY_FACTORY.createMultiPolygon(polygons.toArray(new Polygon[0]));

代码示例来源:origin: graphhopper/graphhopper

return geometryFactory.createMultiPolygon(isolinePolygons.toArray(new Polygon[isolinePolygons.size()]));

代码示例来源:origin: geoserver/geoserver

/**
 * Crops the coverage to the specified bounds
 *
 * @param coverage
 * @param bounds
 */
public static GridCoverage2D crop(final GridCoverage2D coverage, final Envelope bounds) {
  // checks
  final ReferencedEnvelope cropBounds = new ReferencedEnvelope(bounds);
  final ReferencedEnvelope coverageBounds = new ReferencedEnvelope(coverage.getEnvelope());
  if (cropBounds.contains((org.locationtech.jts.geom.Envelope) coverageBounds)) {
    return coverage;
  }
  Polygon polygon = JTS.toGeometry(cropBounds);
  Geometry roi = polygon.getFactory().createMultiPolygon(new Polygon[] {polygon});
  // perform the crops
  final ParameterValueGroup param = PROCESSOR.getOperation("CoverageCrop").getParameters();
  param.parameter("Source").setValue(coverage);
  param.parameter("Envelope").setValue(bounds);
  param.parameter("ROI").setValue(roi);
  return (GridCoverage2D) PROCESSOR.doOperation(param);
}

代码示例来源:origin: geotools/geotools

/**
 * Creates a MultiPolygon from a set of Polygons.
 *
 * @param polys the component polygons
 * @return A MultiPolygon
 */
public MultiPolygon multiPolygon(Polygon... polys) {
  return geomFact.createMultiPolygon(polys);
}

代码示例来源:origin: geoserver/geoserver

geomFactory.createMultiPolygon(
    accum.toArray(new Polygon[accum.size()]));

代码示例来源:origin: geotools/geotools

@Override
protected Geometry getEmpty() {
  if (EMPTY == null) {
    EMPTY = new GeometryFactory().createMultiPolygon(null);
  }
  return EMPTY;
}

代码示例来源:origin: geotools/geotools

private MultiPolygon createMulti(LinearRing single, List holes) {
  return geometryFactory.createMultiPolygon(
      new Polygon[] {
        geometryFactory.createPolygon(
            single, (LinearRing[]) holes.toArray(new LinearRing[holes.size()]))
      });
}

代码示例来源:origin: geotools/geotools

/**
 *
 * <!-- begin-user-doc -->
 * <!-- end-user-doc -->
 *
 * @generated modifiable
 */
public Object parse(ElementInstance instance, Node node, Object value) throws Exception {
  List polys = node.getChildValues(Polygon.class);
  return gFactory.createMultiPolygon((Polygon[]) polys.toArray(new Polygon[polys.size()]));
}

代码示例来源:origin: geotools/geotools

public MultiPolygon toMultiPolygon(List<?> list) {
  List<Polygon> polys = new ArrayList<Polygon>();
  for (Object o : list) {
    polys.add(toPolygon((List<?>) o));
  }
  return geometryFactory.createMultiPolygon(polys.toArray(new Polygon[polys.size()]));
}

代码示例来源:origin: geotools/geotools

@Override
public Geometry getGeometry() {
  if (parts.length > 0) {
    parts[parts.length - 1] = polygonFactory.getGeometry();
  }
  MultiPolygon mp = gf.createMultiPolygon(parts);
  return mp;
}

代码示例来源:origin: geotools/geotools

private Geometry toPolygon(GeometryFactory gf, final List<Polygon> polygons) {
  if (polygons.size() == 0) {
    return gf.createGeometryCollection(null);
  } else if (polygons.size() == 1) {
    return polygons.get(0);
  } else {
    return gf.createMultiPolygon(
        (Polygon[]) polygons.toArray(new Polygon[polygons.size()]));
  }
}

代码示例来源:origin: geotools/geotools

@Override
public MultiPolygon createMultiPolygon(Polygon[] polygons) {
  if (polygons != null && polygons.length == 1) {
    return new SinglePolygonCollection(polygons, this);
  } else {
    return super.createMultiPolygon(polygons);
  }
}

代码示例来源:origin: locationtech/spatial4j

@Override
 public Shape build() {
  return makeShape(geometryFactory.createMultiPolygon(geoms.toArray(new Polygon[geoms.size()])));
 }
}

代码示例来源:origin: geotools/geotools

/**
   * Build a {@link MultiPolygon} using the polygon node made in previous steps of the parsing
   * process.
   */
  @Override
  public Geometry build(int polygonNode) throws CQLException {
    List<Geometry> polygonList = popGeometry(polygonNode);

    Polygon[] polygons = polygonList.toArray(new Polygon[polygonList.size()]);

    MultiPolygon multiPolygon = getGeometryFactory().createMultiPolygon(polygons);

    return multiPolygon;
  }
}

代码示例来源:origin: geotools/geotools

@Override
public Object parse(ElementInstance instance, Node node, Object value) throws Exception {
  Polygon polygon = (Polygon) node.getChildValue(Polygon.class);
  MultiPolygon surface = (MultiPolygon) node.getChildValue(MultiPolygon.class);
  if (polygon != null) {
    return gf.createMultiPolygon(new Polygon[] {polygon});
  } else {
    return surface;
  }
}

代码示例来源:origin: geotools/geotools

private Geometry decodeMultiPolygon(int shapeIndex) {
  Collection<Geometry> polygons = new ArrayList<Geometry>();
  for (int i = shapeIndex; i < binary.getShapes().length; i++) {
    if (binary.getShape(i).getParentOffset() == shapeIndex) {
      polygons.add(decodePolygon(i));
    }
  }
  return gf.createMultiPolygon(polygons.toArray(new Polygon[polygons.size()]));
}

代码示例来源:origin: geotools/geotools

public MultiPolygon createMultiPolygon(Polygon[] polygons) {
  if (containsCurves(polygons)) {
    return new MultiSurface(polygons, this, tolerance);
  }
  return delegate.createMultiPolygon(polygons);
}

代码示例来源:origin: geotools/geotools

private static Geometry smoothMultiPolygon(
    GeometryFactory factory, GeometrySmoother smoother, Geometry geom, double fit) {
  final int N = geom.getNumGeometries();
  Polygon[] smoothed = new Polygon[N];
  for (int i = 0; i < N; i++) {
    smoothed[i] = smoother.smooth((Polygon) geom.getGeometryN(i), fit);
  }
  return factory.createMultiPolygon(smoothed);
}

代码示例来源:origin: geotools/geotools

private MultiPolygon readMultiPolygon() throws IOException, ParseException {
  int numGeom = dis.readInt();
  Polygon[] geoms = new Polygon[numGeom];
  for (int i = 0; i < numGeom; i++) {
    Geometry g = readGeometry();
    if (!(g instanceof Polygon))
      throw new ParseException(INVALID_GEOM_TYPE_MSG + "MultiPolygon");
    geoms[i] = (Polygon) g;
  }
  return factory.createMultiPolygon(geoms);
}

代码示例来源:origin: geotools/geotools

private GeometryCollection wrap(Geometry geometry) {
    if (geometry instanceof Point) {
      return geometry.getFactory().createMultiPoint(new Point[] {(Point) geometry});
    } else if (geometry instanceof LineString) {
      return geometry.getFactory()
          .createMultiLineString(new LineString[] {(LineString) geometry});
    } else if (geometry instanceof Polygon) {
      return geometry.getFactory().createMultiPolygon(new Polygon[] {(Polygon) geometry});
    }

    throw new IllegalArgumentException("Unable to create multi geometry from " + geometry);
  }
}

相关文章