Created
March 18, 2019 16:40
-
-
Save karussell/df4e22a032b9234d06740e1521ace5ba to your computer and use it in GitHub Desktop.
mvt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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