「java经度」经纬度java要用什么数据类型
今天给各位分享java经度的知识,其中也会对经纬度java要用什么数据类型进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、java经度纬度计算
- 2、如何用java实现“通过根据给定的经纬度生成区域”?
- 3、java如何用经纬度计算两点水平和垂直距离
- 4、在java开发过程中,经度是116°20'43" 我现在想截取里面的数字,该怎么写
- 5、java 里 两点的经度纬度怎么算距离
java经度纬度计算
一般假设小块区域是平面。
先通过
纬度计算当地两个经度之间的距离(不同纬度上,不同经度距离是不一样的)
再计算两个经度间的距离。然后反切就可以算出角度。
如何用java实现“通过根据给定的经纬度生成区域”?
使用第三方jar包 jts包 例子如下面 \x0d\x0a\x0d\x0a//一个面所包含的经纬度(标准的经纬*3600000) \x0d\x0aString str = "POLYGON ((419164412 143703543, 419164481 143702737, 419164494 143702527,419164412 143703543))"; \x0d\x0aWKTReader wkt = new WKTReader(); \x0d\x0aGeometry geojudge1 = wkt.read(str); \x0d\x0aint xpoi = 419164481; \x0d\x0aint ypoi = 143702737; \x0d\x0aGeometry geojudge2 = wkt.read("POINT(" + xpoi + " " + ypoi + "))"); \x0d\x0a\x0d\x0aif(geojudge1.intersects(geojudge2)) { \x0d\x0aSystem.out.println("xpoi、ypoi 在这个面里"); \x0d\x0a} \x0d\x0a\x0d\x0aps:在构成一个面的时候,第一个点的经纬度一定要与最后一个点的经纬度相同。否则会报错误:java.lang.IllegalArgumentException: points must form a closed linestring
java如何用经纬度计算两点水平和垂直距离
/**
* 计算地球上任意两点(经纬度)距离
*
* @param long1
* 第一点经度
* @param lat1
* 第一点纬度
* @param long2
* 第二点经度
* @param lat2
* 第二点纬度
* @return 返回距离 单位:米
*/
public static double Distance(double long1, double lat1, double long2,
double lat2) {
double a, b, R;
R = 6378137; // 地球半径
lat1 = lat1 * Math.PI / 180.0;
lat2 = lat2 * Math.PI / 180.0;
a = lat1 - lat2;
b = (long1 - long2) * Math.PI / 180.0;
double d;
double sa2, sb2;
sa2 = Math.sin(a / 2.0);
sb2 = Math.sin(b / 2.0);
d = 2
* R
* Math.asin(Math.sqrt(sa2 * sa2 + Math.cos(lat1)
* Math.cos(lat2) * sb2 * sb2));
return d;
}
在java开发过程中,经度是116°20'43" 我现在想截取里面的数字,该怎么写
代码如下:
// 代表一个经度或纬度
class Angle {
// 度
private int degrees;
// 分
private int minutes;
// 秒
private int seconds;
public int getDegrees() {
return degrees;
}
public void setDegrees(int degrees) {
this.degrees = degrees;
}
public int getMinutes() {
return minutes;
}
public void setMinutes(int minutes) {
this.minutes = minutes;
}
public int getSeconds() {
return seconds;
}
public void setSeconds(int seconds) {
this.seconds = seconds;
}
@Override
public String toString() {
return degrees + "度" + minutes + "分" + seconds + "秒";
}
}
public class Demo18 {
// 解析经纬度
static Angle parse(String s) throws Exception {
Angle angle = new Angle();
char[] chars = s.toCharArray();
String num = "";
for(char ch : chars) {
if (Character.isDigit(ch)) {
num += ch;
} else if (ch == '°') {
angle.setDegrees(Integer.parseInt(num));
num = "";
} else if (ch == '\'') {
angle.setMinutes(Integer.parseInt(num));
num = "";
} else if (ch == '\"') {
angle.setSeconds(Integer.parseInt(num));
num = "";
} else {
throw new Exception("错误的格式。");
}
}
return angle;
}
public static void main(String[] args) {
String str = "116°20'43\"";
try {
Angle angle = parse(str);
System.out.println(angle);
} catch (Exception e) {
e.printStackTrace();
}
}
}
java 里 两点的经度纬度怎么算距离
/**
* 计算地球上任意两点(经纬度)距离
*
* @param long1
* 第一点经度
* @param lat1
* 第一点纬度
* @param long2
* 第二点经度
* @param lat2
* 第二点纬度
* @return 返回距离 单位:米
*/
public static double Distance(double long1, double lat1, double long2,
double lat2) {
double a, b, R;
R = 6378137; // 地球半径
lat1 = lat1 * Math.PI / 180.0;
lat2 = lat2 * Math.PI / 180.0;
a = lat1 - lat2;
b = (long1 - long2) * Math.PI / 180.0;
double d;
double sa2, sb2;
sa2 = Math.sin(a / 2.0);
sb2 = Math.sin(b / 2.0);
d = 2
* R
* Math.asin(Math.sqrt(sa2 * sa2 + Math.cos(lat1)
* Math.cos(lat2) * sb2 * sb2));
return d;
}
java经度的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于经纬度java要用什么数据类型、java经度的信息别忘了在本站进行查找喔。