Взвешенная интерполяция обратного расстояния в сетке (Python) - PullRequest
0 голосов
/ 28 апреля 2018

Моя проблема заключается в следующем: У меня есть клетка из клеток, каждая клетка имеет одинаковые размеры. Только 4 клетки помечены (содержат меру) и обозначены на изображении некоторыми точками. В моей программе на Python у меня есть фрейм данных, в котором каждая строка представляет ячейку сетки. Каждая ячейка имеет свои координаты и метку (то есть None для всех ячеек, кроме 4 ячеек, содержащих меру).

enter image description here

enter image description here

Я хочу сделать следующее: использовать обратную взвешенную интерполяцию, чтобы получить меру (метку) для каждой непомеченной ячейки в моей сетке. Есть ли у вас какие-либо предложения о том, как решить эту проблему, или вы знаете, есть ли похожие примеры кода, которые делают то же самое. Любая помощь приветствуется. Спасибо!

1 Ответ

0 голосов
/ 07 мая 2018

Я разобрался, как это решить. Сначала я рассчитал расстояние между каждой помеченной ячейкой и каждой немеченой ячейкой, используя эту функцию

def haversine(lon1, lat1, lon2, lat2):
"""
Calculate the great circle distance between two points 
on the earth (specified in decimal degrees)
"""
# convert decimal degrees to radians 
lon1, lat1, lon2, lat2 = map(radians, [lon1, lat1, lon2, lat2])
# haversine formula 
dlon = lon2 - lon1 
dlat = lat2 - lat1 
a = sin(dlat/2)**2 + cos(lat1) * cos(lat2) * sin(dlon/2)**2
c = 2 * asin(sqrt(a)) 
# Radius of earth in kilometers is 6371
km = 6371* c
return km

Затем я создал функцию с именем iwd, которая применяет обратную интерполяцию взвешенного расстояния по стандартной формуле. После этого я смог получить ярлык для каждой ячейки, что привело к следующему изображению:

enter image description here

...