Overview



Strategies


Defining spatial relationships

Contiguity

  • Utilize a moving window to determine group membership ID
    • membership determined as equivalent to other ID's present in Moore Neighborhood
      • can utilize different Chebyshev distances to describe different levels of connectivity (specifically include 1 and 2)
      • moving window shape can be an irregular 2x4 (r=1) or 3x5 (r=2) filter - see example
      • could potentially apply at tile and megatile scale?
    • stored as individual raster / database files - flat or relational?
  • Must be able to update (find and replace) group ID's that are updated when new linkages are revealed

Edge

  • Moving window process to code as various edge classifications
    • most importantly, edge depth
    • secondly, could also include level of 'edginess' - how many bordering alternative habitats?
  • Probably want to stick to von Neumann neighborhood

Combining features



Translate to pseudo-code

Contiguity

define neighborhood(r, shape):
  r = search radius (Chebyshev distance)
  shape = cells to include, numbered sequentially from upper left corner of neighborhood
    # ie. neighborhood(r=1, shape=(2,4,6,8)) would define vonNeumann neighborhood in terms of Moore neighborhood
    # or something like that
 
define processLevel_1_Contiguity():
  for every cell (starting from top-left)
  make list of CID_1's of cells in neighborhood(r=1, shape=(1,2,3,4))
  if (CID_1 of any cells in != NA):
    if list contains multiple values:
      identify lowest CID_1 value (CID_1_low)
      globally replace higher CID_1 values contained in list with (CID_1_low)
    CID_1 of current cell = CID_1_low
  else:
    assign CID_1 of current cell next unassigned number
 
define processLevel_2_Contiguity():
  for every cell (starting from top-left)
  make list of CID_2's of cells in neighborhood(r=2, shape=(1,2,3,4,5,6,7,8,9,11,12))
  if (CID_2 of any cells in != NA):
    if list contains multiple values:
      identify lowest CID_2 value (CID_2_low)
      globally replace higher CID_2 values contained in list with (CID_2_low)
    CID_2 of current cell = CID_2_low
  else:
assign CID_2 of current cell next unassigned number

Edge

define edgeRelationDict():
  # relational pairing of classifications that when adjacent, create an edge
  # ie. forest and urban next to each other create an edge, housing and industrial do not
  # could just be based on macro-level classification (developed, forest, water)
  # can also refine based on requirements (ie. upland forest/wetland forest edge)
 
define processLevel_1_Edge():
  for every cell (starting from top-left)
  count of cells in neighborhood(r=1, shape=(2,4,5,7)) where edgeRelationDict lookup suggests edge
 

Combination



Related Topics