I just ran into this issue with one of my datasets that I was intersecting with a small mask file.The reason that it was returning a blank output was that this particular dataset was so big (approximately 2.5 GB, it's the human footprint dataset of Alberta, Canada, and can be accessed here) that the intersect tool couldn't process it. Instead of returning an error, it simply returned a blank file. There are several ways to solve this using python. The more complicated solutions are:
1) Split the files into tiles using the ArcGIS Dice tool or something similar, intersect each tile, and then use Merge to bring together the results.
2) Create a feature layer, and then use select by location to select only the polygons that overlap. Then use that selection to create a new feature class, and run the intersect on the new (smaller) feature class (this takes at least four lines of code, and depending on how much RAM you have, may be impossible).
The solution that worked for me was to simply set the processing extent. In my case, I am intersecting small masks with a much bigger file. I dynamically set the processing extent for each small mask as they were processed:
import arcpy
def SetExtent(shapefile):
arcpy.env.extent = shapefile
arcpy.env.mask = shapefile
footprint = arcpy.env.workspace + r"\human_footprint_dataset"
mask1 = arcpy.env.workspace + r"\mask1"
mask2 = arcpy.env.workspace + r"\mask2"
masks = [mask1, mask2]
for mask in masks:
SetExtent(mask)
arcpy.PairwiseIntersect_analysis([mask,footprint],r"\result_{}".format(mask))
For each smaller file, the processing extent was shrunk, allowing arcpy to only consider a small part of the much larger (2.5 GB) file.
So, in summary, the problem is that the file is just too big. The solution is to either break it up into smaller pieces, or shrink the processing extent. Hope this helps!