根据经纬坐标判断是否在一个省份内 或者市内,这有开源的轮子吗?

6 天前
 godleon

需求

根据一个 经纬坐标点,判断是否在一个区域内, 区域可以自己绘制;

比如我自己在地图上把河南省 + 北京市 绘制起来,然后我传入坐标 判断是否在区域内;

我在网上搜到了一些实现方式都是很多年之前写的文章 都是基于空间算法和射线算法;

技术栈上面 现在有比较新的技术来实现吗?

求推荐学习;

ps

有没有哪里可以拿到 一个省份在地图上准确的区域,比如我要绘制一个河南省,边界点的坐标;

3296 次点击
所在节点    程序员
32 条回复
tool2dx
6 天前
算法肯定有,就是 google map s2 开源算法。https://gojekfarm.github.io/s2-calc/

但问题是,你要先下载全国 kml 图形格式才行。
ElmerZhang
6 天前
用 postgres 数据库的 postgis 扩展
地图可以用 openstreetmap 的,只是要自己再加工处理一下
另外可以查查国内测绘相关部门的网站上有没有地图数据可以下载
malusama
6 天前
ElmerZhang
6 天前
ElmerZhang
6 天前
哦对了,搞数据的时候留意一下数据是用的 WGS 坐标系还是 GCJ02 坐标系
godleon
6 天前
@tool2dx
@ElmerZhang
@malusama

感谢大佬 研究一下
luny
6 天前
这个我记得是有加密的吧,坐标和地图有偏移,毕竟地图是敏感数据
liplushe
6 天前
省级行政区划数据,可以看看 Ant L7 的开源数据,不过由于政策影响,只有 GCJ02 坐标系的数据了 https://l7.antv.antgroup.com/custom/tools/map
cat
6 天前
直接调用 天地图/百度/高德/腾讯 的地图接口,给坐标 返回地理位置,里面都带有城市信息
David1119
6 天前
使用阿里云接口: https://geo.datav.aliyun.com/areas_v3/bound/geojson?code=110000 ,获取省份边界点坐标,自己判断一下是否在区域内就行了
https://datav.aliyun.com/portal/school/atlas/area_selector
坐标系不同需要提前转换,python 的话可以用 shapely 这个库

想用现成接口的话一般各家地图一般都有逆地理编码的 api:比如高德 https://lbs.amap.com/api/webservice/guide/api/georegeo
caneman
6 天前
做过类似的需求,当时的作法是先把省份地图的数据拿出来,shp 格式的好像是。然后提取边界的经纬度坐标,然后把问题转换为判断点是否在有界图形内,就知道某坐标在不在某个区域内了。
ala2008
6 天前
1 、得有省市轮廓行政区边界数据 2 、使用 postgres 数据库的 postgis 函数或直接 java 相关 geotool 判断是否在范围内。另外一个方案就是在线地图获取判断了
lslhz
6 天前
随便下载个空间拓扑相关的 js 库, 都有这个功能, 输入一个点 一个面, 判断他们是否相交就可以了
xiangyuecn
6 天前
高性能坐标查询 Java 工具 https://github.com/xiangyuecn/AreaCity-Query-Geometry

本工具核心功能:使用 jts 库从省市区县乡镇边界数据( AreaCity-JsSpider-StatsGov 开源库)或 geojson 边界数据文件中查找出和任意点、线、面有相交的矢量边界,内存占用低,性能优良( 1 秒可查 1 万个以上坐标对应的城市信息)。

省市区三级在线预览 https://xiangyuecn.github.io/AreaCity-JsSpider-StatsGov/assets/geo-echarts.html

对口,打个硬广告😁
yangzzzzzz
6 天前
高德
santom
6 天前
谷歌地图有现成的 api 判断一个点是否在指定区域内,containsLocation 。感觉是不是能实现。别的地图应该也有现成的。
省份区域网上应该有现成的 geoJson
skallz
6 天前
有一个开源库有做这个,判断传入坐标是否在某个地区经纬度坐标集内: https://github.com/pikaz-18/pikaz-location
manhere
6 天前
这不就是个电子围栏?
zblongfei
6 天前
wzcloud
6 天前
公司有钱的话,直接调百毒或高德的 api……

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1095234

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX