UNPKG

imobile_for_reactnative

Version:

iMobile for ReactNative,是SuperMap iMobile推出的一款基于React-Native框架的移动应用开发工具。基于该开发工具,用户可以使用JavaScript开发语言,开发出在Android和IOS操作系统下运行的原生移动GIS应用,入门门槛低,一次开发,处处运行。

160 lines (145 loc) 4.23 kB
/*********************************************** 插值分析 *************************************************/ import { NativeModules, } from 'react-native' import { DatasetInfo } from '../data/SData' const Analyst = NativeModules.SInterpolationAnalyst /** 插值分析参数 */ interface InterpolateOption { /** 插值算法类型 */ type: TInterpolationAlgorithmType, /** 结果栅格数据分辨率,该值不能超过bounds范围的边长 */ resolution: number, /** 插值分析的范围,用于确定运行结果所得到的栅格数据集的范围 */ bounds: { left: number, bottom: number, right: number, top: number, }, /** 查找参与运算点的方式 */ searchMode: TSearchMode, } /** 变长查找 / 定长查找 */ export interface KdtreeParameter extends InterpolateOption { /** 查找半径 */ searchRadius: number, /** 查找点数 */ expectedCount: number, } /** 块查找 */ export interface QuadtreeParameter extends InterpolateOption { /** 最多参与点数 */ maxPointCountForInterpolation: number, /** 块内最多点数 */ maxPointCountInNode: number, } /** 样条 / 距离反比权重 */ export interface SplineIDWParameter extends InterpolateOption { /** 幂次 */ power: number, } /** 普通克吕金 */ export interface OrdinaryKrigingParameter extends InterpolateOption { /** 半变异函数模式 */ variogramMode: TVariogramMode, /** 自相关阈值 */ range: number, /** 基台值 */ sill: number, /** 块金效应值 */ nugget: number, } /** 简单克吕金 */ export interface SimpleKrigingParameter extends OrdinaryKrigingParameter { /** 平均值 */ mean: number, } /** 泛克吕金 */ export interface UniversalKrigingParameter extends OrdinaryKrigingParameter { /** 阶数 */ exponent: number, } export type InterpolateOptionParameter = KdtreeParameter | QuadtreeParameter | SplineIDWParameter | OrdinaryKrigingParameter | SimpleKrigingParameter | UniversalKrigingParameter export interface IPixelFormat { UNKONOWN: 0 UBIT1: 1 UBIT4: 4 UBIT8: 8 BIT8: 80 UBIT16: 16 UBIT24: 24 UBIT32: 32 BIT32: 320 BIT48: 48 BIT64: 64 SINGLE: 3200 DOUBLE: 6400 } /** 栅格与影像数据存储的像素格式类型常量 */ export type TPixelFormat = IPixelFormat[keyof IPixelFormat] interface IVariogramMode { /** 指数函数 */ EXPONENTIAL: 0 /** 高斯函数 */ GAUSSIAN: 1 /** 球形函数 */ SPHERICAL: 9 } export type TVariogramMode = IVariogramMode[keyof IVariogramMode] interface IInterpolationAlgorithmType { /** 距离反比权值 */ IDW: 0 /** 简单克吕金 */ SimpleKRIGING: 1 /** 普通克吕金 */ KRIGING: 2 /** 泛克吕金 */ UniversalKRIGING: 3 /** 径向基函数 */ RBF: 6 /** 点密度 */ DENSITY: 9 } /** 插值方法 */ export type TInterpolationAlgorithmType = IInterpolationAlgorithmType[keyof IInterpolationAlgorithmType] interface ISearchMode { NONE: 0 /** 块查找 */ QUADTREE: 1 /** 定长查找方式 */ KDTREE_FIXED_RADIUS: 2 /** 变长查找方式 */ KDTREE_FIXED_COUNT: 3 } /** 查找方式 */ export type TSearchMode = ISearchMode[keyof ISearchMode] /** * 插值分析类型 */ export const InterpolationAlgorithmType: IInterpolationAlgorithmType = Analyst.InterpolationAlgorithmType /** * 插值分析像素 */ export const PixelFormat: IPixelFormat = Analyst.PixelFormat /** * 半变异函数模式 */ export const VariogramMode: IVariogramMode = Analyst.VariogramMode /** * 查找方式 */ export const SearchMode: ISearchMode = Analyst.SearchMode /** * 插值分析 * @param sourceData 插值分析源数据 * @param resultData 插值分析源结果数据 * @param paramter 插值分析方式参数对象 * @param field 插值字段 * @param scale 缩放比例 * @param pixelFormat 像素 * @returns 分析成功返回true,否则返回false */ export function interpolate(sourceData: DatasetInfo, resultData: DatasetInfo, paramter: InterpolateOptionParameter, field = '', scale = 1, pixelFormat: TPixelFormat): Promise<boolean> { return Analyst.interpolate(sourceData, resultData, paramter, field, scale, pixelFormat) }