实现经纬度是否是中国国内
GA666666
2023-04-30 AM
36℃
0条
附件中为中国的边境线数据集,-full包含所有省份的边界数据集,目前这个方法的处理速度还不是很理想,可以将中国的经纬度范围作为前置条件,快速过滤掉大部分的非境内坐标再使用函数进行判断,大大提高了处理速度
from shapely.geometry import Point, Polygon
import json
# 读取中国边境线的数据
with open('/Users/ga666666/Desktop/data/中华人民共和国/100000.json') as f:
border_data = json.load(f)
# 获取边境线的多边形对象
border_polygons = []
for feature in border_data['features']:
for coord in feature['geometry']['coordinates']:
border_polygons.append(Polygon(coord))
# 定义一个函数用于判断经纬度是否在中国境内
def is_point_in_china(lon, lat):
point = Point(lon, lat)
for polygon in border_polygons:
if polygon.contains(point):
return True
return False
# # 使用示例
# lon, lat = 116.417959,39.901739 # 北京市的经纬度
# if is_point_in_china(lon, lat):
# print('在中国境内')
# else:
# print('不在中国境内')