當前位置: 首頁>>代碼示例>>Java>>正文


Java Polygon.getInteriorRingN方法代碼示例

本文整理匯總了Java中com.vividsolutions.jts.geom.Polygon.getInteriorRingN方法的典型用法代碼示例。如果您正苦於以下問題:Java Polygon.getInteriorRingN方法的具體用法?Java Polygon.getInteriorRingN怎麽用?Java Polygon.getInteriorRingN使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在com.vividsolutions.jts.geom.Polygon的用法示例。


在下文中一共展示了Polygon.getInteriorRingN方法的4個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Java代碼示例。

示例1: polyStats

import com.vividsolutions.jts.geom.Polygon; //導入方法依賴的package包/類
private static FeatureStats polyStats(Geometry geom) {
  final FeatureStats featureStats = new FeatureStats();

  for (int i = 0; i < geom.getNumGeometries(); ++i) {
    final Polygon nextPoly = (Polygon) geom.getGeometryN(i);

    // Stats: exterior ring
    final LineString exteriorRing = nextPoly.getExteriorRing();
    featureStats.totalPts += exteriorRing.getNumPoints();
    featureStats.repeatedPts += checkRepeatedPoints2d(exteriorRing);

    // Stats: interior rings
    for (int ringIndex = 0; ringIndex < nextPoly.getNumInteriorRing(); ++ringIndex) {

      final LineString nextInteriorRing = nextPoly.getInteriorRingN(ringIndex);
      featureStats.totalPts += nextInteriorRing.getNumPoints();
      featureStats.repeatedPts += checkRepeatedPoints2d(nextInteriorRing);
    }
  }

  return featureStats;
}
 
開發者ID:OrdnanceSurvey,項目名稱:vt-support,代碼行數:23,代碼來源:JtsGeomStats.java

示例2: toJSON

import com.vividsolutions.jts.geom.Polygon; //導入方法依賴的package包/類
public static JSONArray toJSON(Polygon poly)
{
	JSONArray coords = new JSONArray(1 + poly.getNumInteriorRing());

	LineString shell = poly.getExteriorRing();

	boolean inverse = shell.getNumPoints() > 1 ? !CoordinateSequences.isCCW(shell.getCoordinateSequence()) : false;
	coords.put(toJSON(shell, inverse));

	if (poly.getNumInteriorRing() > 0)
	{
		int nRings = poly.getNumInteriorRing();

		for (int j = 0; j < nRings; ++j)
		{
			LineString ring = poly.getInteriorRingN(j);
			inverse = ring.getNumPoints() > 1 ? CoordinateSequences.isCCW(ring.getCoordinateSequence()) : false;
			coords.put(toJSON(ring, inverse));
		}
	}

	return coords;
}
 
開發者ID:GIScience,項目名稱:openrouteservice,代碼行數:24,代碼來源:GeometryJSON.java

示例3: removeCollinearVertices

import com.vividsolutions.jts.geom.Polygon; //導入方法依賴的package包/類
/**
 * Removes collinear vertices from the provided {@link Polygon}.
 * 
 * @param polygon the instance of a {@link Polygon} to remove collinear vertices from.
 * @return a new instance of the provided {@link Polygon} without collinear vertices.
 */
static Polygon removeCollinearVertices(final Polygon polygon) {
    if (polygon == null) {
        throw new NullPointerException("The provided Polygon is null");
    }

    // reuse existing factory
    final GeometryFactory gf = polygon.getFactory();

    // work on the exterior ring
    LineString exterior = polygon.getExteriorRing();
    LineString shell = removeCollinearVertices(exterior);
    if ((shell == null) || shell.isEmpty()) {
        return null;
    }

    // work on the holes
    List<LineString> holes = new ArrayList<LineString>();
    final int size = polygon.getNumInteriorRing();
    for (int i = 0; i < size; i++) {
        LineString hole = polygon.getInteriorRingN(i);
        hole = removeCollinearVertices(hole);
        if ((hole != null) && !hole.isEmpty()) {
            holes.add(hole);
        }
    }

    return gf.createPolygon((LinearRing) shell, holes.toArray(new LinearRing[holes.size()]));
}
 
開發者ID:GIScience,項目名稱:openrouteservice,代碼行數:35,代碼來源:JTS.java

示例4: getArea

import com.vividsolutions.jts.geom.Polygon; //導入方法依賴的package包/類
public static double getArea(Geometry geom, Boolean inMeters) throws Exception
{
	if (inMeters) {
		if (geom instanceof Polygon)
		{
			Polygon poly = (Polygon) geom;
			double area = Math.abs(getSignedArea(poly.getExteriorRing().getCoordinateSequence()));
			
			for (int i = 0; i < poly.getNumInteriorRing(); i++) {
				LineString hole =	poly.getInteriorRingN(i);
				area -= Math.abs(getSignedArea(hole.getCoordinateSequence()));
			}
			
			return area;
		}
		else if (geom instanceof LineString)
		{
			LineString ring = (LineString)geom;
			return getSignedArea(ring.getCoordinateSequence());
		}
		else
		{
			if (TRANSFORM_WGS84_SPHERICALMERCATOR == null) {
				String wkt = "PROJCS[\"WGS 84 / Pseudo-Mercator\",GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Mercator_1SP\"],PARAMETER[\"central_meridian\",0],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3857\"]]";
				CoordinateReferenceSystem crs = CRS.parseWKT(wkt);//  CRS.decode("EPSG:3857");
				TRANSFORM_WGS84_SPHERICALMERCATOR = CRS.findMathTransform(DefaultGeographicCRS.WGS84, crs, true);
			}


			Geometry transformedGeometry = JTS.transform(geom, TRANSFORM_WGS84_SPHERICALMERCATOR);
			return transformedGeometry.getArea();
		}
	} else {
		return geom.getArea();
	}
}
 
開發者ID:GIScience,項目名稱:openrouteservice,代碼行數:37,代碼來源:GeomUtility.java


注:本文中的com.vividsolutions.jts.geom.Polygon.getInteriorRingN方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。