X Y Перевод в лат. - PullRequest
       28

X Y Перевод в лат.

0 голосов
/ 14 февраля 2010

у меня есть расположение мест в базе данных по x, y и форме. Как я могу преобразовать точки этого местоположения в пары широты и долготы?Есть ли инструмент или формула?

например x = 220162.636213404 y = 762057.914609313 это должно быть что-то вроде lat = 34.55667500000000000 lng = 31.68173300000000000

Спасибо!

Ответы [ 3 ]

2 голосов
/ 14 февраля 2010

Существует множество различных географических систем координат. Наиболее часто используется WGS84 ( EPSG: 4326 ). В Картах Google используется собственная сферическая проекция Меркатора, широко известная как Google Mercator, но ее значения по долготе - координаты WGS84.

Чтобы преобразовать ваши координаты, вы должны знать систему координат источника и назначения. После того, как вы поняли это, вы можете использовать библиотеку типа Proj4js для вычисления преобразования.

Proj4js также предоставляет онлайн-калькулятор координат, который может помочь вам выяснить, какую систему координат используют координаты в вашей базе данных.

Если вы ищете платформу C #: SharpMap отлично подходит для обработки всех аспектов геопространственных приложений.

1 голос
/ 14 февраля 2010

Это зависит от проекционной модели , которую вы решите использовать.

0 голосов
/ 14 февраля 2010

Asumming x, y - позиции, измеренные в пикселях, вы можете адаптировать этот фрагмент:

<code>> public Class MyMapView extends MapView {</p>

<blockquote>
  <p>.... 
     /**<br>
      * x,y are screen coordinates.  The location l is set to the<br>
  latitude and longitude that corresponds to this<br>
      * point on the screen.<br>
      */<br>
     public void setLocation(double x, double y, Location l) {<br>
          double latSpan = (getLatitudeSpan() / 1.0E6);<br>
          double lngSpan = (getLongitudeSpan() / 1.0E6);<br>
          Point center = getMapCenter();<br>
          double xPcnt = x / ((double)getWidth());<br>
          double yPcnt = y / ((double)getHeight());<br>
          double lat0 = (center.getLatitudeE6()/1.0E6 + (latSpan/2.0));<br>
          double lng0 = (center.getLongitudeE6()/1.0E6 - (lngSpan/2.0));<br>
          double lat = lat0 - (yPcnt * latSpan);<br>
          double lng = lng0 + (xPcnt * lngSpan);<br>
          l.setLatitude(lat);<br>
          l.setLongitude(lng);<br>
      } 
  ... 
  

Взято из: http://groups.google.com/group/android-developers/msg/f40fa714555c9617

...