0

I have a multipatch dataset and a 2d polygon.

Which ArcGIS geoprocessing tool can I use to select only those multipatches whoms x,y are inside the polygon?

I want to select all multipatch features that intersect if Z is disregarded.

1 Answer 1

2

The AOI tool solved the problem while in ArcScene http://resources.arcgis.com/en/help/main/10.1/index.html#//00q800000144000000

Another option is to use SelectLayerByLocation tool paired with CopyFeatures tool. I began coding this into a python toolbox:

def execute(self, parameters, messages):
    """The source code of the tool.  """
    # Get current extent
    mxd = arcpy.mapping.MapDocument("CURRENT")
    dataframe = arcpy.mapping.ListDataFrames(mxd)[0]
    ext = dataframe.extent      
    # Create BBOX feature
    feature_data = [[ext.XMin, ext.YMax], [ext.XMax, ext.YMax], [ext.XMax, ext.YMin], [ext.XMin,ext.YMin]]
    feature = arcpy.Polygon(arcpy.Array([arcpy.Point(*coords) for coords in feature_data]))
    # Create FeatureClass put features in it.
    arcpy.env.addOutputsToMap = 0       
    arcpy.CopyFeatures_management(feature, "H:/ArcGIS/temp_bbox.shp")               
    # First, make a layer from the feature class
    arcpy.MakeFeatureLayer_management("C:/temp/3Ddatabas/multipatchfixfull.gdb/ROOF_MULTIPATCH", "roof_layer")
    # Then add a selection to the layer based on location to features in another feature class 
    arcpy.SelectLayerByLocation_management ("roof_layer", "intersect", "H:/ArcGIS/temp_bbox.shp")
    arcpy.env.addOutputsToMap = 1
    import time
    t = int(time.time())
    arcpy.CopyFeatures_management('roof_layer', 'C:/temp/3Ddatabas/dev1.gdb/ROOF_selected_' + `t`)      
    #Clean up
    arcpy.Delete_management("H:/ArcGIS/temp_bbox.shp")
    arcpy.Delete_management("roof_layer")
    return

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.