Я использовал следующий код после выполнения этого руководства для выполнения kde с координатами (широта и долгота), которые представляют положение деревьев из переписи уличных деревьев Нью-Йорка 2015 года.
import numpy as np
from scipy import stats
xmin, xmax = min(zip_latitudes), max(zip_latitudes)
ymin, ymax = min(zip_longitudes), max(zip_longitudes)
X, Y = np.mgrid[xmin:xmax:100j, ymin:ymax:100j]
positions = np.vstack([X.ravel(), Y.ravel()])
values = np.vstack([zip_latitudes, zip_longitudes])
kernel = stats.gaussian_kde(values)
Z = np.reshape(kernel(positions).T, X.shape)
Затем я рисую результаты, которые напоминают тепловую карту, используя matplotlib, выполнив следующие действия:
fig = plt.figure()
ax = fig.add_subplot(111)
ax.imshow(np.rot90(Z), cmap=plt.cm.gist_earth_r,extent=[xmin, xmax, ymin, ymax])
ax.plot(zip_latitudes, zip_longitudes, 'k.', markersize=2)
ax.set_xlim([xmin, xmax])
ax.set_ylim([ymin, ymax])
plt.show()
Однако мне нужны координаты, чтобы добавить их на график leaflet.js и mapbox.js. Я попытался напечатать некоторые элементы в Z
, но я не уверен, что это правильно. Мой план состоял в том, чтобы использовать python для получения координат, затем записать результаты в csv, использовать d3 и lealet.js для создания тепловых карт на карте. Какие-либо предложения?
X
иY
содержат координаты, связанные с каждым значением вZ
. - person ali_m   schedule 17.04.2017kernel = stats.gaussian_kde(values)
Z = np.reshape(kernel(positions).T, X.shape)
, которые я мог бы затем легко отобразить на карте листовки . Кроме того, я использовал пакет leaflet.heat для получения тепловой карты, но я не уверен, что это то же самое, что и kde. - person dreamin   schedule 18.04.2017kernel = stats.gaussian_kde(values) Z = np.reshape(kernel(positions).T, X.shape)
.Z
это не набор строк, это прямоугольная матрица, где значение вZ[i, j]
соответствует KDE в координатеX[i, j], Y[i, j]
. Если вам нужны контурные линии, вы можете сначала создать контурный график с помощью matplotlib, а затем извлечь из него координаты линий (например, stackoverflow.com /a/18309914/1461210). Я никогда раньше не использовал leaflet.js, поэтому не знаю, способен ли он делать это изначально. - person ali_m   schedule 18.04.2017