STRtree空间数据处理-java笔记

1. STRtree 简单使用

 

大白话:STRStree 相当于一个拓扑树,以上图为例,根节点相当于北京市, A、B分别为树的第二层节点,叶子节点分别是C、D、E、F。若使用范围查询D,使用索引3次则找到D这个范围内的数据。

//新建STRtree 空间对象,和记录查询map
​
private STRtree createSrtree(Map<String, JsonNode> nMap, JsonNode n) {
 STRtree strTree = new STRtree();
 WKTReader reader = new WKTReader();
 n.fields().forEachRemaining(d -> { 
  JsonNode checkNode = d.getValue(); 
  String geom = checkNode.get("geom").asText(); 
  try { 
      LineString lineString = (LineString) reader.read(geom);
     //lineString.getEnvelopeInternal()几何形状的最大x,y值对象Envelope         
     strTree.insert(lineString.getEnvelopeInternal(), d.getKey());
     nMap.put(d.getKey(), checkNode); 
   } catch (ParseException ex) {
    LOGGER.error("异常{}", ex); 
   }
   }); 
   strTree.build(); 
   return strTree; 
}

​

//使用STRtree查询

WKTReader reader = new WKTReader();

LineString lineString = (LineString) reader(jsonNode.get("geom").asText());

Point sPoint = lineString.getStartPoint();

Point ePoint = lineString.getEndPoint();

Geometry startBuffer = sPoint.buffer(0.5); //建立0.5m缓冲区

Map<String, JsonNode> nMap = new HashMap<String, JsonNode>();

STRtree strTree = createSrtree(nMap, jsonNode);

Envelope envelope = startBuffer.getEnvelopeInternal();

List<String> keys = strTree.query(envelope);

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值