`

经纬度平面转换

 
阅读更多
package com.anyec.point;

public class Point3D {
	
	private Double x,y,z;
	
	public Point3D() {
		super();
	}

	public Point3D(Double x, Double y, Double z) {
		super();
		this.x = x;
		this.y = y;
		this.z = z;
	}

	public Double getX() {
		return x;
	}

	public void setX(Double x) {
		this.x = x;
	}

	public Double getY() {
		return y;
	}

	public void setY(Double y) {
		this.y = y;
	}

	public Double getZ() {
		return z;
	}

	public void setZ(Double z) {
		this.z = z;
	}
	
	public static double distance(Point3D p1,Point3D p2) {
		return Math.sqrt(Math.pow(p1.getX()-p2.getX(), 2)
				+Math.pow(p1.getY()-p2.getY(), 2)
				+Math.pow(p1.getZ()-p2.getZ(), 2));
	}
	
	public  double distanceTo(Point3D p2) {
		return Math.sqrt(Math.pow(this.getX()-p2.getX(), 2)
				+Math.pow(this.getY()-p2.getY(), 2)
				+Math.pow(this.getZ()-p2.getZ(), 2));
	}
	public  double distanceTo2(Point3D p2) {
		return Math.sqrt(Math.pow(this.getX()-p2.getX(), 2)
				+Math.pow(this.getZ()-p2.getZ(), 2));
	}
	public void print() {
		System.out.println("("+x+","+y+","+z+")");
	}
	
	public static Point3D toXYZ(double lng, double lat) {
		double radius = 6378.140 * 1000 * 100;// cm
		double phi = (180 + lng) * (Math.PI / 180);
		double theta = (90 - lat) * (Math.PI / 180);
		return new Point3D(-radius * Math.sin(theta) * Math.cos(phi), radius * Math.cos(theta),
				radius * Math.sin(theta) * Math.sin(phi));
	}
	
	public static void toLngLat(Point3D p) {
		double radius = 6378.140 * 1000 * 100;// cm
		double theta = Math.acos(p.getY()/radius);
		double phi=Math.acos(p.getX()/((-radius)*Math.sin(theta)));
		double lng=180-phi*180/Math.PI;
		double lat=90-theta*180/Math.PI;
		System.out.println(lng+" "+lat);

	}
	public static void main(String[] args) {
		//toXYZ(114.439322,30.41082).print();
//		System.out.println(toXYZ(114.439322,30.41082).distanceTo2(toXYZ(114.443307,30.408674)));
//		System.out.println(toXYZ(114.439322,30.41082).distanceTo(toXYZ(114.443307,30.408674)));
		//toLngLat(toXYZ(114.439322,30.41082));
		
		//toXYZ(114.439322,30.41082);
//		Point l1=new Point(114.439322,30.41082);
//		Point l2=new Point(114.443307,30.408674);
//		Point r1=new Point(114.439365,30.410866);
		Point3D l1 = toXYZ(114.439322,30.41082);
		Point3D l2 = toXYZ(114.443307,30.408674);
		Point3D r1 = toXYZ(114.439365,30.410866);
		double d=l1.distanceTo2(l2);
		double r=300;
		double d2=Math.sqrt(Math.pow(d, 2)+Math.pow(r, 2));
		//System.out.println();
		
		Circle c1=new Circle(l1.getX(),l1.getZ(),r);
		Circle c2=new Circle(l2.getX(),l2.getZ(),d2);
		Point[] pp1 = Circle.intersect(c1, c2);
		for(Point pp:pp1) {
			Point3D p1=new Point3D(pp.getX(),l1.getY(), pp.getY());
			toLngLat(p1);
		}
	}


}

 

分享到:
评论

相关推荐

    经纬度坐标转换为平面坐标的matlab实现

    批量点,矩阵形式给出,MATLAB经纬度坐标转换为平面坐标;Mercator投影变换。调用单点经纬度坐标转换为平面坐标的函数也在文件中。博客中有详细解释和C++代码...

    平面坐标与经纬度的转换

    在本例中,这个名为"MyGeocoordTranstorm"的DLL可能包含了平面坐标到经纬度,以及经纬度到平面坐标的转换算法。 转换过程涉及选择合适的椭球体模型,如北京54、西安80、WGS84和National2000。这些椭球体是地球几何...

    arcgis中经纬度到平面坐标之间的转换

    ### ArcGIS中经纬度到平面坐标之间的转换 #### 一、引言 在地理信息系统(GIS)领域,尤其是使用ArcGIS软件进行空间数据分析时,坐标转换是一项非常基础且重要的技能。坐标转换涉及到从一种坐标系统到另一种坐标...

    经纬度转平面直角坐标.rar_nearestb4r_younger4yf_经纬度 平面_经纬度坐标转换_经纬度转换

    经纬度坐标转换为平面坐标系 c++语言实现

    坐标转换与经纬度转换工具.zip

    “经纬度与XY转换.exe”是一个应用程序,能够实现地理坐标(经度/纬度)与平面坐标(X/Y)的相互转换。这在地图制作、GPS定位等场景中非常实用。 “cn.cod”可能是一个包含中国特定坐标转换规则或参数的代码文件。 ...

    经纬度坐标转换成空间直角坐标

    基于matlab软件,可将经纬度坐标转换成空间直角坐标。内含WGS84参考椭球参数,可通过输入自己的经纬度坐标,实现三维空间直角坐标的转换。

    GPS经纬度转换为平面坐标的c代码,包含具体推导公式

    然而,在某些应用场景下,如地图绘制或导航系统,我们可能需要将这些经纬度坐标转换为平面坐标。本文将详细探讨如何通过C语言实现这一转换过程,并提供具体的代码示例。 首先,我们需要理解GPS坐标系和笛卡尔坐标系...

    经纬度坐标转换软件

    7. **地图投影**:软件可能内置多种地图投影算法,用于将球面坐标转换为平面坐标,适应各种制图需求。 8. **坐标校正**:对于实地采集的数据,可能需要进行坐标校正,以纠正潜在的测量误差。 9. **地理编码与反...

    经纬度与XY坐标转换实用工具

    本文将详细讲解经纬度坐标系统与XY平面直角坐标系统的转换,并结合提供的“经纬度与XY转换.exe”实用工具,探讨如何进行这种转换。 首先,我们来了解两种坐标系统的基本概念: 1. 经纬度坐标系统:这是地球上最...

    1.zip_matlab 经纬度_matlab经纬度_经纬度_经纬度平面_经纬度转换

    用matlab编程,把经纬度转换为高斯平面坐标的代码

    经纬度转换平面坐标.zip

    本文将深入探讨如何使用C语言将经纬度坐标转换为平面坐标。经纬度是地球表面位置的球面坐标系统,而平面坐标则常用于地图绘制,是二维平面上的位置表示。 经纬度系统由经度和纬度组成,其中经度表示从本初子午线...

    经纬度坐标转换器经纬度坐标转换器

    这个坐标转换器可以将经纬度坐标转换成平面坐标

    gaosizs1.rar_经纬_经纬度_经纬度平面_经纬度转换_高斯正算

    在地理信息系统(GIS)和测绘领域,高斯正算是一种重要的数学方法,用于将地球表面的经纬度坐标转换为平面直角坐标。这种转换对于地图制作、导航系统以及地球科学的许多应用至关重要。高斯正算基于椭球模型,因为...

    坐标转换工具(经纬度-平面坐标转换)

    这里我们主要讨论的是将经纬度坐标转换为平面坐标的过程,这对于理解和处理地理数据至关重要。 经纬度坐标系统是地球表面的一种球面坐标表示方式,其中经度代表东西方向的角度,纬度表示南北方向的角度。这种坐标...

    经纬度坐标转换类库PROJ4

    通过这些投影方法,开发者可以将地球表面的经纬度坐标转换为平面坐标,便于计算和展示。 该库提供了Debug和Release两种版本的开发库,满足了开发过程中不同调试需求。Debug版本通常用于开发阶段,便于定位和修复...

    经纬度转换器 转换经纬度

    总的来说,经纬度转换是一个关键的地理信息技术,它涉及到地理坐标与平面坐标的相互转换,是地理信息系统和导航系统的基础。理解和掌握这些转换方法,对于从事GIS工作或是需要处理地理数据的人来说至关重要。通过...

    经纬度转换为xy,xy转换为经纬度

    在地理信息系统(GIS)中,我们经常需要在不同的坐标系之间进行转换,其中包括将经纬度坐标转换为XY坐标,以及反过来将XY坐标转换为经纬度。这种转换在地图制图、定位服务、导航系统等领域非常常见。下面我们将详细...

    批量点经纬度转换坐标

    批量点,矩阵形式给出,MATLAB经纬度坐标转换为平面坐标;Mercator投影变换。需要调用单点经纬度坐标转换为平面坐标的函数

    大地坐标与经纬度坐标转换

    "大地坐标与经纬度坐标转换"涉及到的主要概念是地理坐标系统和投影坐标系统的差异以及它们之间的转换方法。 1. **地理坐标系统**:以地球为参照对象的坐标系统,通常使用经纬度来表示位置。经纬度坐标系是一种球面...

    经纬度格式转换与计算距离软件

    本软件“经纬度格式转换与计算距离”旨在帮助用户方便地进行这两种格式之间的转换,并能计算两个地点之间的直线距离。下面将详细介绍相关知识点: 1. 经纬度表示法: - 度分秒形式:经纬度分为经度和纬度,分别...

Global site tag (gtag.js) - Google Analytics