データベース内に x 、y および形状によって場所の場所があります。この場所のポイントを緯度と経度のペアに変換するにはどうすればよいですか? ツールや公式はありますか?
たとえば、 x =220162.636213404 y = 762057.914609313 lat = 34.55667500000000000 lng = 31.68173300000000000 のようになります。
ありがとう!
データベース内に x 、y および形状によって場所の場所があります。この場所のポイントを緯度と経度のペアに変換するにはどうすればよいですか? ツールや公式はありますか?
たとえば、 x =220162.636213404 y = 762057.914609313 lat = 34.55667500000000000 lng = 31.68173300000000000 のようになります。
ありがとう!
さまざまな地理座標系が多数あります。最も一般的に使用されるのは WGS84 ( EPSG:4326 ) です。Google マップは、一般に Google メルカトルとして知られている独自の球状メルカトル図法を使用しますが、その緯度経度値は WGS84 座標です。
座標を変換するには、ソースと宛先の座標系を知る必要があります。これを理解したら、Proj4jsのようなライブラリを使用して変換を計算できます。
Proj4jsは、オンラインの座標計算機も提供します。これは、データベース内の座標がどの座標系を使用しているかを把握するのに役立つ場合があります。
C# フレームワークを探している場合: SharpMapは、地理空間アプリケーションのすべての側面を処理するのに最適です。
これは、使用する投影モデルによって異なります。
x、y がピクセルで測定された位置であると仮定すると、このスニペットを適応させることができます。
> public Class MyMapView extends MapView {
....
/**
* x,y are screen coordinates. The location l is set to the
latitude and longitude that corresponds to this
* point on the screen.
*/
public void setLocation(double x, double y, Location l) {
double latSpan = (getLatitudeSpan() / 1.0E6);
double lngSpan = (getLongitudeSpan() / 1.0E6);
Point center = getMapCenter();
double xPcnt = x / ((double)getWidth());
double yPcnt = y / ((double)getHeight());
double lat0 = (center.getLatitudeE6()/1.0E6 + (latSpan/2.0));
double lng0 = (center.getLongitudeE6()/1.0E6 - (lngSpan/2.0));
double lat = lat0 - (yPcnt * latSpan);
double lng = lng0 + (xPcnt * lngSpan);
l.setLatitude(lat);
l.setLongitude(lng);
}
...
出典: http://groups.google.com/group/android-developers/msg/f40fa714555c9617