Scalable and efficient cutting of map tiles
First Claim
1. A method of generating map tiles for a mapping application, the method comprising:
- receiving a request from a user device for a map tile at a particular zoom level;
receiving a set of vectors, each vector representing a particular road segment in the map tile;
rasterizing the set of vectors to identify a set of active pixels through which the vectors pass based on the particular zoom level;
generating a connectivity byte mask that identifies a direction from which vectors enter a pixel for each active pixel in the connectivity byte mask;
generating an undirected graph of vertices and edges connecting the vertices from the connectivity byte mask;
reducing a number of the vertices within the undirected graph;
creating a simplified map tile with less data than the map tile based on the reduced number of vertices; and
transmitting the simplified map tile to the user device for rendering in the mapping application.
1 Assignment
0 Petitions
Accused Products
Abstract
A process is provided that reduces the amount of data for a map tile that could not be displayed separately on the scale of that tile. The process generates an equivalent of the road data by rasterizing the vectors representing road segments lying within a tile and generating a connectivity mask that keeps track of which pixels are connected to which other pixels along the vectors. The process constructs an undirected graph. Each “on” pixel of the undirected graph represents a vertex and the vertices are connected by edges generated from the connectivity graph, but without a set direction. The process traces the undirected graph to generate chains of connected road segments and takes the chains and simplifies them in order to reduce the amount of data that must be stored and transmitted for the tile in order to produce all the visible roads of the tile at that scale.
31 Citations
26 Claims
-
1. A method of generating map tiles for a mapping application, the method comprising:
-
receiving a request from a user device for a map tile at a particular zoom level; receiving a set of vectors, each vector representing a particular road segment in the map tile; rasterizing the set of vectors to identify a set of active pixels through which the vectors pass based on the particular zoom level; generating a connectivity byte mask that identifies a direction from which vectors enter a pixel for each active pixel in the connectivity byte mask; generating an undirected graph of vertices and edges connecting the vertices from the connectivity byte mask; reducing a number of the vertices within the undirected graph; creating a simplified map tile with less data than the map tile based on the reduced number of vertices; and transmitting the simplified map tile to the user device for rendering in the mapping application. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
7. A method of generating map tiles for a mapping application, the method comprising:
-
receiving a vector representing a road in an original map tile; generating an undirected graph of vertices and edges connecting the vertices from the vector; identifying a current vertex of the undirected graph in a chain of vertices connected by edges; iteratively, for the chain of vertices; identifying an available edge connecting the currently identified vertex to a candidate vertex; making the candidate vertex the currently identified vertex; adding the currently identified vertex to the chain; setting the edge to be unavailable; and repeating the iterated operations until the then currently identified vertex has no available edges for making connections; and simplifying the vector by eliminating intermediate vertices in the chain of vertices in order to reduce a number of vertices in the chain of vertices. - View Dependent Claims (8)
-
-
9. A method of eliminating data redundancy in a map tile, the method comprising:
-
receiving a plurality of vectors representing road segments in a geographical area represented by the map tile; identifying a set of pixels through which the vectors pass by rasterizing the vectors to identify a set of active pixels through which the vectors pass; generating a connectivity byte mask that identifies a direction from which vectors enter a pixel for each active pixel in the connectivity byte mask in order to identify which active pixels are directly connected to adjacent active pixels; generating an undirected graph of vertices and edges from the connectivity byte mask; generating a traced graph by identifying chains of vertices connected by edges in the undirected graph; and simplifying the traced graph to generate a set of vertices that contain the relevant data from the vectors. - View Dependent Claims (10, 11, 12, 13, 14, 15)
-
-
16. A non-transitory machine readable medium storing a program that when executed by at least one processing unit generates map tiles for a mapping application, the program comprising sets of instructions for:
-
receiving a request from a user device for a map tile at a particular zoom level; receiving a set of vectors, each vector representing a particular road segment in the map tile; rasterizing the set of vectors to identify a set of active pixels through which the vectors pass based on the particular zoom level; generating a connectivity byte mask that identifies a direction from which vectors enter a pixel for each active pixel in the connectivity byte mask; generating an undirected graph of vertices and edges connecting the vertices from the connectivity byte mask; reducing a number of the vertices within the undirected graph; creating a simplified map tile with less data than the map tile based on the reduced number of vertices; and transmitting the simplified map tile to the user device for rendering in the mapping application. - View Dependent Claims (17, 18, 19, 20)
-
-
21. A non-transitory machine readable medium storing a program that when executed by at least one processing unit generates map tiles for a mapping application, the program comprising sets of instructions for:
-
receiving a vector representing a road in an original map tile; generating an undirected graph of vertices and edges connecting the vertices from the vector; identifying a current vertex of the undirected graph in a chain of vertices connected by edges; iteratively, for the chain of vertices; identifying an available edge connecting the currently identified vertex to a candidate vertex; making the candidate vertex the currently identified vertex; adding the currently identified vertex to the chain; setting the edge to be unavailable; and repeating the iterated operations until the then currently identified vertex has no available edges for making connections; and simplifying the vector by eliminating intermediate vertices in the chain of vertices in order to reduce a number of vertices in the chain of vertices. - View Dependent Claims (22)
-
-
23. A non-transitory machine readable medium storing a program that when executed by at least one processing unit eliminates data redundancy in a map tile, the program comprising sets of instructions for:
-
receiving a plurality of vectors representing road segments in a geographical area represented by the map tile; identifying a set of pixels through which the vectors pass by rasterizing the vectors to identify a set of active pixels through which the vectors pass; generating a connectivity byte mask that identifies a direction from which vectors enter a pixel for each active pixel in the connectivity byte mask in order to identify which active pixels are directly connected to adjacent active pixels; generating an undirected graph of vertices and edges from the connectivity byte mask; generating a traced graph by identifying chains of vertices connected by edges in the undirected graph; and simplifying the traced graph to generate a set of vertices that contain the relevant data from the vectors. - View Dependent Claims (24, 25, 26)
-
Specification