shapely 经纬度相关计算
目录
判断经纬度是否落在轮廓里
获得轮廓的中心点
轮廓的中心点,及各个坐标串到中心点的最小距离
经纬度扩充
判断经纬度是否落在轮廓里
经纬度 lng,lat
轮廓 polygon,即经纬度坐标串,取值格式如下:
POLYGON ((113.757503 23.016089, 113.75749818472667 23.01599098285967, 113.7574837852804 23.015893909677985, 113.75745994033572 23.015798715322745, 113.7574268795325 23.015706316567634, 113.75738492126435 23.015617603263173))
is_in 得到的是 bool 值
from shapely import wktis_in = wkt.loads(polygon).contains(wkt.loads("POINT (" + str(lng) + ' ' + str(lat) + ')'))
获得轮廓的中心点
polygon 取值格式如第一个标题样例,在计算是必须转换为 shapely 能计算的对象
from shapely import wkt
from shapely.geometry import Point,polygonpolygon = wkt.loads(polygon) # 转换能计算的 shapely 对象
center = str(poly.centroid.x) + " " + str(poly.centroid.y)
或者
center = polygon.centroid
轮廓的中心点,及各个坐标串到中心点的最小距离
def def_projectpoly(project_poly):'''计算每条数据轮廓的中心点,及各个坐标串到中心点的最小距离'''# poly = project_poly['polygon'].iloc[0]def def_poly_min_distance(poly):poly_center = str(poly.centroid.x) + " " + str(poly.centroid.y)poly_wkt = poly.wkt.replace("POLYGON ","").replace("(","").replace(")","").replace("MULTI","")poly_wkt_list = poly_wkt.split(", ")# 计算坐标串各个组到中心点最短距离min_distance = 1000000for ind in poly_wkt_list:distance = geodistance(float(poly_center.split(" ")[0]),float(poly_center.split(" ")[1]),float(ind.split(" ")[0]),float(ind.split(" ")[1]))if distance < min_distance:min_distance = distancereturn min_distance# 将轮廓坐标串转换为 shape 对象project_poly['polygon'] = project_poly['polygon'].map(lambda x: wkt.loads(x))project_poly['min_distance'] = project_poly['polygon'].apply(lambda x:def_poly_min_distance(x))project_poly['poly_center'] = project_poly['polygon'].apply(lambda x:str(x.centroid.x) + " " + str(x.centroid.y))return project_polydef geodistance(lng1, lat1, lng2, lat2):'''计算两两坐标的距离,在此是计算经纬度到轮廓中心点的距离'''# lng1,lat1,lng2,lat2 = (120.12802999999997,30.28708,115.86572000000001,28.7427)lng1, lat1, lng2, lat2 = map(radians, [float(lng1), float(lat1), float(lng2), float(lat2)]) # 经纬度转换成弧度dlon = lng2 - lng1dlat = lat2 - lat1a = sin(dlat / 2) ** 2 + cos(lat1) * cos(lat2) * sin(dlon / 2) ** 2distance = 2 * asin(sqrt(a)) * 6371 * 1000 # 地球平均半径,6371kmdistance = round(distance / 1000, 3)return distance
经纬度扩充
扩充 50m,100m 写法如下
如果轮廓坐标串数量小于 10,则每个经纬度扩充 100m
from shapely import wkt
from shapely.geometry import Point,polygon# 扩充范围在这里,0.0005 为 50m,0.001 为 100m
project['polygon'] = project['polygon'].apply(lambda x:x.buffer(0.0005) if len(str(x)) > 10 else '')## 增加在这里改project['polygon'] = project.apply(lambda row:Point(row['LNG'],row['LAT']).buffer(0.001) if len(str(row['polygon'])) < 10 else row['polygon'],axis=1)
shapely 经纬度相关计算相关推荐
- 根据2点经纬度,计算方位角,以及计算2条线的夹角
项目场景1:根据2点经纬度,计算方位角 以真北为0度起点,由北向东向南向西顺时针旋转360度,主要是用于控制象限. 提示:这里简述项目相关背景: [csharp] <summary> // ...
- 瓦片地图坐标相关计算
http://www.cnblogs.com/junyuz/archive/2011/04/19/2021035.html 瓦片地图坐标相关计算 在给定level下,把行号tileY和列号tileX转 ...
- 北科大matlab,北科大matlab第五次作业多项式及其相关计算.doc
北科大matlab第五次作业多项式及其相关计算.doc <数学实验>报告实验名称多项式及其相关计算学院计算机与通信工程学院专业班级姓名学号2015年5月2一.[实验目的]1.学习多项式的拟 ...
- 给你两个经纬度,计算他们之间的距离
这些经纬线是怎样定出来的呢?地球是在不停地绕地轴旋转(地轴是一根通过地球南北两极和地球中心的假想线),在地球中腰画一个与地轴垂直的大圆圈,使圈上的每一点都和南北两极的距离相等,这个圆圈就叫作" ...
- 计算机组成解疑补漏之SDR、DDR及相关计算
SDRAM的相关计算以及理解SDR和DDR: 关于SDR.DDR的理解 首先,SDR的全称是SDR SDRAM,但是两个SDR的意思是完全不同的! SDRAM:Syncronous Dynamic R ...
- 计算机网络:子网划分、子网掩码、CIDR 、路由聚合相关计算详解
目录 IPv4 的分类 IPv4 的划分 无分类编址CIDR IPv4 地址应用规划 IPv4 的分类 连接到 Internet 中的每一个主机(或路由器)都分配一个 32 比特的全球唯一的标识符,即 ...
- (*长期更新)软考网络工程师学习笔记——数据链路层与网络层的相关计算题
目录 前言 一.海明码校验码的计算 二.最小帧长的计算 三.求默认网关地址 四.网络地址.主机地址.广播地址的区分和求解 五.判断是否属于网络或子网的主机地址 六.子网划分和求子网掩码 七.子网范围和 ...
- 依据地图上的经纬度坐标计算某个点到多边形各边的距离
http://www.th2w.com/article/85 依据地图上的经纬度坐标计算某个点到多边形各边的距离 最近公司有一个需求:依据地图上的经纬度坐标计算某个点到多边形各边的距离. 主要原理: ...
- matlab如何测两点的角度_根据2点经纬度,计算方位角,以及计算2条线的夹角
以真北为0度起点,由东向南向西顺时针旋转360度,主要是用于控制象限. 根据2点经纬度,计算方位角 [csharp] /// /// 给定2点,获得经纬度 /// /// 起点经纬度,都是以度为单位 ...
最新文章
- LeetCode--485
- 学习BeetlSQL总结(2)——查询API,更新API
- linux rpm包解压到当前目录
- 内联元素与块级元素及内外边距的影响
- 【转】SPSite、SPWeb对象模型(转winos.cn)
- ORM中的Model与DDD中的DomainModel
- 互联网日报 | 社区团购“九不得”新规出台;小米11官宣12月28日发布;长征八号首飞成功...
- jquery之超简单的div显示和隐藏特效demo
- HDU 3669 Cross the Wall(斜率DP+预处理)
- commit分拆多个 git_git如何合并只有两个commit到一个?
- Ecshop去版权方法?如何去除Ecshop版权?
- 访问不到webapp
- Python 之霍兰德人格与职业分析
- 霸气!女学霸考692分想当“程序媛”,女王式发言:也没见男生考得比我好
- 软件测试人员常用的SQL语句
- ubuntu 安装依赖包时出现The following packages have unmet dependencies:
- 【202106小白训练营】day03-java数据结构
- 2023大数据技术应用的五个主要场景总结
- 51nod 1830
- html5星际,纯原版复刻 牛人打造星际争霸HTML5版
热门文章
- 那些年,我们关注过的放大电路设计要点
- 【Java 入门】(六)表设计
- 拼多多微信页面h5 html,拼多多(7pdd)微信跳转h5页面打开app跳转任意url关注技术weixin://dl/business/?ticket...
- Zookeeper简介,架构,单机版搭建
- 北京飞漫软件魏永明:浏览器技术与三网融合
- win10此电脑不见了_Win10如何把控制面板放到桌面上?Win10控制面板不见了解决方法...
- 「源码解读」知名程序员 TJ 的 only 库
- hdu_1720 A+B Comeing
- Python --- 输入、输出、运算符
- html鼠标滚轮监听,javascript监听鼠标滚轮事件浅析