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

6 天前
 godleon

需求

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

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

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

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

求推荐学习;

ps

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

3297 次点击
所在节点    程序员
32 条回复
GotKiCry
6 天前
地图都是有现成的接口
ggabc
6 天前
好几年前我是写了个爬虫
Iamadog
6 天前
最简单的办法就是用类似 echarts 等表格绘制中国地图时的 geojson 文件,里面有边界坐标,我记得 google 能搜到如何推算 geo 坐标是否包含经纬度
Iamadog
6 天前
frayesshi1
6 天前
qgis
Biiddd
6 天前
做过类似,uber 的算法,用经纬度比较哈希
murmur
6 天前
个人用直接经纬度换中文坐标是最简单的,你能到 10w 次访问么
felbryiozzzz
6 天前
json 数据: https://geojson.hxkj.vip/

判断是否在一个区域内:高德 SDK 的 Polygon contains https://lbs.amap.com/api/javascript-api-v2/documentation#polygoncontains
alwaysol
6 天前
我之前做个这个需求功能,是根据经纬度判断属于哪个省份,nodejs 的包 @turf/turf,你可以看看
wupeaking
6 天前
做个几年的 GIS 开发,这个需求蛮简单的,1. 直接调接口 (amap, bmap 都有类似的) 2. 有各个省份的 polygon 数据话直接存 pg ,调 pg 函数查询一句 SQL 语句就搞定。3. 有各个省份的 polygon 数据,不想用数据库,也能直接加载内存进行点面关系判断,C++的 boost geometry ,geos, gdal 库都支持,其他语言也有类似的库。不需要用到上述的 geohash 或者谷歌的 s2 ,uber 的 h3 等,这些是对位置进行了编码,不是适合用来做你这个需求,更适合用于大数据的快速索引查询。
uni
6 天前
刚做过,python 用 Shapely 非常好用
solar
5 天前
假设你已经有了区域的 geometry 数据,下面是一个示例接口:

from flask import Flask, request, jsonify
from shapely.geometry import Point, Polygon

app = Flask(__name__)

# 定义一个多边形区域,这里以一个简单的四边形为例
polygon_coords = [(30.6167, 104.0667), (30.6167, 104.1667), (30.7167, 104.1667), (30.7167, 104.0667)]
polygon = Polygon(polygon_coords)

@app.route('/is_point_in_polygon', methods=['POST'])
def is_point_in_polygon():
data = request.json
lat = data.get('lat')
lon = data.get('lon')

if lat is None or lon is None:
return jsonify({'error': 'Please provide both latitude and longitude'}), 400

point = Point(lon, lat) # 注意:shapely 的 Point 构造函数参数顺序是(x, y),即(lon, lat)

is_inside = polygon.contains(point)

return jsonify({'inside': is_inside})

if __name__ == '__main__':
app.run(debug=True)

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

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

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

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

© 2021 V2EX