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

331 天前
 godleon

需求

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

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

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

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

求推荐学习;

ps

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

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

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

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

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

© 2021 V2EX