地理分割不匹配

时间:2019-06-18 10:37:22

标签: python geospatial rasterio

我正在进行project,我们需要对地理空间数据进行细分。该数据集包含1980到2018年整个世界的火灾天气指数(FWI)(一种火灾隐患分类系统)。我们希望根据NUTS(或GADM)对数据进行细分,以便能够进行预测并研究一段时间内可能出现的模式。

我们必须处理:

  • FWI数据集(分辨率:0.7度〜80x80 Km)
  • NUTS(和GADM)形状文件

我们的方法如下:

  1. 使用geopandas导入形状文件
  2. 使用xarray导入FWI数据集
  3. 光栅化shapefile(adapted code
  4. 获取按NUTS / GADM细分的FWI数据

确定了几个问题:

  • 并非所有感兴趣区域的区域均已正确分割
  • 似乎在可用的NUTS / GADM和FWI点之间存在偏移量

使用的功能如下:

def transform_from_latlon(lat, lon):
    lat = np.asarray(lat)
    lon = np.asarray(lon)
    trans = Affine.translation(lon[0], lat[0])
    scale = Affine.scale(lon[1] - lon[0], lat[1] - lat[0])
    return  trans * scale

def rasterize(shapes, coords, latitude='lat', longitude='lon',
              fill=np.nan, **kwargs):
    """Rasterize a list of (geometry, fill_value) tuples onto the given
    xray coordinates. This only works for 1d latitude and longitude
    arrays.
    """
    transform = transform_from_latlon(coords[latitude], coords[longitude])

    out_shape = (len(coords[latitude]), len(coords[longitude]))
    #requires the features library from rasterio
    raster = features.rasterize(shapes, out_shape=out_shape,
                                fill=fill, transform=transform, all_touched=True, dtype=float, **kwargs)
    spatial_coords = {latitude: coords[latitude], longitude: coords[longitude]}
    return xr.DataArray(raster, coords=spatial_coords, dims=(latitude, longitude))

所描述的分割过程如下图所示。

Segmentation result.

可以看出,在分割的数据和实际的地图区域之间似乎存在偏移。而且,有些岛屿甚至没有被分割捕获。

0 个答案:

没有答案