OSM 경로 데이터에서 생성 된 모양 파일을 줄이려고합니다. VTS에서 DouglasPeuckerSimplifier 구현을 사용하고 있습니다. 특정 GTFS (일반 대중 교통 피드 사양)에 대한 루틴 맵의 geojson을 구축하고 싶습니다. 너무 무겁기 때문에지도에서 바로 세트를 사용할 수 없습니다. 멀티 메가 바이트 크기의 json 파일로 끝납니다.DouglasPeuckerSimplifier 사용법
내 코드는 다음과 같이 보입니다. 유효한 입력 배열을 가지고 있다는 확신을주기 위해 입력을 채우기 위해 루프가 삽입되어 있습니다. 제가 질의하는 것은 실제로 마지막 3 행이며, OSM에서 경로를 가져 와서 점의 수를 줄이는 일반적인 개념입니다. Douglas-Peucker가 정확히 생각한 것입니다.
ArrayList<Geometry> points = new ArrayList <Geometry>();
GeometryFactory gf= new GeometryFactory();
for (Object sh : shape_points){
double thisShapeLat=((Shapes)sh).getshapePtLat();
double thisShapeLon=((Shapes)sh).getshapePtLon();
// void identical consecutive points
if (lastShapeLat == thisShapeLat && lastShapeLon == thisShapeLon) continue;
lastShapeLat = thisShapeLat;
lastShapeLon = thisShapeLon;
Coordinate coord= new Coordinate(thisShapeLon,thisShapeLat);
// System.err.println("added coord="+coord);
points.add(gf.createPoint(coord));
}
Geometry[] points_ar = (Geometry [])points.toArray(new Geometry[points.size()]);
GeometryCollection geometries = new GeometryCollection(points_ar, gf);
DouglasPeuckerSimplifier simplifier = new DouglasPeuckerSimplifier(geometries);
simplifier.setDistanceTolerance(0.00001);
Geometry result=simplifier.getResultGeometry();
은 아무리 공차 설정 어떤 값을, I는 출력 (결과) (점)에서 동일한 포인트를 얻을 수 없습니다. 전혀 아무것도하지 않습니다. 또한 같은 결과 (즉, 아무 것도없는)로 simplify()를 정적으로 호출했습니다.