【问题标题】:How to convert Longitude and Latitude to points and using the points in drawing a polygon如何将经度和纬度转换为点并在绘制多边形时使用这些点
【发布时间】:2012-04-18 06:47:48
【问题描述】:

我是 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 插入到我的多边形中,但什么也没有出现。

【问题讨论】:

  • 搜索标题中的关键字,即“转换经度纬度点多边形”会发现很多可能的命中,其中许多是在 SO 上。为什么不调查这些并尝试削减一些代码,而不是有效地要求人们向您提供解决方案?
  • 如果听起来我想被人喂,我很抱歉。但老实说,我对此做了很多研究。我只需要一个简单的解释,我可以在某个地方发布有关该问题的问题并获取方向。
  • “但老实说,我已经对此进行了很多研究。” 但请链接到线程并停止期望我们依赖一些随机陌生人的诚实今天刚加入这个网站(检查)。 更重要的是, 它还有助于向我们展示您所查看的内容,并帮助我们了解为什么它们不适合此用例。令人惊讶的是,SO 的人并不通灵(无论如何,他们中的大多数都不是)。 “我只需要一个简单的解释” 我敢打赌,您没有链接到的页面中有很多。 SO 不是一个“辅导我”的网站。
  • 你好安德鲁。我尝试使用我在 SO 上找到的这段代码将经度和纬度转换为点,但我不知道我是否做得对,因为多边形没有绘制任何东西。这是我的代码。我正在使用电话,所以如果我不使用代码标签,请见谅。 '代码'

标签: java sql-server gis latitude-longitude


【解决方案1】:

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

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

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

【讨论】:

  • 谢谢。我可以在我的 mssql 工作室上显示数据。我想在 java 应用程序中查看相同的多边形,不知道这是否可能。
  • 是的 - 通过 JDBC 连接到数据库,执行存储过程以检索您想要的结果,然后在 Java 中绘制它们。 Java 无法理解 SQL Server 的本机地理格式,因此请在查询中使用 ToString() 以将结果作为基于文本的 WKT 返回。然后您可以解析坐标字符串。
  • 谢谢。我尝试以字节为单位从地理列中检索数据,然后将其转换为字符串,但输出没有任何意义,因为它仍然是不可读的字节格式..
  • 不要以字节为单位检索它 - 使用 ToString() 将其作为 字符串 检索,然后解析该字符串。
  • 我使用 String a = resultSet.getString("location");但是将其解析为多边形会给我错误。我用了 polygon.addPoint(a);但它不接受这些值。
猜你喜欢
  • 1970-01-01
  • 2021-09-22
  • 2018-01-13
  • 2013-09-09
  • 1970-01-01
  • 2016-07-03
  • 2014-09-06
  • 2015-05-08
  • 1970-01-01
相关资源
最近更新 更多