2017-05-12 1 views
1

두 좌표 조건 사이의 거리에 함께 가입해야하는 두 개의 데이터 세트가 있습니다. distance_km를 계산하기 위해 Haversines formula을 사용하여 함수를 만들었지 만 소요 시간에 대한 성능 제약 조건을 다루고 있습니다.좌표 사이의 가장 가까운 거리에 두 개의 데이터 프레임을 결합하십시오.

데이터 세트 1 :

building_id | lat | lng 
-------------|-------|-------- 
     1  | 32.11 | -71.22 
     2  | 32.44 | -72.25 
     3  | 31.75 | -71.36``` 

데이터 집합 2 :

building_id | lat | lng 
------------|-------|-------- 
     4  | 31.65 | -73.52 
     5  | 32.78 | -70.21 
     6  | 36.15 | -72.49 

각 데이터 세트는 그들 만 이상의 건물을 가지고 있는데 데이터 세트 1 만 할 때 데이터 셋이 일치하고 싶습니다 km 단위의 거리는 0.0075보다 작습니다.

나는 현재 데이터 세트 1의 각 행을 반복하고 당신은 어떤 데이터를 제공하지 않았다

dataset_2_latlng_dict = dict(zip(dataset_2.lng,dataset_2.lat)) 

for index, row in dataset_1.iterrows(): 
    lat = row['lat'] 
    lng = row['lng'] 
    all_dist = [] 
    final_list = [] 
    for key, value in dataset_2_latlng_dict.iteritems(): 
     distance = utils.distance_km(key,value,lng,lat) 
     all_dist.extend([distance]) 
     final_list = sorted(all_dist, key=float) 
    dataset_1['min_distance'] = final_list[0] 
+0

테스트에 사용할 수있는 더 큰 데이터 세트가 있습니까? –

답변

0

최소 거리를 결정하기 위해 데이터 세트 2의 모든 위도 LNG 콤보를 찾고, 그래서이를 떠날 것입니다 오직 설명 적으로 대답하십시오.

예상 한대로 다른 건물과의 거리를 계산할 이유가 없습니다. 7.5 미터 사양은 위도와 경도가 서로 가까이있는 모든 건물에 대해 직접 일치하는 가까운 VERY이됨을 의미합니다.

위도 선 사이의 거리는 적도에서 110.6km에서 기둥에서 111.7km까지 다양합니다. 이 분석을 쉽게하기 위해 오류 마진과 라운드를 추가하면 약 100km 정도의 추정을 사용할 수 있습니다. 즉, 최대 거리 0.0075km는 최대 0.000075 도의 위도가됩니다. 따라서 0.0075km 거리 표준을 충족시킬 건물은 반드시 0.000075 도의 위도 표준을 충족해야합니다. 0.000075도 위도에있는 건물로 계산을 실행하는 것을 제한하면 훨씬 적은 수의 건물에 대해서만 계산을 수행하면됩니다.

위도로 위치 목록을 정렬 한 다음 위도가 다른 건물의 위도가 0.000075도 (7.5 미터) 인 건물에 대해서만 거리를 비교하여 목록을 탐색 할 수 있습니다.

관련 문제