Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
dev:viewer:actions:add_view [2023/02/13 09:27]
pieter [Find Best Photo]
dev:viewer:actions:add_view [2023/02/14 14:21]
jeroen removed
Line 1: Line 1:
-====== Add View ======+====== Add, Move, Change View ====== 
 + 
 +===== View Modes ===== 
 + 
 +The available View Modes depend on the loaded Resources: 
 + 
 +  * 3D View 
 +  * Streetlevel Spherical View 
 +  * Streetlevel Planar View 
 +  * Aerial Planar View 
 +  * Aerial Oblique Planar View 
 + 
 +===== Add View ======
  
 Click on the '+' icon and view mode on the left sidebar to open a new view. Next, click on the [[dev:viewer:viewmodes:reference|Reference View]] or an existing View on the location where a new View should be opened. \\ Click on the '+' icon and view mode on the left sidebar to open a new view. Next, click on the [[dev:viewer:viewmodes:reference|Reference View]] or an existing View on the location where a new View should be opened. \\
Line 5: Line 17:
 The different View modes are described [[dev:viewer:viewmodes:3d|here]]. The different View modes are described [[dev:viewer:viewmodes:3d|here]].
  
-===== Find Best Photo ======+===== Move View ===== 
 + 
 +Move an existing View to a new location
  
-==== Input Parameters ====+Hover over the ID of the View on top, click 'move' and choose another location in one of the Views or Reference View. For image Views, it's possible to choose a specific image by clicking on the footprint of the photo position itself.
  
-FIXME Add find photo algorithm information+To move all views at once, hold Shift in move mode and choose a new location. While holding Shift, 'move' in the View Action Fly-out will change to 'move all' to indicate this.
  
