Skip to content

Instantly share code, notes, and snippets.

@avanetten
Last active December 22, 2017 14:22
Show Gist options
  • Save avanetten/b295e89f6fa9654c9e9e480bdb2e4d60 to your computer and use it in GitHub Desktop.
Save avanetten/b295e89f6fa9654c9e9e480bdb2e4d60 to your computer and use it in GitHub Desktop.
Create building mask
#!/usr/bin/env python2
# -*- coding: utf-8 -*-
from osgeo import gdal, ogr
###############################################################################
def create_building_mask(rasterSrc, vectorSrc, npDistFileName='',
noDataValue=0, burn_values=1):
'''
Create building mask for rasterSrc,
Similar to labeltools/createNPPixArray() in spacenet utilities
'''
## open source vector file that truth data
source_ds = ogr.Open(vectorSrc)
source_layer = source_ds.GetLayer()
## extract data from src Raster File to be emulated
## open raster file that is to be emulated
srcRas_ds = gdal.Open(rasterSrc)
cols = srcRas_ds.RasterXSize
rows = srcRas_ds.RasterYSize
## create First raster memory layer, units are pixels
# Change output to geotiff instead of memory
memdrv = gdal.GetDriverByName('GTiff')
dst_ds = memdrv.Create(npDistFileName, cols, rows, 1, gdal.GDT_Byte,
options=['COMPRESS=LZW'])
dst_ds.SetGeoTransform(srcRas_ds.GetGeoTransform())
dst_ds.SetProjection(srcRas_ds.GetProjection())
band = dst_ds.GetRasterBand(1)
band.SetNoDataValue(noDataValue)
gdal.RasterizeLayer(dst_ds, [1], source_layer, burn_values=[burn_values])
dst_ds = 0
return
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment