Вес расстояния, используемый для метода кластеризации max_p в Писале - PullRequest
0 голосов
/ 11 октября 2019

У меня есть набор геопространственных точечных данных с данными о скорости ветра (столбец WndSpdAvg в rev.csv). Я хочу сгруппировать эти точки на основе данных о скорости ветра с геопространственными ограничениями. Я знаю, что метод регионализации max_p в пакете pysal способен делать это с весами смежности. Поскольку у меня есть точечный набор данных вместо полигонов, я не могу напрямую генерировать веса смежности, поэтому я попробовал два метода. Сначала используйте функцию pysal pysal.threshold_binaryW_from_shapefile, чтобы сгенерировать вес полосы расстояний, который обрезается на 12 км, что является разрешением набора точечных данных, поэтому каждая точка имеет максимум 4 соседей. Другой метод, который я попробовал, - использовать GeoDa для генерации gwt-файла с дистанционным весом, а затем импортировать gwt-файл обратно в pysal. Вес расстояния, созданный в писале, равен pysal.weights.Distance.DistanceBand, а вес, созданный в GeoDa, - объект pysal.weights.weights.W. Они имеют те же mean_neighbors и некоторые другие атрибуты, но по какой-то причине я могу запустить max_p с весом, созданным GeoDa w1, но не с тем, который создан в pysal w. Может ли кто-нибудь помочь мне определить проблему здесь? В чем разница между двумя весами? Я действительно надеюсь, что смогу сгенерировать правильный вес, используя pysal, поэтому мне не нужно переходить между GeoDa и python

import pysal
import pysal.core.FileIO as FileIO
import numpy as np
import pandas as pd

w = pysal.threshold_binaryW_from_shapefile('south_texas_pts.shp',12000)
w1 = pysal.open('south_texas_distance_weight.gwt','r').read()
data = pd.read_csv('rev.csv',index_col=0)
wnd_data = np.asarray(data['WndSpdAvg']).reshape((1261,1))
np.random.seed(123)
result = pysal.Maxp(w1, wnd_data,floor=60,floor_variable =np.ones((1261,1)),initial = 99)

Все необходимые данные здесь

...