工作笔记(1)
本文为工作笔记,记录下来以后遇到类似的问题时方便查看。
随机生成坐标点,并判断该坐标点是否在落在特定的区域内,同时该点要在另外一个区域外面。
上个图形,就一目了然了。
我们随机的坐标点就是需要在区域A内部,并且要在区域B外部。
要构建一个这样的模型只需要知道左上角和右下角的坐标就可以了。
代码如下:
public class TempLonlat {
public static void main(String args[]) {
//外部模型坐标
double maxLon = 117.549847;
double maxlat = 39.549771;
double minlon = 116.921222;
double minlat = 38.647362;
//内部模型坐标
double inbouldmaxLon = 117.0946;
double inbouldmaxLat = 39.2626;
double inbouldminLog = 117.3223;
double inbouldminLat = 39.0435;
double resultlon = 0;
double resultlat = 0;
//lon满足条件的500条数据
for (int i = 0; i < 500; i++) {
while (true) {
resultlon = 0;
double ranlon = Math.random() * 300;
resultlon = returnlon(ranlon, maxLon, minlon, inbouldmaxLon, inbouldminLog);
if (resultlon > 0) {
break;
}
}
while (true) {
resultlat = 0;
double ranlat = Math.random() * 50;
// resultlat = returnlat(ranlat, maxlat, minlat, inbouldmaxLat, inbouldminLat);
if (ranlat <= maxlat && ranlat > minlat) {
resultlat = ranlat;
break;
}
}
int dengji = (int) (Math.random() * 9) + 1;
System.out.println(String.format("%.6f", resultlon) + "," + String.format("%.6f", resultlat)+","+dengji);
}
//lat满足条件的500条数据
for (int i = 0; i < 500; i++) {
while (true) {
resultlat = 0;
double ranlat = Math.random() * 50;
resultlat = returnlat(ranlat, maxlat, minlat, inbouldmaxLat, inbouldminLat);
if (resultlat > 0) {
break;
}
}
while (true) {
resultlon = 0;
double ranlon = Math.random() * 300;
// resultlat = returnlat(ranlat, maxlat, minlat, inbouldmaxLat, inbouldminLat);
if (ranlon <= maxLon && ranlon >= minlon) {
resultlon = ranlon;
break;
}
}
int dengji = (int) (Math.random() * 9) + 1;
System.out.println(String.format("%.6f", resultlon) + "," + String.format("%.6f", resultlat)+","+dengji);
}
}
// while (true) {
// resultlat = 0;
// double ranlat = Math.random() * 500;
// resultlat = returnlat(ranlat, maxlat, minlat, inbouldmaxLat, inbouldminLat);
// if (resultlat > 0) {
// break;
// }
// }
/**
* 计算符合要求的精度
*
* @param ranLon
* @param maxLon
* @param minlon
* @param inbouldmaxLon
* @param inbouldminLog
* @return
*/
public static double returnlon(double ranLon, double maxLon, double minlon, double inbouldmaxLon, double inbouldminLog) {
double d = 0;
if ((ranLon <= maxLon && ranLon >= minlon)) {
if (ranLon < inbouldmaxLon || ranLon > inbouldminLog) {
d = ranLon;
// d = Math.scalb(d, 6);
}
}
return d;
}
//first :38<= double<= 39 secend: d<39.04|| d>39.26
/**
* 计算符合条件的纬度
*
* @param lat
* @param maxlat
* @param minlat
* @param inbouldmaxLat
* @param inbouldminLat
* @return
*/
public static double returnlat(double lat, double maxlat, double minlat, double inbouldmaxLat, double inbouldminLat) {
double d = 0;
if (lat <= maxlat && lat >= minlat) {
if (lat < inbouldminLat || lat > inbouldmaxLat) {
d = lat;
// d = Math.scalb(d, 6);
}
}
return d;
}
}