@allmaps/transform
Version:
Coordinate transformation functions
84 lines (83 loc) • 3.59 kB
JavaScript
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;
}