由于要进行反距离插值,离散点太多肯定会影响插值的效率。

为了提升插值速度,就有了这个点的抽稀。

参考这位仁兄的思路。http://blog.csdn.net/cdl2008sky/article/details/8281316

抽稀前:3087个点

simplifyMutiPoints.getProcessPoints(IsolinePoints.features,0.1,"z");

抽稀处理,

对密集的点抽稀,保持点的关键属性z值的均匀分布:剩余1682个。

可以看都左侧的大量相同权重的点被抽稀了。

最后附上代码:

/// <summary>抽稀处理,对密集的点抽稀,保持点的均匀分布。</summary>
/// <param name="points" type="Array">待抽稀的数组 features Array</param>
/// <param name="tolerance" type="Float">取样临界值</param>
/// <param name="indicator" type="string">关键属性</param>
var simplifyMutiPoints = {
// dis: 1000,
// degToMeter: Math.PI * 6378137 / 180.0, //6378137赤道半径,一度对应赤道上的一米
// buf: parseInt(this.dis * 1.0e7 / degToMeter), //1公里对应多少度
getProcessPoints: function(points, tolerance, indicator) {
if (points.length < 3) return points; //小于3个点时不抽稀,因为1个或2个点无法进行抽稀
var IndexsToReduce = this.reduce(points, tolerance, indicator); //抽稀 //保存需要点下标的数组
var resultPoints = []; //返回的点数组
for (var i = 0; i < points.length; i++) {
if (IndexsToReduce.indexOf(i) < 0) {
resultPoints.push(points[i]);
}
}
return resultPoints;
},
reduce: function(points, tolerance, indicator) { //遍历抽稀,删除相同权重的点
// var IndexsToKeep = [];
var IndexsToReduce = [];
for (var i = 0; i < points.length; i++) {
var k = i + 1;
if (IndexsToReduce.indexOf(i) >= 0) { //如果是已删除的点,跳出
continue;
}
var p1 = points[i];
while (k < points.length) {
var p2 = points[k];
var ToReduce = this.CheckPointEqualInBuffer(p1, p2, tolerance, indicator);
if (ToReduce) {
IndexsToReduce.push(k);
}
k++;
}
}
return IndexsToReduce;
},
//判断在抽稀中是否等值(依据缓冲范围以及关键属性)
CheckPointEqualInBuffer: function(point1, point2, buffer /*缓冲相等*/ , indicator /*属性相等*/ ) {
var x1=point1.geometry.coordinates[0],
y1=point1.geometry.coordinates[1],
x2=point2.geometry.coordinates[0],
y2=point2.geometry.coordinates[1];
var inbuffer = (Math.abs(x1 - x2) <= buffer && Math.abs(y1 - y2) <= buffer);
var iszEqual = true;
if (indicator) {
iszEqual = point1.properties[indicator] == point2.properties[indicator];
}
return inbuffer && iszEqual;
}
};

  

最新文章

  1. 9.2.3 .net core 通过TagHelper封装控件
  2. POJ 2540 Hotter Colder --半平面交
  3. MSDeploy
  4. css3中的几何图形shape研究
  5. UIKit结构图
  6. Shell实现跳板机,为什么用跳板机
  7. Asp.Net BulletedList
  8. Css样式之overflow
  9. Cell的重用机制
  10. jquery——zTree, 完美好用的树插件
  11. Oracle中merge into的使用 (转)
  12. 數據監控与診斷--環形緩沖區(RING BUFFER)
  13. 【Python】Elasticsearch和elasticsearch_dsl
  14. python 的xlwt模块
  15. Mongodb aggregation 基本操作示例
  16. VRS的GPS/BDS双系统网元固定存在的问题
  17. Resultset转Bean工具类
  18. Java使用Rabbitmq惊喜队列queue和消息内容的本地持久化核心方法。(内容存储在硬盘)
  19. OpenSUSE安装软件
  20. docker中间件安装记录

热门文章

  1. wangeditor富文本编辑和vue3
  2. 真正“搞”懂HTTP协议12之缓存代理
  3. ssh 连接 wsl2
  4. IDEA 2022 开启热部署
  5. 学习Java Day 5
  6. Spring Boot 小知识、小demo、配置文件
  7. 【白话科普】聊聊网络架构变革的关键——SDN
  8. 自己从零写操作系统GrapeOS——1.GrapeOS介绍
  9. ubuntu 20.04 远程桌面(win10 控制 Ubuntu 20.04)
  10. 读论文SRCNN:Learning a Deep Convolutional Network for Image Super-Resolution