Найден этот код в Интернете.
Я вставляю свои свойства ширины и высоты изображения, но по какой-то причине я получаю небольшое отклонение по ширине, полученное в пикселях.
Для координат (35.207887,32.104750) Iя получаю результат 844x171 в пикселях после выполнения кода.
Следовательно, я пришел к выводу, что отклонение соответствует параметру ширины изображения (высота пренебрежимо мала, так как кажется, что разностный диапазон составляет всего 2 пикселя).Однако, используя приложение MS Paint.Фактический результат должен быть 795x169, однако высота кажется хорошей.Я хотел бы быть направлен на конкретную точку в коде, где происходит отклонение
package gis;
import java.awt.Point;
public class Map {
/**
* width and height are the map bounds in pixels
*/
final int width=1433;
final int height=642;
public void getXYfromLatLon(double latitude, double longitude) {
// get x value
int mapWidth = 1433, mapHeight = 642;
int pX = (int)((longitude+180.)*(mapWidth/360.));
// convert from degrees to radians
double latRad = latitude*Math.PI/180.;
// get y value
double mercN = Math.log(Math.tan((Math.PI/4.)+(latRad/2.)));
int pY = (int)((mapHeight/2.)-(mapWidth*mercN/(2.*Math.PI)));
String str="x = "+pX+", y = "+pY;
System.out.println(str);
//System.out.println("x = "+pX+", y = "+pY);
}
public static void main(String[] args) {
/////////
Map m=new Map();
double latitude = 35.207895;
double longitude = 32.104740;
m.getXYfromLatLon(latitude, longitude);
// getXYfromLatLon(latitude, longitude);
/*latitude = 30.0; // (ֿ†)
longitude = 34.0; // (־»)
getXYfromLatLon(latitude, longitude);*/
}
}