Skip to content

Instantly share code, notes, and snippets.

@karussell
Created March 18, 2019 16:40
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save karussell/df4e22a032b9234d06740e1521ace5ba to your computer and use it in GitHub Desktop.
Save karussell/df4e22a032b9234d06740e1521ace5ba to your computer and use it in GitHub Desktop.
mvt
List<Number[]> edgeList = isochrone.searchEdges(qr.getClosestNode());
IGeometryFilter acceptAllGeomFilter = geometry -> true;
// TODO: Your tile extent here
Envelope tileEnvelope = new Envelope(0d, 100d, 0d, 100d);
MvtLayerParams layerParams = new MvtLayerParams(); // Default extent
GeometryFactory geometryFactory = new GeometryFactory();
Geometry[] edgeListGeometry = new Geometry[edgeList.size()];
for (int edgeCounter = 0; edgeCounter < edgeList.size(); edgeCounter++) {
Number[] edge = edgeList.get(edgeCounter);
edgeListGeometry[edgeCounter] = geometryFactory.createLineString(
new Coordinate[]{new Coordinate(edge[0].doubleValue(), edge[1].doubleValue()),
new Coordinate(edge[2].doubleValue(), edge[3].doubleValue())});
}
logger.info("start encoding: " + resultStr + ", edges:" + edgeListGeometry.length);
TileGeomResult tileGeom = JtsAdapter.createTileGeom(
geometryFactory.createGeometryCollection(edgeListGeometry),
tileEnvelope,
geometryFactory,
layerParams,
acceptAllGeomFilter);
VectorTile.Tile.Layer.Builder layerBuilder = MvtLayerBuild.newLayerBuilder("myLayerName", layerParams);
MvtLayerProps layerProps = new MvtLayerProps();
IUserDataConverter userDataConverter = new UserDataKeyValueMapConverter();
List<VectorTile.Tile.Feature> features = JtsAdapter.toFeatures(tileGeom.mvtGeoms, layerProps, userDataConverter);
MvtLayerBuild.writeProps(layerBuilder, layerProps);
VectorTile.Tile mvt = VectorTile.Tile.newBuilder().addLayers(layerBuilder.addAllFeatures(features).build()).build();
byte[] bytes = mvt.toByteArray();
String tookStr = "" + sw.stop().getSeconds() * 1000;
logger.info("took: " + tookStr);
return Response.fromResponse(Response.ok(bytes, new MediaType("application", "octet-stream")).build())
.header("X-GH-Took", tookStr)
.build();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment