Geometry几何结构与WKT空间坐标计算缓冲距离模型构建

geometry,英语单词,名词,意思是“几何学几何结构”。

http://www.baike.com/wiki/WKT

WKT,是一种文本标记语言,用于表示矢量几何对象、空间参照系统及空间参照系统之间的转换。它的二进制表示方式,亦即WKB(well-known binary)则胜于在传输和在数据库中存储相同的信息。该格式由开放地理空间联盟(OGC)制定。

概念/WKT

WKT(Well-known text)是一种文本标记语言,用于表示矢量几何对象、空间参照系统及空间参照系统之间的转换。它的二进制表示方式,亦即WKB(well-known binary)则胜于在传输和在数据库中存储相同的信息。该格式由开放地理空间联盟(OGC)制定。

几何对象/WKT

WKT可以表示的几何对象包括:点,线,多边形,TIN(不规则三角网)及多面体。可以通过几何集合的方式来表示不同维度的几何对象。

几何物体的坐标可以是2D(x,y),3D(x,y,z),4D(x,y,z,m),加上一个属于线性参照系统的m值。

以下为几何WKT字串样例:

POINT(6 10)LINESTRING(3 4,10 50,20 25)POLYGON((1 1,5 1,5 5,1 5,1 1),(2 2,2 3,3 3,3 2,2 2))MULTIPOINT(3.5 5.6, 4.8 10.5)MULTILINESTRING((3 4,10 50,20 25),(-5 -8,-10 -8,-15 -4))MULTIPOLYGON(((1 1,5 1,5 5,1 5,1 1),(2 2,2 3,3 3,3 2,2 2)),((6 3,9 2,9 4,6 3)))GEOMETRYCOLLECTION(POINT(4 6),LINESTRING(4 6,7 10))POINT ZM (1 1 5 60)POINT M (1 1 80)POINT EMPTYMULTIPOLYGON EMPTY

空间参照系统/WKT

一个表示空间参照系统的WKT字串描述了空间物体的测地基准、大地水准面、坐标系统及地图投影。

WKT在许多GIS程序中被广泛采用。ESRI亦在其shape文件格式(*.prj)中使用WKT。

以下是空间参照系统的WKT表示样例:

