A method, comprising: accessing a plurality of location estimates (10, 15, 205, 210, 215, 220, 225, 230, 235, 240) for one or more mobile devices within a predefined area over a time period; and determining that the one or more mobile devices are in motion if the plurality of location estimates with successive time stamps indicate that the one or more mobile devices have moved more than a predetermined minimum threshold during the time period; determining a set of location estimates for one or more mobile devices in motion; characterized in that the method further comprises: determining a plurality of vectors (605, 510, 625, 630, 640, 645, 650, 655, 660, 665, 705, 710, 715, 720, 725, 905, 910, 915) for the set of location estimates using distances between location estimates and successively determined location estimates for the one or more mobile devices in motion; grouping (825, 830) the plurality of vectors associated with the set of location estimates into one or more clusters (305, 310, 315, 320, 325, 330, 335, 700, 900); identifying, by a processor, one or more corridors within the predefined area using the set of location estimates and the one or more clusters, each corridor being a pathway along which a user may travel to or from a point of interest; and storing information relating to the one or more corridors in a memory. accessing a plurality of location estimates (10, 15, 205, 210, 215, 220, 225, 230, 235, 240) for one or more mobile devices within a predefined area over a time period; and determining that the one or more mobile devices are in motion if the plurality of location estimates with successive time stamps indicate that the one or more mobile devices have moved more than a predetermined minimum threshold during the time period; determining a set of location estimates for one or more mobile devices in motion; characterized in that the method further comprises: determining a plurality of vectors (605, 510, 625, 630, 640, 645, 650, 655, 660, 665, 705, 710, 715, 720, 725, 905, 910, 915) for the set of location estimates using distances between location estimates and successively determined location estimates for the one or more mobile devices in motion; grouping (825, 830) the plurality of vectors associated with the set of location estimates into one or more clusters (305, 310, 315, 320, 325, 330, 335, 700, 900); identifying, by a processor, one or more corridors within the predefined area using the set of location estimates and the one or more clusters, each corridor being a pathway along which a user may travel to or from a point of interest; and storing information relating to the one or more corridors in a memory. determining a plurality of vectors (605, 510, 625, 630, 640, 645, 650, 655, 660, 665, 705, 710, 715, 720, 725, 905, 910, 915) for the set of location estimates using distances between location estimates and successively determined location estimates for the one or more mobile devices in motion; grouping (825, 830) the plurality of vectors associated with the set of location estimates into one or more clusters (305, 310, 315, 320, 325, 330, 335, 700, 900); identifying, by a processor, one or more corridors within the predefined area using the set of location estimates and the one or more clusters, each corridor being a pathway along which a user may travel to or from a point of interest; and storing information relating to the one or more corridors in a memory.