Разделение страны географически на равноудаленные точки (Python)

#python #pandas #numpy

Вопрос:

Я пытаюсь разделить карту Панамы на равноудаленные широтные,длинные координаты и использую numpy, чтобы создать линейное пространство, которое разделит их, основываясь на длинных широтах в нижней, нижней, верхней и верхней части карты. Для этого я использую вложенный цикл for.

Проблема в том, что, несмотря на правильное количество уникальных широт в окончательном словаре, я получаю только одну уникальную долготу. Можете ли вы помочь мне исправить ошибку в цикле, чтобы окончательный словарь, помещенный в конечный кадр данных, давал 646 в ответ на

 grid_centroid.long.nunique()

 

Огромное спасибо!

 import pandas as pd
import numpy as np

bottomLeft = (7.239013, -82.94546842973114)
bottomRight = (7.239013, -77.177479)
topLeft = (9.62079503922844, -82.94546842973114)
topRight = (9.62079503922844, -77.177479)

df = pd.read_csv('sites_unique.csv')


cols = np.linspace(bottomLeft[1], bottomRight[1], num=276)
rows = np.linspace(bottomLeft[0], topLeft[0], num=646)
df['col'] = np.searchsorted(cols, df['Average of lat'], 'right')
df['row'] = np.searchsorted(rows, df['Average of long'], 'right')

grid_dict = {'lat':[],'long':[]}

for l in range(275):
    lat_index_init = l
    for i in range(645):
        lon_init_index = i
        grid_dict['lat'].append(rows[lat_index_init])
        grid_dict['long'].append(cols[lon_index_init])            
        i   1        
    l   1
    i = 0

grid_centroid = pd.DataFrame(grid_dict)



 

Ответ №1:

быстрое решение, понял это, и это было очень просто

 bottomLeft = (7.239013, -82.94546842973114)
bottomRight = (7.239013, -77.177479)
topLeft = (9.62079503922844, -82.94546842973114)
topRight = (9.62079503922844, -77.177479)

cols = np.linspace(bottomLeft[1], bottomRight[1], num=646)
rows = np.linspace(bottomLeft[0], topLeft[0], num=275)

grid_dict = {'lat':[],'long':[]}

for l in range(275):
    lat_index_init = l
    for i in range(645):
        grid_dict['lat'].append(rows[l])
        grid_dict['long'].append(cols[i])            
        i   1        
    l   1
    i = 0
 

дает желаемый результат. Я надеюсь, что это поможет другим людям, пытающимся создать геопространственные сетки

Всего наилучшего