UNPKG

@allmaps/transform

Version:

Coordinate transformation functions

84 lines (83 loc) 3.59 kB
import { mergeOptions } from '@allmaps/stdlib'; import { defaultRefinementOptions } from './refinement-functions.js'; // Options export const nonWarpingTransformationTypes = [ 'helmert', 'polynomial', 'polynomial1' ]; export const defaultGeneralGcpTransformOptions = { maxDepth: 0, minSourceDistance: 0, minDestinationDistance: 0, minOffsetRatio: 0, minOffsetDistance: Infinity, isMultiGeometry: false, distortionMeasures: [], referenceScale: 1, preForward: (point) => point, postForward: (point) => point, preBackward: (point) => point, postBackward: (point) => point }; export const defaultGeneralGcpTransformerOptions = { differentHandedness: false, ...defaultGeneralGcpTransformOptions }; export function gcpTransformOptionsToGeneralGcpTransformOptions(partialGcpTransformOptions) { if (partialGcpTransformOptions === undefined || Object.keys(partialGcpTransformOptions).length === 0) { return {}; } const partialGeneralGcpTransformOptions = partialGcpTransformOptions; if (partialGcpTransformOptions.postToGeo) { partialGeneralGcpTransformOptions.postForward = partialGcpTransformOptions.postToGeo; } if (partialGcpTransformOptions.preToResource) { partialGeneralGcpTransformOptions.preBackward = partialGcpTransformOptions.preToResource; } return partialGeneralGcpTransformOptions; } export function gcpTransformerOptionsToGeneralGcpTransformerOptions(partialGcpTransformerOptions) { if (partialGcpTransformerOptions === undefined) { return {}; } // Note: None of the transformer options need to be adapted // only the transform options that could be included in them const partialGeneralGcpTransformerOptions = gcpTransformOptionsToGeneralGcpTransformOptions(partialGcpTransformerOptions); return partialGeneralGcpTransformerOptions; } export function generalGcpTransformOptionsToGcpTransformOptions(partialGeneralGcpTransformOptions) { if (partialGeneralGcpTransformOptions === undefined) { return {}; } const partialGcpTransformOptions = partialGeneralGcpTransformOptions; if (partialGeneralGcpTransformOptions.postForward) { partialGcpTransformOptions.postToGeo = partialGeneralGcpTransformOptions.postForward; } if (partialGeneralGcpTransformOptions.preBackward) { partialGcpTransformOptions.preToResource = partialGeneralGcpTransformOptions.preBackward; } return partialGcpTransformOptions; } export function generalGcpTransformerOptionsToGcpTransformerOptions(partialGeneralGcpTransformerOptions) { if (partialGeneralGcpTransformerOptions == undefined) { return {}; } const partialGcpTransformerOptions = partialGeneralGcpTransformerOptions; return partialGcpTransformerOptions; } export const defaultGcpTransformOptions = generalGcpTransformOptionsToGcpTransformOptions(defaultGeneralGcpTransformOptions); export const defaultGcpTransformerOptions = generalGcpTransformerOptionsToGcpTransformerOptions(defaultGeneralGcpTransformerOptions); export function refinementOptionsFromForwardTransformOptions(generalGcpTransformOptions) { const refinementOptions = mergeOptions(defaultRefinementOptions, generalGcpTransformOptions); return refinementOptions; } export function refinementOptionsFromBackwardTransformOptions(generalGcpTransformOptions) { const refinementOptions = mergeOptions(defaultRefinementOptions, generalGcpTransformOptions); return refinementOptions; }