COMPD_CS["OSGB36 / British National Grid + ODN",PROJCS["OSGB 1936 / British National Grid",GEOGCS["OSGB 1936",DATUM["OSGB_1936",spheroid["Airy 1830",6377563.396,299.3249646,AUTHORITY["EPSG","7001"]],TOWGS84[375,-111,431,0,0,0,0],AUTHORITY["EPSG","6277"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["DMSH",0.0174532925199433,AUTHORITY["EPSG","9108"]],AXIS["Lat",NORTH],AXIS["Long",EAST],AUTHORITY["EPSG","4277"]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",49],PARAMETER["central_meridian",-2],PARAMETER["scale_factor",0.999601272],PARAMETER["false_easting",400000],PARAMETER["false_northing",-100000],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["E",EAST],AXIS["N",NORTH],AUTHORITY["EPSG","27700"]],VERT_CS["Newlyn",VERT_DATUM["Ordnance Datum Newlyn",2005,AUTHORITY["EPSG","5101"]],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["Up",UP],AUTHORITY["EPSG","5701"]],AUTHORITY["EPSG","7405"]]

缓冲距离计算模型构建

点-缓冲距离——>圆

缓冲距离模拟真实近似圆图形,至少需要8个点。取值16个点,32个点,64个点…之后点越多画的圆越准确。

img

线-缓冲距离——>面

最简单的处理就是两个面。

img

缓冲面积包括矩形和绿色半圆

img

矩形-缓存距离——>面

得到的缓冲结果包括四个矩形和4各四分之一圆弧。如果不在乎太准确可以将圆弧都换成矩形。

img

img

多边形——>不规则转规则图形

由于多边形的不确定性,没法按照常规方法处理。

img

查找距离最远的两个点以此为半径画圆。难点:需要算出中心点和半径。

img

或者通过最大边最远距离画矩形。难点:

  1. 确定起始点。
  2. 关注边的角度计算。

img

Geometry与WKT的应用

  • 计算区域内的点:区域匹配点
  • 附近人搜索:以点画圆

以点画圆的Geometry计算:

 /*** create a Circle  创建一个圆,圆心(x,y) 半径RADIUS* @param x* @param y* @param RADIUS 单位(米)* @return*/public static Polygon createCircle(double x, double y, final double RADIUS){final int SIDES = 32;//圆上面的点个数//距离转度double degree = RADIUS / (2 * Math.PI * 6378137.0) * 360;
//		System.out.println("度:"+degree);Coordinate coords[] = new Coordinate[SIDES+1];for( int i = 0; i < SIDES; i++){double angle = ((double) i / (double) SIDES) * Math.PI * 2.0;double dx = Math.cos( angle ) * degree;double dy = Math.sin( angle ) * degree;coords[i] = new Coordinate( (double) x + dx, (double) y + dy );}coords[SIDES] = coords[0];LinearRing ring = geometryFactory.createLinearRing( coords );Polygon polygon = geometryFactory.createPolygon( ring, null );return polygon;}

geometry多边形是否包含某个点:

/*** 判断一个点是否在多边形上* @param geomWKT* @return true为在面上,false则不是* @throws ParseException*/public static boolean isContains(String geomWKT,String pointWKT) throws ParseException{  WKTReader reader = new WKTReader( geometryFactory );  Geometry geom =reader.read(geomWKT);  Geometry point = reader.read(pointWKT);  return geom.contains(point);  } 

注:GEO计算能力可以使用Redis的geohash 和Postgresql的空间计算能力。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/555126.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

html5开发之ios屏幕适配,iOS开发屏幕尺寸以及屏幕适配等问题(转载内容)

原帖地址&#xff1a;http://blog.csdn.net/phunxm/article/details/42174937/仅供我个人收藏学习&#xff0c;原博主如不同意请联系qq651263878进行删除&#xff0c;在此表示感谢以及歉意。1.iPhone尺寸规格后续上市的iPhone7以及iPhone7plus 与六代相同1 inch 2.54cm 25.4…

flink checkpoint 恢复_Flink解析 | Apache Flink结合Kafka构建端到端的ExactlyOnce处理

周凯波(宝牛)阿里巴巴技术专家&#xff0c;四川大学硕士&#xff0c;2010年毕业后加入阿里搜索事业部&#xff0c;从事搜索离线平台的研发工作&#xff0c;参与将搜索后台数据处理架构从MapReduce到Flink的重构。目前在阿里计算平台事业部&#xff0c;专注于基于Flink的一站式计…

Java通过ftl模板导出word最详细教程

首先用office建一个word文档 参数写自己查询出来的字段&#xff0c;我在这里房里图片是方便找到位置替换为64位编码 模板创建好之后&#xff0c;另存为Word 2003 XML文档(*.xml) 存储为别的可能会报错&#xff0c;我只用这一种 存储为xml之后千万不要用word打开&#xff0c;最…

封装html ui 控件,聊聊前端 UI 组件:组件设计

本文首发于欧雷流。由于我会时不时对文章进行补充、修正和润色&#xff0c;为了保证所看到的是最新版本&#xff0c;请阅读原文。在本系列文章《聊聊前端 UI 组件&#xff1a;组件体系》中初步说明了 UI 组件的架构设计&#xff0c;本文将在此基础上进一步展开说说那篇文章中一…

live555推流rtsp_Hi3518 RTSP推流

1、openssl编译下载地址:http://distfiles.macports.org/openssl/解压后进入源码根路径执行./config no-asm no-async --prefix/home/chenyc/project/hi3518e/Hi3518E_SDK_V1.0.3.0/armlib/openssl --cross-compile-prefixarm-hisiv300-linux-#打开生成的makefile 删除-m64 在…

怎么两边同时取ln_男生“两边铲光”发型out了?试试这4款吧,剪完清爽又帅气...

发型对于男生来说是特别重要的&#xff01;女生可以通过化妆来让自己变得更完美&#xff0c;而男生想要改变自己的形象&#xff0c;是不敢轻易化妆的&#xff0c;只有通过改变自己的发型&#xff0c;才能更好地展现自己的魅力。现下男生最流行的发型&#xff0c;莫过于“两边铲…

ionic 修改组件默认样式_开源Magpie:组件库详解

开源项目专题系列(八)1.开源项目名称&#xff1a;magpie_fly2.github地址&#xff1a;https://github.com/wuba/magpie_fly3.简介&#xff1a;magpie_fly 是58集体出品组件库&#xff0c;统一管理日常开发中的基础组件及高阶组件&#xff0c;并提供了相对友好的方式介绍组件的具…

口袋之旅html5超强账号,口袋之旅特攻排行榜 强大的绝对能力

历史上是在金银版分了精灵的特攻物攻&#xff0c;在宝石版分了技能的特攻物攻&#xff0c;让很多精灵和技能得以重生。口袋之旅采用的是第二世代的精灵加第三世代的技能分类&#xff0c;于是特攻手也成为了一个需要挑选的部分&#xff0c;本文继续为你缩小挑选范围。特攻种族值…

使用ftl生成word

背景&#xff1a;根据word模板下载word。word里面需要填充数据&#xff0c;格式是固定的。首先在word中给数据起个变量名称 需要更换的数据改成${变量名!}&#xff0c;必须是英文的&#xff0c;加感叹号是为了防止null&#xff0c;如果数据是null&#xff0c;文档下载下来后会直…

什么叫做项目孵化_蓝莓孵化营12进5争夺战,项目人绽放自我不留遗憾

国内首档互联网职业竞技励志节目《蓝莓孵化营》&#xff0c;今晚22点在浙江卫视播出第十一期。本期节目中&#xff0c;第三事业群的12组项目人将为最终的5张终极考核入场券展开争夺。这一次&#xff0c;他们比拼的是以“2020”为主题的短视频&#xff0c;每一组项目人都拼尽了自…

七台河计算机网络工程专业,网络工程本科专业介绍

网络工程本科专业介绍网络工程专业是教育部第二类特色专业&#xff0c;比较热门&#xff0c;竞争力较大&#xff0c;考生报考此专业的时候要慎重。网络工程本科就业前景本专业的就业前景不错&#xff0c;学生可从事各级各类企事业单位的企业办公自动化处理、计算机安装与维护、…

Java实体类不要使用基本类型_为何封装javabean时,成员变量一律都不用基本类型

Java实体类不要使用基本类型 记录一下&#xff0c;在项目中因为基本类型&#xff0c;所产生的bug 包装类&#xff1a;8种基本类型的包装类 应用场景&#xff1a;数据库建立实体映射多用包装类 这两句话是重点&#xff1a;就是建立实体类禁止使用基本数据量类型&#xff01;…

一开机就提示脱机工作_「华为手机维修自学教程」华为手机的开机触发电路 华为维修技巧...

谈谈华为的开机触发电路华为这段时间的新闻不少&#xff0c;大家应该都有说了解。华为的强大意味着华为手机的维修市场越来越大。从事维修的朋友们你们准备好了吗&#xff1f;今天给大家说一说&#xff0c;华为手机的开机触发电路。修苹果手机的朋友大家都知道&#xff0c;电源…

html怎么保存曲奇,自制曲奇饼能保存多久 这些存放方法你懂吗

来源:站酷作者:Wandzilak虽然市场上的饼干种类很多&#xff0c;而且吃起来也感觉十分香&#xff0c;但是这些食品一般添加了比较多的防腐剂膨松剂&#xff0c;多吃度身体健康不是很好。因此很多人都喜欢自己在家里制作饼干&#xff0c;其中曲奇饼干就是很多人都喜欢制作的饼干之…

SpringBoot 整合mybatis-plus 高级功能及用法详解

springboot 整合mybatis-plus 高级功能及用法详解 学习并使用mybatis-plus的一些高级功能的用法例如&#xff1a; AR模式、 乐观锁 、逻辑删除 、自动填充、数据保护等功能 为了方便演示&#xff0c;咱们还是新建一个全新的项目 引入mp依赖 <dependency><groupId>…

8除以2表示什么意思_八字中劫财,比肩分别表示什么意思

◆◆比劫与其他十神的生克关系◆◆食伤&#xff1a;比劫生食伤财星&#xff1a;比劫克财星官星&#xff1a;官星克比劫印星&#xff1a;印星生比劫◆◆比劫帮身◆◆八字术语&#xff0c;比肩劫财均可助日干之力&#xff0c;如甲见甲(比)、乙(劫)、寅(禄)、卯(刃)之类&#xff0…

江苏省计算机一级考试基础知识,江苏省计算机一级考试大纲及复习指南

江苏省计算机一级考试大纲及复习指南江苏省计算机等级考试大纲(一级)计算机信息技术考试要求(试用)及使用说明1&#xff0e;掌握计算机信息处理与应用的基础知识。2&#xff0e;能比较熟练地使用六个常用的软件(IE、Outlook Express,Word,Excel,PowerPoint,和FrontPage)3掌握Ac…

MyBatis-plus 自动填充MetaObjectHandler不生效问题

背景 在项目中经常遇到一些数据需要自动填充&#xff0c;填充方法都是同一种规则&#xff0c;例如创建时间等。 1 自动填充方法配置 1.1 实体类添加注解 1.2 在handler包下实现元对象处理器接口 import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; import o…

html拖拽模态框,可拖拽的谷歌样式纯javascript模态窗口插件

draggable-google-modal是一款可拖拽的谷歌样式纯javascript模态窗口插件。该模态窗口插件使用纯js编写&#xff0c;模态窗口可以任意进行拖动&#xff0c;并且模态窗口可以全屏放大&#xff0c;或左右对齐占据半边屏幕。使用方法使用该模态窗口插件需要引入draggabilly.pkgd.j…

centos7修改网卡顺序_CentOS7网卡名称的修改

生产环境中&#xff0c;托管于机房的服务器经常会进行割接操作&#xff0c;为了能让网卡更容易让运维人员和机房识别&#xff0c;避免因为弄错网线或找错网卡导致业务中断&#xff0c;在服务器上架前就应该对所有网卡按照 eth0、eth1 的方式来命名&#xff0c;并按照网卡的物理…