mongodb GIS做电子围栏

2024-02-16 21:48
文章标签 mongodb 电子 gis 围栏

本文主要是介绍mongodb GIS做电子围栏,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

思路

  1. mongodb本身适合存地理数据,自带了函数
  2. 先将电子围栏存入mongodb中
  3. 每次点位是否在电子围栏外时向mongodb发送空间查询

资料:

GeoJson数据详见:http://geojson.io/

SpringBoot+mongodb实现代码:

/*** 电子围栏*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Document(collection = "geographicalRegion")
public class GeographicalRegion {@Idprivate String id;/*** 车辆唯一编码*/private String bikeCode;/*** 电子围栏名称*/private String name;/*** 点位*/private GeoJsonPolygon geometry;/*** 创建时间*/private String createDate;}

service:

public boolean findIntersectiveTest(String truckCode, double[] point) throws IOException {GeoJsonPoint geoJson=new GeoJsonPoint(point[0],point[1]);Set<String> truckCodes=new HashSet<String>();truckCodes.add(truckCode);return this.isInRegion(geoJson, truckCodes);}//查找目标区域是否在指定的几个区域内,locations的set中保存指定的区域id//有时数据库中保存的geojson地理信息数据集比较大,整个对象返回往往会消耗很大的io和带宽,所以我们在这里指定仅返回区域的_id,并且只要判断     目标geojson是指定的一个区域的子集就返回结果,降低数据库的处理开销public boolean isInRegion(GeoJsonPoint point, Set locations){Criteria geoCriteria=Criteria.where("geometry").intersects(point);\Criteria[] orArr=new Criteria[locations.size()];Iterator<Integer> iterator=locations.iterator();int i=0;while(iterator.hasNext()){orArr[i]=new Criteria("truckCode").is(iterator.next());i++;}Criteria orCriteria=new Criteria().orOperator(orArr);Criteria andCriteria=new Criteria().andOperator(geoCriteria,orCriteria);DBObject field=new BasicDBObject();field.put("id",true);Query query=new BasicQuery(new BasicDBObject().toString(), field.toString());query.addCriteria(andCriteria);GeographicalRegion region=mongoOperations.findOne(query, GeographicalRegion.class);if(region==null){return false;}return true;}

controller:

    @RequestMapping("/check")public R check(String pointJson, String truckCode){String[] points = pointJson.split(",");double[] point = {Double.valueOf(points[0]), Double.valueOf(points[1])};
//        double[] point = {1.0, 2.0};boolean check = false;try {check = geographicalRegionService.findIntersectiveTest(truckCode, point);} catch (IOException e) {e.printStackTrace();}return R.ok().put("status", check);}

这篇关于mongodb GIS做电子围栏的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/715785

相关文章

使用Python实现操作mongodb详解

《使用Python实现操作mongodb详解》这篇文章主要为大家详细介绍了使用Python实现操作mongodb的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、示例二、常用指令三、遇到的问题一、示例from pymongo import MongoClientf

使用MongoDB进行数据存储的操作流程

《使用MongoDB进行数据存储的操作流程》在现代应用开发中,数据存储是一个至关重要的部分,随着数据量的增大和复杂性的增加,传统的关系型数据库有时难以应对高并发和大数据量的处理需求,MongoDB作为... 目录什么是MongoDB?MongoDB的优势使用MongoDB进行数据存储1. 安装MongoDB

Java操作PDF文件实现签订电子合同详细教程

《Java操作PDF文件实现签订电子合同详细教程》:本文主要介绍如何在PDF中加入电子签章与电子签名的过程,包括编写Word文件、生成PDF、为PDF格式做表单、为表单赋值、生成文档以及上传到OB... 目录前言:先看效果:1.编写word文件1.2然后生成PDF格式进行保存1.3我这里是将文件保存到本地后

GIS图形库更新2024.8.4-9.9

更多精彩内容请访问 dt.sim3d.cn ,关注公众号【sky的数孪技术】,技术交流、源码下载请添加微信:digital_twin123 Cesium 本期发布了1.121 版本。重大新闻,Cesium被Bentley收购。 ✨ 功能和改进 默认启用 MSAA,采样 4 次。若要关闭 MSAA,则可以设置scene.msaaSamples = 1。但是通过比较,发现并没有多大改善。

Spring Boot集成PDFBox实现电子签章

概述 随着无纸化办公的普及,电子文档的使用越来越广泛。电子签章作为一种有效的身份验证方式,在很多场景下替代了传统的纸质文件签名。Apache PDFBox 是一个开源的Java库,可以用来渲染、生成、填写PDF文档等操作。本文将介绍如何使用Spring Boot框架结合PDFBox来实现电子签章功能。 准备工作 环境搭建:确保你的开发环境中安装了JDK 8或更高版本,并且配置好了Maven或

【电子通识】半导体工艺——保护晶圆表面的氧化工艺

在文章【电子通识】半导体工艺——晶圆制造中我们讲到晶圆的一些基础术语和晶圆制造主要步骤:制造锭(Ingot)、锭切割(Wafer Slicing)、晶圆表面抛光(Lapping&Polishing)。         那么其实当晶圆暴露在大气中或化学物质中的氧气时就会形成氧化膜。这与铁(Fe)暴露在大气时会氧化生锈是一样的道理。 氧化膜的作用         在半导体晶圆

生产mongodb 分片与集群 方案

链接:http://my.oschina.net/pwd/blog/411439#navbar-header 注:主要是有一键安装的脚本可以借鉴

mongodb基本命令和Java操作API示例

1.Mongo3.2 java API示例:http://www.cnblogs.com/zhangchaoyang/articles/5146508.html 2.MongoDB基本命:http://www.cnblogs.com/xusir/archive/2012/12/24/2830957.html 3.java MongoDB查询(一)简单查询: http://www.cnblogs

使用jetty和mongodb做个简易文件系统

使用jetty和mongodb做个简易文件系统 - ciaos 时间 2014-03-09 21:21:00   博客园-所有随笔区 原文   http://www.cnblogs.com/ciaos/p/3590662.html 主题  MongoDB  Jetty  文件系统 依赖库: 1,jetty(提供http方式接口) 2,mongodb的java驱动(访问mo

mongodb简单入门

一篇较好的mongodb常用操作命令:http://www.cnblogs.com/hoojo/archive/2011/06/01/2066426.html mongodb的java操作:http://www.cnblogs.com/cyhe/p/5451421.html