A method of generating a wireless network access point model for determining locations within an area, the method comprising: receiving, by one or more server computing devices having one or more processors, a plurality of scan vectors, each scan vector representing a set of signal strengths for a set of wireless network access point identifiers and being associated with a location within the area at which a mobile device moving through the area measured the set of signal strengths; setting, by the one or more server computing devices, a maximum number of clusters; setting, by the one or more server computing devices, a minimum similarity value; performing, by the one or more server computing devices, a split phase to generate a set of clusters including: assigning each given scan vector of the plurality of scan vectors to a cluster based on a vector difference between the given scan vector and vector data of the assigned cluster, identifying one or more bad scan vectors of the plurality of scan vectors based on whether a vector difference each of the one or more bad scan vectors and vector data assigned to a center of a cluster to which each of the one or more bad scan vectors is assigned is less than the minimum similarity value, selecting a worst one of the one or more bad scan vectors having a greatest vector difference between the one or more bad scan vectors and vector data of a center of an assigned cluster for the worst scan vector, using the selected worst one as a center of a new cluster and thereby increasing a number of clusters in the set of clusters, recomputing vector data assigned to centers of any clusters of the set of clusters, and iterating, by the one or more server computing devices, through the split phase until the number of clusters in the set of clusters equals the maximum number of clusters or there are no one or more bad scan vectors identified; and generating the model of the area based on the set of clusters. receiving, by one or more server computing devices having one or more processors, a plurality of scan vectors, each scan vector representing a set of signal strengths for a set of wireless network access point identifiers and being associated with a location within the area at which a mobile device moving through the area measured the set of signal strengths; setting, by the one or more server computing devices, a maximum number of clusters; setting, by the one or more server computing devices, a minimum similarity value; performing, by the one or more server computing devices, a split phase to generate a set of clusters including: assigning each given scan vector of the plurality of scan vectors to a cluster based on a vector difference between the given scan vector and vector data of the assigned cluster, identifying one or more bad scan vectors of the plurality of scan vectors based on whether a vector difference each of the one or more bad scan vectors and vector data assigned to a center of a cluster to which each of the one or more bad scan vectors is assigned is less than the minimum similarity value, selecting a worst one of the one or more bad scan vectors having a greatest vector difference between the one or more bad scan vectors and vector data of a center of an assigned cluster for the worst scan vector, using the selected worst one as a center of a new cluster and thereby increasing a number of clusters in the set of clusters, recomputing vector data assigned to centers of any clusters of the set of clusters, and assigning each given scan vector of the plurality of scan vectors to a cluster based on a vector difference between the given scan vector and vector data of the assigned cluster, identifying one or more bad scan vectors of the plurality of scan vectors based on whether a vector difference each of the one or more bad scan vectors and vector data assigned to a center of a cluster to which each of the one or more bad scan vectors is assigned is less than the minimum similarity value, selecting a worst one of the one or more bad scan vectors having a greatest vector difference between the one or more bad scan vectors and vector data of a center of an assigned cluster for the worst scan vector, using the selected worst one as a center of a new cluster and thereby increasing a number of clusters in the set of clusters, recomputing vector data assigned to centers of any clusters of the set of clusters, and iterating, by the one or more server computing devices, through the split phase until the number of clusters in the set of clusters equals the maximum number of clusters or there are no one or more bad scan vectors identified; and generating the model of the area based on the set of clusters.