imobile_for_reactnative
Version:
iMobile for ReactNative,是SuperMap iMobile推出的一款基于React-Native框架的移动应用开发工具。基于该开发工具,用户可以使用JavaScript开发语言,开发出在Android和IOS操作系统下运行的原生移动GIS应用,入门门槛低,一次开发,处处运行。
160 lines (145 loc) • 4.23 kB
text/typescript
/*********************************************** 插值分析 *************************************************/
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)
}