# -*- coding: utf-8 -*-
import os

from osgeo import gdal, ogr

src_polygons = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'polygon.shp')

data_source = ogr.Open(src_polygons, 0)
layer = data_source.GetLayer(0)
projection = layer.GetSpatialRef()
current_feature = layer.GetNextFeature()
polygon = current_feature.GetGeometryRef().Clone()
layer = None
data_source = None

print polygon.ExportToWkt()

geotransform = [499000, 0.4, 0, 6095000, 0, -0.4]    

data_source = ogr.GetDriverByName('MEMORY').CreateDataSource('')
layer = data_source.CreateLayer('', projection, geom_type=ogr.wkbPolygon)
feature = ogr.Feature(layer.GetLayerDefn())    
feature.SetGeometry(polygon.Clone())
layer.CreateFeature(feature)

mask_ds = gdal.GetDriverByName('Mem').Create('', 5000, 5000, 1, gdal.GDT_Byte)
mask_ds.SetGeoTransform(geotransform)
mask_ds.SetProjection(projection.ExportToWkt())

gdal.RasterizeLayer(mask_ds, [1], layer, burn_values=[1], options=["ALL_TOUCHED"])

mask = mask_ds.ReadAsArray().astype(int)