Задача
Необходимо определить способ поиска 2-мильных кластеров точек, в которых каждая точка имеет значение.Определите области в 2 мили, у которых сумма (значение)> 50.
Данные
У меня есть данные, которые выглядят следующим образом:
ID COUNT LATITUDE LONGITUDE
187601546 20 025.56394 -080.03206
187601547 25 025.56394 -080.03206
187601548 4 025.56394 -080.03206
187601550 0 025.56298 -080.03285
Примерно 200 тыс. Записей.Мне нужно определить, есть ли области, где сумма больше, чем сумма, превышает 65 в области радиусом в одну милю (диаметр в 2 мили).
Использование каждой точки в качестве центра для области
Теперь у меня есть код на Python из другого проекта, который будет рисовать шейп-файл вокруг точки диаметром x следующим образом:
def poly_based_on_distance(center_lat,center_long, distance, bearing):
# bearing is in degrees
# distance in miles
# print ('center', center_lat, center_long)
destination = (vincenty(miles=distance).destination(Point(center_lat,
center_long), bearing).format_decimal())
И подпрограмма, чтобы вернуть пункт назначения, а затем посмотреть, какие точки находятся внутри радиуса.,
## This is the evaluation for overlap between points and
## area polyshapes
area_list = []
store_geo_dict = {}
for stores in locationdict:
location = Polygon(locationdict[stores])
for areas in AREAdictionary:
area = Polygon(AREAdictionary[areass])
if store.intersects(area):
area_list.append(areas)
store_geo_dict[stores] = area_list
area_list = []
На этом этапе я просто рисую круговой шейп-файл вокруг каждой из точек 200K, чтобы увидеть, какие другие были внутри, и выполнить подсчет.
Нужен алгоритм кластеризации?
Однако может существовать область с требуемой плотностью счета, где одна из точек находится не в центре.
Я знаком с кластерными алгоритмами, такими как DBSCAN, которые используют атрибуты для классификации, но это вопрос поиска кластеров плотности, использующих значение для каждой точки.Существует ли какой-либо алгоритм кластеризации, чтобы найти кластер из круга диаметром 2 мили, в котором внутреннее число>> 50?
Любые предложения, python или R, являются предпочтительными инструментами, но это широко открытый и, вероятно, одно-выкл, поэтому эффективность вычислений не является приоритетом.