SPECTRAL_PARTITIONING
The SPECTRAL_PARTITIONING command allows for automatic segmentation of points from lidar point clouds using a spectral graph partitioning method. This automatic analysis tool breaks the point cloud into segments based on the spatial and attribute relationships between points returns in the point cloud. The following parameters are supported by the command:
- FILENAME - filename or description of loaded layer(s) to classify Lidar points in. This parameter can be listed more than once to specify multiple input files, like FILENAME="FILENAME_1" FILENAME="FILENAME_2".
- LIDAR_RESOLUTION - the distance parameter defining the size of a points local neighborhood which is averaged over to evaluate point attributes and similarity. The value of this parameter can range from 0.0001 to 1000.0
- LIDAR_RESOLUTION_UNITS - The units used to define the LIDAR_RESOLUTION. Accepted values are POINT SPACINGS, FEET, and METERS. The default value if not specified is LIDAR_RESOLUTION_UNITS="METERS"
- Attribute Specification - Select attributes used to evaluate the point to point similarity measure that informs spectral partitioning. Attributes of a point are based on statistics of a local neighborhood with extent defined by the resolution. Each attribute is accompanied by a weight which determines its relative contribution to the point similarity measure. All attributes except position are optional and will not be used if not specified. The weight range for each attribute is 0.0 to 1000.0
- SPECT_PART_POSITION_WEIGHT - position refers to the X/Y/Z or Lat/Lon/Elevation position of each point return. This parameter is required positional relationship between points will always be considered.
- SPECT_PART_IS_CURVATURE and SPECT_PART_CURVATURE_WEIGHT- when enabled (SPECT_PART_IS_CURVATURE=YES) analyzes the curves created by the points in a local neighborhood.
- SPECT_PART_IS_NORMAL and SPECT_PART_NORMAL_WEIGHT - when enabled (SPECT_PART_IS_NORMAL=YES) will consider the direction perpendicular to the surface the point is representing.
- SPECT_PART_IS_RETURN_NUMBER and SPECT_PART_RETURN_NUMBER_WEIGHT - when enabled (SPECT_PART_IS_RETURN_NUMBER=YES) similarity in the return number of each point return in the data set will be considered.
- SPECT_PART_IS_INTENSITY and SPECT_PART_INTENSITY_WEIGHT - when enabled (SPECT_PART_IS_INTENSITY=YES) the intensity or strength of return will be considered.
- SPECT_PART_IS_COLOR and SPECT_PART_COLOR_WEIGHT - when enabled (SPECT_PART_IS_COLOR=YES) the applied RGB color of the returns will be considered.
- SPECT_PART_CONNECTIVITY - threshold value for algebraic connectivity that is used to determine where to cut to divide into segments. A larger value will result in more segments. Acceptable values range from 1e-4 to 100.0
- SPECT_PART_MAX_CURVATURE - Maximum allowed curvature used to discourage connectivity between points with large curvature over local neighborhood. Acceptable values range from 1e-4 to 180.0
- LIDAR_MAX_STD_DEV - Point-to-point associations used for clustering are limited to those that are within a specified statistical distance. This threshold reduces processing requirements by ignoring point to point similarity measure above the given value. A larger number of standard deviations will include more weakly connected points in the same segment. A lower value will likely create fewer segments but the points in each will be more closely related. Accepted values range from 0 to 20.0
- LIDAR_MIN_CLUSTER_SIZE - Minimum number of points a segment must have before being assigned a segment ID. Accepted values range from 1 to 100000
-
Specify Bounding Box for Operation
- GLOBAL_BOUNDS - specifies the combine bounds in units of the current global projection. There should be 4 values in a comma-delimited list following the parameter name. The values should be in order of minimum x, minimum y, maximum x, maximum y.
- GLOBAL_BOUNDS_SIZE - specifies the combine bounds in units of the current global projection. There should be 4 values in a comma-delimited list following the parameter name. The values should be in order of minimum x, minimum y, width in x, width in y.
- LAT_LON_BOUNDS - specifies the combine bounds in latitude/longitude degrees. There should be 4 values in a comma-delimited list following the parameter name. The values should be in order of west-most longitude, southern-most latitude, eastern-most longitude, northern-most latitude.
- LAYER_BOUNDS - specifies that the operation should use the bounds of the loaded layer(s) with the given filename. For example, to export to the bounds of the file "c:\test.tif", you would use LAYER_BOUNDS="c:\test.tif". Keep in mind that the file must be currently loaded.
- LAYER_BOUNDS_EXPAND - specifies that the operation should expand the used LAYER_BOUNDS bounding box by some amount. The amount to expand the bounding rectangle by should be specified in the current global projection. For example, if you have a UTM/meters projection active and want to expand the bounds retrieved from the LAYER_BOUNDS parameter by 100 meters on the left and right, and 50 meters on the top and bottom, you could use LAYER_BOUNDS_EXPAND="100.0,50.0". You can also specify a single value to apply to all 4 sides, or supply 4 separate values in the order left,top,right,bottom.
- SNAP_BOUNDS_TO_MULTIPLE - specifies that the top-left corner of the bounding box for the operation should be snapped to a multiple of the given value. For example, using SNAP_BOUNDS_TO_MULTIPLE=1 will snap the top-left corner to the nearest whole number. The values will always go smaller for X/easting/longitude and larger to Y/northing/latitude so you always get at least what is requested.
- SNAP_BOUNDS_TO_SPACING - specifies that the top-left corner of the bounding box for the operation should be snapped to a multiple of the resolution of the operation. For example, if you are exporting at 5 meter spacing, the top left corner will be snapped to the nearest multiple of 5. Use SNAP_BOUNDS_TO_SPACING=YES to enable or SNAP_BOUNDS_TO_SPACING=NO to disable. If not provided, the global setting for snapping exports to the nearest sample spacing boundary from the Advanced section of the General tab of the Configuration dialog will be used.
- USE_EXACT_BOUNDS - specifies that the exact bounds that were defined in the command should be used. Generally, when the bounds specified in a command are not the same as the data bounds, the command uses the intersection between the two. When USE_EXACT_BOUNDS=YES is specified, the command will use the bounds as specified, instead of the intersection.
-
Lidar Advanced Filter Parameters
See also Lidar Advanced Filter Options
- LIDAR_ELEV_RANGE - specifies the range of elevations to include in the grid in meters. By default all elevations are gridded, but if you want to restrict values to say 50m - 150m, you could add LIDAR_ELEV_RANGE="50,150".
- LIDAR_HEIGHT_RANGE - specifies the range of heights above ground to keep in meters. By default all heights are used, but if you want to restrict values to say 0m - 2m above ground, you could add LIDAR_HEIGHT_RANGE="0,2".
- LIDAR_SCAN_ANGLE_RANGE - specifies the range of scan angles to include in the grid in degrees. By default all scan angles are gridded, but if you want to restrict the grid to only those points with scan angles between 0 and 30 degrees, you could add LIDAR_SCAN_ANGLE_RANGE="0,30".
- LIDAR_FILTER - specifies a comma-separated list of Lidar class numbers to export. Provide a minus sign to remove the type from the filter rather than add it. The filter starts off with nothing in it if you provide a LIDAR_FILTER string, but you can add ALL to enable everything or NONE to clear the filter, then add or remove stuff after that. For example, to specify a class filter with only types 2 and 3 enabled, use LIDAR_FILTER="NONE,2,3". To get one with everything but classes 2 and 3, use LIDAR_FILTER="ALL,-2,-3". If no LIDAR_FILTER is provided then all types currently enabled in the shared global Lidar filter are used.
- LIDAR_RETURN_FILTER - specifies a comma-separated list of Lidar return types to enable or disable. Provide a minus sign to remove the type from the filter rather than add it. The filter starts off with the current filter settings, but you can add ALL to enable everything or NONE to clear the filter, then add or remove stuff after that. For example, to specify a return filter with only unknown and first returns, use LIDAR_RETURN_FILTER="NONE,0,1". To get one with everything but the first return, use LIDAR_RETURN_FILTER="ALL,-1". The numeric values have the following meanings:
- 0 - Unknown Returns
- 1 - First Return
- 2 - Second Return
- 3 - Last Return
- 4 - Single Return
- 5 - First of Many Returns
- 6 - Second of Many Returns
- 7 - Third of Many Returns
- 8 - Last of Many Returns
- LIDAR_COLOR_FILTER - specifies a color to include in the grid. If no value is provided then all colors are gridded. Otherwise, you can provide multiple LIDAR_COLOR_FILTER parameters of the format LIDAR_COLOR_FILTER="RGB(red,green,blue)" to specify colors to keep. The LIDAR_COLOR_DIST parameter specifies how far from an exact match to a specified color that a point color can be to be kept.
- LIDAR_DENSITY_RANGE - specifies the range of point densities in points per square meter to include. Any Lidar points in regions with densities outside the range are ignored. If you use two values then everything between the values is used. If only one value is specified then all points in areas >= to the specified value are used. For example, LIDAR_DENSITY_RANGE="1.0" means that all points in areas with densities of 1.0 points per square meter or higher are used.
- LIDAR_SOURCE_ID_LIST - specifies a comma-separated list of point source IDs to keep. If no list is provided all points are kept. For example, to keep just points with a source ID of 5 or 6, use LIDAR_SOURCE_ID_LIST="5,6".
- LIDAR_INTENSITY_RANGE - filter to only the specified intensity values. The value is a pair of integers representing the range of intensity values to be included. Example: LIDAR_INTENSITY_RANGE=100,15. If only the first value is provided, it will be considered the minimum intensity value, so all values greater than that value will be included.