I suggest different algorithm:
Surround each building with 300m radius circle polygon. If your building is point - it's easy. Else - extract each building to a point at his centroid.
Calculate how much vacant lots exist in each building 300m surrounding polygon. Again if the lot is polygon - Extract it to point at his centroid.
[Usually GIS tools like ArcGis, GM... have build in tool for all this together. Not familiar with QGIS. Usually they plot it as heat map].
In Global Mapper it's Density Grid tool. In QGIS I suggest if possible to work directly with .shp files, store them in PostGis DB (All open source and free) and then just execute PostGis query's (This is what the build in tools in GIS SW doing in the background anyway...). For example (maybe the last select has sql bug, the point is demonstrate the intention...):
WITH
build AS ( --buildings polygons to points
SELECT ST_Centroid(buildings.geom) AS centroid_geom, buildings.id AS id
FROM buildings
),
lots AS ( --vacant lots polygons to points
SELECT ST_Centroid(vacant_lots.geom) AS centroid_geom, vacant_lots.id AS id
FROM vacant_lots
),
build_surrounding AS ( --build radius arroung each building
SELECT id AS id, ST_Buffer(build.centroid_geom, 300) --Assuming layers in metric units
FROM build
)
SELECT sum(ST_Within(lots.centroid_geom, build_surrounding)) AS counter, build_surrounding.id
FROM build_surrounding, lots;