注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

阿弥陀佛

街树飘影未见尘 潭月潜水了无声 般若观照心空静...

 
 
 

日志

 
 
关于我

一直从事气象预报、服务建模实践应用。 注重气象物理场、实况场、地理信息、本体知识库、分布式气象内容管理系统建立。 对Barnes客观分析, 小波,计算神经网络、信任传播、贝叶斯推理、专家系统、网络本体语言有一定体会。 一直使用Java、Delphi、Prolog、SQL编程。

网易考拉推荐

scala 基于com.vividsolutions.jts.index.kdtree.KdTree的应用  

2014-05-30 21:33:18|  分类: Scala |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
package models
import com.vividsolutions.jts.index.kdtree.KdTree
import com.vividsolutions.jts.geom.Envelope
import com.vividsolutions.jts.geom.Coordinate
import com.vividsolutions.jts.index.kdtree.KdNode
import java.util.ArrayList
import com.vividsolutions.jts.index.kdtree.KdNode
import scala.collection.immutable.SortedMap
/**
 * 目的:根据离散站点经纬度,建立KDTree。并:
 * 1. 查询点,半径范围内的站点
 * 2. 查询点,半径范围内的站点要素
 * 3. 闭合区的站点分布密度
 * 何险峰 2013-09-23于维也纳
 */
trait DbKDTree {
  def stadict: SortedMap[String, Sta]
  def staIds: Set[String]
  val kdtree = new KdTree
  for (staId <- staIds) {
    val sta = stadict.get(staId).get
    val c = new Coordinate(sta.lon, sta.lat)
    kdtree.insert(c, staId)
  }
  def query(c: Coordinate, scale: Double): SortedMap[Double, String] = {
    var dist_staId = SortedMap[Double, String]()
    val maxNumNeighbour = 5
    val dd = if (scale < 4) scale * 1.5 else scale
    //println("scale:"+scale)
    //val dd = scale
    val x1 = c.x - dd
    val x2 = c.x + dd
    val y1 = c.y - dd
    val y2 = c.y + dd
    val env = new Envelope(x1, x2, y1, y2)
    val kdnodes = kdtree.query(env).asInstanceOf[ArrayList[KdNode]]
    val len = kdnodes.size
    if (len > 0)
      for (i <- 0 to len - 1) {
        val p = kdnodes.get(i).getCoordinate
        val dist = p.distance(c)
        val staId = kdnodes.get(i).getData.asInstanceOf[String]
        dist_staId += (dist -> staId)
      }
    dist_staId.slice(0, maxNumNeighbour)
  }
  def numSta(env: Envelope): Int = {
    kdtree.query(env).size
  }
}
  评论这张
 
阅读(473)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017