質問

いきもの

って変換する緯度経度座標OSGB36xとyを使用する。.4図書館があります。

は誰です。I入力する必要があるsrcPrj4StringとdestPrj4String変数など

文字列srcPrj4String="+proj=longlat+ellps=WGS84+データ=WGS84+no_defs";
文字列destPrj4String="+proj=utm+ゾーン=11+ellps=GRS80+データ=NAD83+台=m";

ができないのか、destPrj4StringべきOSGB36-ピックアップしました。データは+データ=OSGB36もお世話になりたいと思いまみ動作しない

そのアイデア?

多くのかまいません。

leddy

役に立ちましたか?

解決 2

わかった:

string srcPrj4String = "+proj=longlat +ellps=WGS84 +towgs84=0,0,0 +no_defs";
string destPrj4String = "+proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717 +x_0=400000 +y_0=-100000 +ellps=airy +towgs84=446.448,-125.157,542.060,0.1502,0.2470,0.8421,-20.4894 +units=m +no_defs";

乾杯!

他のヒント

グーグルは、ジョン・スティーブンソン博士のこれを発見しました。マンチェスター大学地球科学の学者-誰でもそれを正しくする必要がある人。引用です。


問題は、OSGB36にアクセスするにはプロジェクションと データム変換 2007年10月以前は、projは そのため、大きなオフセットが生じます。確認してもいい 「proj -v」を実行するか、または epsgファイル:

cat /usr/share/proj/epsg | grep -A 1 "British National Grid" 

# OSGB 1936 / British National Grid 
<27700> +proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717 +x_0=400000 
+y_0=-100000 +ellps=airy +datum=OSGB36 +units=m +no_defs  <> 

新しいバージョンには+ datum = OSGB36があります。

古いバージョンがある場合は、次の行に置き換えることで修正できます。

+proj=tmerc +lat_0=49 +lon_0=-2 +k=0.999601 +x_0=400000 +y_0=-100000 
+ellps=airy 
+towgs84=446.448,-125.157,542.060,0.1502,0.2470,0.8421,-20.4894 +units=m 
+no_defs <> 

複雑なことは、OSGB36がわずかに歪められている GPSに関して プロジェクション(WGS84やETRS89など)。このオフセットは小さく、そして 高精度の測量にのみ重要です。についての多くの検索 OSGB36オフセットは、これに関連するページを表示します。あなたがしたい場合は これも補って、 nadgridファイルをダウンロードして、使用できます。私のデータでは、これは移動しました 約1 mのポイント。

EPSG:27700にspatialreference.org 与える各種文字列を定義するためのこのしみながらおくつろぎproj4.

こちらのコード例は、 ruby のproj4のバインディング:

#!/usr/bin/ruby
require 'rubygems'
require 'proj4'

#Some example WGS84 lat lon coordinates to convert:
lon = -0.10322
lat = 51.52237

srcPoint = Proj4::Point.new(Math::PI * lon.to_f / 180, 
                            Math::PI * lat.to_f / 180)

srcPrj  = Proj4::Projection.new("+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs") 
destPrj = Proj4::Projection.new("+proj=tmerc +lat_0=49 +lon_0=-2 +k=0.999601 +x_0=400000 +y_0=-100000 +ellps=airy +towgs84=446.448,-125.157,542.060,0.1502,0.2470,0.8421,-20.4894 +units=m +no_defs <>")

point = srcPrj.transform(destPrj, srcPoint)

puts "http://www.openstreetmap.org/?mlat=" + lat.to_s + "&mlon=" + lon.to_s + "&zoom=16"
puts "Converts to:";
puts "http://streetmap.co.uk/grid/" + point.x.round.to_s + "_" + point.y.round.to_s + "_106"

出力:

http://www.openstreetmap.org/?mlat=51.52237&mlon=-0.10322&zoom=16
に変換する
http://streetmap.co.uk/grid/531691_182089_106

ここでは正確です。もともとではないんだのdestPrj'文字列は、呼び出しの"前方法、これを拒否しいデータ変換は、すべて100m。でも必要な時に利用するsrcPrj'文字列との変換の方法を取得し、これをデータ変換部品が追加されています。

また私のこのブログ記事: Rubyのコードに変換する英国兵器調査座標系からWGS84? る純粋rubyバージョン(proj4)の

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top