地図上に地域の特徴をプロットしたいのですが、人口密度が非常に不均一なため、大きなタイルが誤って注目を集めてしまいます。郵便番号ごとの (テストの点数などの) 平均を考えてみてください。
高解像度の地図を利用して、居住地域やその中の密度を分離することができます。以下の Python コードは、各ピクセルの平均密度に従って色付けされたラスターを生成します。
しかし、私が本当に必要としているのは、同じ地域のコロプレス マップ (この場合はハンガリーの郵便番号) からの色付けですが、とにかくラスターに表示されるポイントのみに影響する色付けです。ラスターは、ピクセルのガンマ (または、3D アナログの高さ) しか決定できませんでした。これについての良い方法は何ですか?
なんとなくrasterio.mask.mask
?
(ちなみに、郵便番号の境界とのオーバーレイもいいですが、それが でどのように機能するかについてはよく理解していGeoViews
ます。)
import rasterio
import os
import datashader as ds
from datashader import transfer_functions as tf
import xarray as xr
from matplotlib.cm import viridis
# download a GeoTIFF from this location: https://data.humdata.org/dataset/hungary-high-resolution-population-density-maps-demographic-estimates
data_path = '~/Downloads/'
file_name = 'HUN_youth_15_24.tif' # young people
file_path = os.path.join(data_path, file_name)
src = rasterio.open(file_path)
da = xr.open_rasterio(file_path)
cvs = ds.Canvas(plot_width=5120, plot_height=2880)
img = tf.shade(cvs.raster(da,layer=1), cmap=viridis)
ds.utils.export_image(img, "map", export_path=data_path, fmt=".png")