-Inputs:  +===== Switch View Mode =====
-  * resources +
-  * focusPosition : The position we want to observe. +
-  * viewPosition : The position we are observing the photo position from. +
-  * minPhotos : The minimum amount of photos to find after applying the requireFocusVisible filter. Ignored if not positive. +
-  * relevantPhotosMax : The maximum number of relevant photos to return. +
-  * searchDistances2D : The array of search distances to use when finding a closest photo. +
-  * findCloserPhotoAlgorithm : The algorithm to sort results and find a closest photo. +
-    * PIXEL_DISTANCE : Identifies the technique to find a closest photo by projecting the search coordinate on the photo and then sorting by distance to the photo center. +
-    * SPATIAL_DISTANCE : Identifies the technique to find a closest photo by taking the 3d distance to the view position (fall back on focus position). +
-  * requireFocusVisible : For planars, only return photo's that have the search position inside the photo? (false to disable) +
-  * isStreetlevel :  We are searching on streetlevel?  +
-    * If true the 'is focus visible?' check (enabled by requireFocusVisible) will check whether the focus position is in view +
-    * for each photo by looking at the angular distance between the photo heading (pan) and the heading defined by the vector from photo position to focus position. +
-    * This yields a better result for streetlevel planars (sphericals don't have a 'focus visible' check). +
-  * searchCenter : Identifies searching around the view position. +
-    * FOCUS : Identifies searching around the focus position and selecting the photo closest to the focus position. +
-    * FOCUS_AND_VIEW :  Identifies searching around the focus position and selecting the photo closest to the view position if provided (focus position as fallback).  +
-    * VIEW : Identifies searching around the view position and selecting the photo closest to the view position.+
  
-There are other input parameters, but they do not apply to how the algorithm functions.+Change the View Mode of a View.
  
-Some constants : +Hover over the eye-icon on top of the view to open the 'View Mode Fly-out' and choose the desired View mode to change the type of the existing View.
  
-  * AerialDistances ''25,50,100,200,400,800,1600,3200,6400,12800'' +===== Focus other Views =====
-  * StreetlevelDistances ''3,9,27,81,243,729''+
  
-Default parameter values :  
  
-^ ^ Streetlevel Spherical ^ Streetlevel Planar ^ UAV Planar ^ Oblique Planar ^  +===== Search & Open best photo =====
-| focusPosition       | <required> | <required> | <required> | <required>+
-| viewPosition        | <optional> | <optional> | <optional> | <optional>+
-| minPhotos           | 0 | 0 | 3 | 0 | +
-| relevantPhotosMax   | 10 | 10 | 10 | 10 | +
-| searchDistances2D   | StreetlevelDistances | StreetlevelDistances | AerialDistances  | AerialDistances | +
-| findCloserPhotoAlgorithm | SPATIAL_DISTANCE  | SPATIAL_DISTANCE<sup>1</sup> | SPATIAL_DISTANCE<sup>1</sup> | PIXEL_DISTANCE<sup>1</sup>+
-| requireFocusVisible | false | true | true | true | +
-| isStreetlevel       | true | true | false | false | +
-| searchCenter        | FOCUS_AND_VIEW<sup>2</sup> | FOCUS_AND_VIEW<sup>2</sup> | FOCUS_AND_VIEW<sup>2</sup> | FOCUS |+
  
-<sup>1</sup> Configurable via ''Views -> (Type) Image View -> Open best planar photo by''\\  +Add, Move and Focus Views trigger the request to Search and Open the "best" image. \\ 
-<sup>2</sup> Configurable via ''Views -> Image Views -> Open image from 3D View''+Depending on the use case and data-type other methods or configurations can be used.  \\ 
 +Anyway, the action consists of consecutive steps 
 +  Get Candidates 
 +  Sort Photos
  
-==== Algorithm ====+==== Get Candidates ====
  
-FindClosestPhoto+Find relevant photos around the requested Focus Coordinate. \\ 
 +Any photo becomes a candidate if  
 +  * Focus Coordinate is nearby the Photo Coordinate (Search Radius)  
 +  * Focus Coordinate is in the field of View of the Photo.
  
-<code javascript> +Searching for candidates is done by incrementally increasing the search radius and ends when 
-function(resource,searchDistances2D,viewPosition,focusPosition,parameters) +  10 or more candidates are found, or 
-+  * the maximum search radius is reached.
-  for(searchDistance in searchDistances2D)  +
-  { +
-    let searchCenterPosition = (searchCenter = VIEW) ? viewPosition : focusPosition; +
-    let photoList = resource.findPhotosInCircle(searchCenterPosition,searchDistance); +
-    if (requireFocusVisible) +
-    { +
-      if (parameters.isStreetlevel) +
-      { +
-        photoList = keepPhotosWithProjectionInsidePan(photoList,85%); +
-      } +
-      else +
-      { +
-        photoList = keepPhotosWithProjectionInsideMargin(photoList,20%); // projection is inside photo bounds, reduced by a 20% margin? +
-      } +
-      if (photoList.length<10) +
-      { +
-        photoList = keepPhotosWithProjectionInsideMargin(photoList,5%); // projection is inside photo bounds, reduced by a 5% margin? +
-      } +
-    } +
-    if (photoList.length<minPhotos) +
-    { +
-      continue; +
-    } +
-    photoList = sortPhotos(photoList, parameters) +
-    return { +
-      photo: photoList[0], +
-      relevantPhotos: photoList.slice(1,relevantPhotosMax) +
-    } +
-  } +
-+
-</code>+
  
-<code javascript> +==== Sort Photos ====
-function sortPhotos(photoList) +
-+
-  for(photo in photoList) +
-  { +
-    if (parameters.findCloserPhotoAlgorithm PIXEL_DISTANCE) +
-    { +
-      photo.distance getDistanceToProjectionCenter(photo,focusPosition) +
-    } +
-    if (parameters.findCloserPhotoAlgorithm  SPATIAL_DISTANCE) +
-    { +
-      if (viewPosition!=null) +
-      { +
-        photo.distance  getDistanceToPosition(photo,viewPosition) +
-      } +
-      else +
-      { +
-        photo.distance getDistanceToPosition(photo,focusPosition) +
-      } +
-    } +
-  } +
-  sortByDistance(photoList); +
-  return photoList; +
-+
-</code> +
-      +
  
 +Sort candidates by relevance, to get the best image and order alternative images. \\
 +The best image has the smallest value for the selected option
  
 +Options:
 +  * By Direction offset \\ Offset between the Candidate Direction (Candidate to Focus Coordinate) and Request Direction (3D View Position to Focus Coordinate).
 +  * By Pixel offset \\ Pixel offset of the Focus Coordinate projected on the Candidate Image to the Candidate Image Center.
 +  * By Spatial distance \\ Spatial distance of the Focus Coordinate to the Candidate Coordinate.
  
-distanceToProjectionCenter(): projects the focus position on the photo and returns the pixel distance from that position to the photo center.