java中定义点坐标_坐标系中找一个参考点某个范围内坐标点的问题

一个坐标系中有很多点(坐标),现给出一个参考点,找出参考点范围(xxx米,xxx公里)内的点。

1.现实生活中坐标就是指精度和纬度,每个单位之间距离可以量化(每个单位纬度距离≈111公里;每个单位经度距离≈111cosα公里,赤道≈111公里),给出一个坐标点,找附近的点,可以理解为以该点为圆心,该圆所覆盖的点(方便计算可以理解为矩形覆盖),那么可以根据量化单位和范围得出经度和纬度的范围,比如点[104.292100,30.990100]一公里范围内的点就是(经度范围[104.292049~104.292151],纬度[30.990044~30.990156])

2.每条数据坐标分别保存在数据库表中字段x(经度),y(纬度)里,那么查询条件(where x BETWEEN 104.292049 AND 104.292151 AND y BETWEEN 30.990044 AND 30.990156)

3.另外mysql,mongodb本身就支持坐标计算,直接使用相应查询语句可以实现(具体可以参考相关文档)

4.针对坐标数据存储的问题,如何优化。比如mysql可以采用分表的方法存储,比如分为N个表(例如华东、华北、华南、东北),看你怎么分,每个分区都有x,y的范围,先对点判断分区,匹配相应的存储表做查询,减少检索数据量大小,以及设置x,y联合索引,提高检索速度

5.后面如果有什么想法再补充

转载至链接:https://my.oschina.net/cdcc/blog/1924150

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值