package com.lairen.admin.controller.platform;import java.text.DecimalFormat;public class AngleUtil {/*** 求B点经纬度** @param A 已知点的经纬度,* @param distance   AB两地的距离  单位km* @param angle  AB连线与正北方向的夹角(0~360)*/final static double Rc = 6378137;final static double Rj = 6356725;double m_LoDeg, m_LoMin, m_LoSec;double m_LaDeg, m_LaMin, m_LaSec;double m_Longitude, m_Latitude;double m_RadLo, m_RadLa;double Ec;double Ed;private final static DecimalFormat DOUBLE_FORMAT = new DecimalFormat("#.000000");public AngleUtil(double longitude, double latitude) {m_LoDeg = (int) longitude;m_LoMin = (int) ((longitude - m_LoDeg) * 60);m_LoSec = (longitude - m_LoDeg - m_LoMin / 60.) * 3600;m_LaDeg = (int) latitude;m_LaMin = (int) ((latitude - m_LaDeg) * 60);m_LaSec = (latitude - m_LaDeg - m_LaMin / 60.) * 3600;m_Longitude = longitude;m_Latitude = latitude;m_RadLo = longitude * Math.PI / 180.;m_RadLa = latitude * Math.PI / 180.;Ec = Rj + (Rc - Rj) * (90. - m_Latitude) / 90.;Ed = Ec * Math.cos(m_RadLa);}/*** @Return:坐标 B点的经纬度*/public static String getMyLatLng(AngleUtil A, double distance, double angle) {double dx = distance * 1000 * Math.sin(Math.toRadians(angle));double dy = distance * 1000 * Math.cos(Math.toRadians(angle));double bjd = (dx / A.Ed + A.m_RadLo) * 180. / Math.PI;double bwd = (dy / A.Ec + A.m_RadLa) * 180. / Math.PI;bjd = Double.parseDouble(DOUBLE_FORMAT.format(bjd));bwd = Double.parseDouble(DOUBLE_FORMAT.format(bwd));String lnglat = bjd + "," + bwd;return lnglat;}/*** 获取两点坐标距离(米)** @param lng1 起始经度* @param lat1 起始纬度* @param lng2 目地地经度* @param lat2 目的地纬度* @return*/public static int getDistance(double lng1, double lat1, double lng2, double lat2) {/*double x, y, distance;x = (lon2 - lon1) * PI * R * Math.cos(((lat1 + lat2) / 2) * PI / 180) / 180;y = (lat2 - lat1) * PI * R / 180;distance = Math.hypot(x, y);return (int) (distance + 0.5);*/double dx = lng1 - lng2; // 经度差值double dy = lat1 - lat2; // 纬度差值double b = (lat1 + lat2) / 2.0; // 平均纬度double Lx = Math.toRadians(dx) * Rc * Math.cos(Math.toRadians(b)); // 东西距离double Ly = Rc * Math.toRadians(dy); // 南北距离return (int) Math.sqrt(Lx * Lx + Ly * Ly);}/*** @param longitude  经度* @param latitude   维度* @param linelength 距离(单位:km)* @param brim       几边形* @return*/public static String getLongAndLatString(double longitude, double latitude, double linelength, int brim) {int angle = 0;StringBuffer sb = new StringBuffer();String myLatLng = "";if (brim > 0) {angle = 360 / brim;AngleUtil angleUtil = new AngleUtil(longitude, latitude);for (int i = 0; i < brim; i++) {myLatLng = AngleUtil.getMyLatLng(angleUtil, linelength, angle * (i + 1));sb.append(myLatLng + ",");}} else {sb.append("请输入正确的参数!!!");}String longAndLats = sb.toString();return longAndLats.substring(0, longAndLats.length() - 1);}public static void main(String[] args) {double longitude = 114.502461;double latitude = 38.045474;double linelength = 1000;int angle = 6;String longAndLatString = AngleUtil.getLongAndLatString(longitude, latitude, linelength, angle);System.out.println(longAndLatString);}
}


												

根据经纬度画多边形(返回各个顶点坐标)相关推荐

  1. python画二次函数图像的顶点坐标为_二次函数顶点坐标公式

    函数在数学中占有很大的比例,但是函数的学习却很复杂.其考察的内容有很多方面, 开口方向.对称轴及坐标公式都是考察的重点.下面小编为大家整理了二次函数顶点坐标的 相关公式,希望能帮到大家. 一.基本简介 ...

  2. 五边形顶点坐标_任意给定五边形的5个顶点坐标,利用多边形填充的扫描算法,编写程序生成一个实心五边形...

    // // 功能: 填充多边形 // // 参数: lpPoints: 指向顶点坐标数组的指针,数组类型为POINT,多边形由它们顺次封闭连接得到 // nCount: 顶点的个数 // nColor ...

  3. OpenLayers 获得多边形顶点坐标

    OpenLayers官网目前为止,并没有提供获取多边形顶点坐标的直接DEMO.各位小菜鸟是不是很心机如焚.满世界找不到答案,自我怀疑了呢?不要着急,在这里将会柳暗花明.看官请看: 1.通过debug可 ...

  4. 识别图片文本坐标;透视变换;输入点集坐标,输出凸包(最大多边形)顶点坐标

    '''识别图片文本坐标 ''' import cv2 import pytesseract from pytesseract import Output from PIL import Image f ...

  5. 已知多边形各顶点坐标如何计算多边形面积

    多边形的面积可通过分割成很多个三角形面积之和来求得! 通过多边形各顶点坐标可以求得各边长,再采用海伦公式,计算分割后的小三角形的面积. 海伦公式如下: 假设在平面内,有一个三角形,边长分别为a.b.c ...

  6. PCL ——最小包围盒(画出了最小包围盒并求出顶点坐标)

    PCL --最小包围盒 2018年09月21日 15:31:01 不懂音乐的欣赏者 阅读数:35 标签: PCL包围盒外接矩形最小矩形收起 个人分类: PCL 1.包围盒简介   包围盒也叫外接最小矩 ...

  7. Python+OpenCV 图像处理系列(3)—— 画线、矩形、画圆、画椭圆、画多边形

    OpenCV 中的绘图函数 使用 OpenCV 绘制不同几何图形,其中包括的函数有 cv2.line() cv2.circle() cv2.rectangle() cv2.ellipse() cv2. ...

  8. 问题三十二:怎么用ray tracing画多边形(polygon, triangle)

    画多边形主要分为两步: 1,光线和多边形所在的平面相交,求得交点: 2,判断交点是否在多边形内: 32.1 光线和多边形所在的平面相交 分别定义光线.多边形和多边形所在平面.光线和平面的方程如下:(注 ...

  9. python用circle画多边形_pythonopencv圆、椭圆与任意多边形的绘制

    圆形的绘制 : OpenCV中使用circle(img,center,radius,color,thickness=None,lineType=None,shift=None)函数来绘制圆形 impo ...

最新文章

  1. fastjson这么快,为啥老外还是热衷 jackson?
  2. python简单代码编写-Python | 编写一个简单的Excel处理脚本
  3. 移动端web开发,click touch tap区别
  4. python变量和变量赋值的几种形式
  5. 源码解读腾讯 GT 的性能测试方案
  6. 导出excel数字前面的0消失_EXCEL文本之王TEXT函数的4个运用
  7. Ubuntu 16.04上安装Code::Blocks
  8. 华为路由器交换机基本配置方法
  9. 常用词句或缩略语汇总
  10. 版本控制gitlab
  11. 备战数学建模36-时间序列模型2
  12. python有理数_有理数生成器(Python)
  13. python星空代码_Python中的唯美星空代码详解!
  14. Kubernetes 3年生产中我们所学到的东西
  15. Matlab入门基础 note1——赋值与小数
  16. 透透彻彻IoC(你没有理由不懂!)
  17. CTF-Misc-二维码(一)
  18. 我的世界java版1.12.2版_我的世界Minecraft Java版1.12.2 pre2 发布
  19. python期末作业——BMR计算器
  20. 解决github访问慢问题

热门文章

  1. 到圣诞节了,不得不庆祝一下,用C++ Beep函数做了一个小程序
  2. 【交换】VLAN转发原理详解
  3. python正整数平方根_python怎么求一个数的平方根
  4. 第十八章 SQL函数 ASCII
  5. 第四章:项目整合管理 - (4.6 实施整体变更控制)
  6. 相对论通俗演义(1-10) 第十章
  7. 我的兄弟姐妹中感人的亲情
  8. 实验十四 团队项目评审课程学习总结
  9. web界面性能优化及SE0
  10. 计算机机房接地方案,机房防雷接地系统设计方案.doc