如何将经度和纬度转换为点并使用绘制多边形中的点

时间:2012-04-18 06:47:48

标签: java sql-server gis latitude-longitude

我是GIS应用程序的新手,我有一点问题。我正在尝试使用地理坐标绘制多边形,但我需要将这些坐标转换为点,然后才能在绘制多边形时使用它们。 我不知道如何将这些坐标转换为用于多边形的点。我花了我所有的昨天发现如何做到这一点,但我仍然没有得到它。 我尝试在ms sql server 2008中使用geography数据类型但是在检索多边形或转换后的坐标时找不到java api。 请帮我提供一些如何执行此操作的示例代码。

非常感谢!!!“

这是我的代码。 '代码'

double earth=6371;
double focal=500;

double lat= 47.653 ;
double lon = -122.358  ;

double latitude = lat*Math.PI/180;
double longitude = lon*Math.PI/180;

double x = earth * Math.sin(latitude)*Math.cos(longitude);

double y = earth * Math.sin(latitude)*Math.sin(longitude);

double z = earth * Math.cos(latitude);

double projectedX = x*focal /(focal+z);

double projectedY = y * focal / (focal+z);

int magx = (int) Math.round(projectedX * 5); 
int magy = (int) Math.round(projectedY *5);

System.out.println ("MAG X : "+magx);
System.out.println ("MAG Y : "+magy);

我只是将d mag x和y插入到我的多边形中,但什么都没有出现。

1 个答案:

答案 0 :(得分:2)

这是从一组 n 坐标创建和检索SQL Server中的地理多边形的语法:

DECLARE @Polygon geography;
SET @Polygon = geography::STPolyFromText('POLYGON((Lon1 Lat1, Lon2 Lat2, ... Lonn Latn, Lon1 Lat1))', 4326); 
SELECT @Polygon;

(这假设您使用的是相对于WGS84基准面的地理坐标。如果您不知道这意味着什么,它们可能就是。)