QGIS Affine変換のパラメーターを計算しますか?


15

Dxf2Shpプラグインを使用して、QGISの空のプロジェクトに追加したベクターフロアプラン(DXF)があります。

チュートリアルとStackExchangeスレッドを読んでいますが、レイヤーを「ジオリファレンス」する方法を見つけることができないようです。

私は何らかの形で建物の角を選択し、緯度/経度を設定できると仮定しています。

私の目標は、TileMillTileStacheで使用できるシェープファイルをエクスポートすることです

プロジェクトの座標は実際には緯度/経度の座標であることに気付きました。

ここに画像の説明を入力してください

「Affine(Rotation、Translation、Scale)」プラグインを使用して、CAD図面を「配置」する必要があります。


回答:


2

OpenJumpを使用してアフィン変換パラメーターを計算すると、次の結果が得られます。

Scale x: 0.02550720529745378
Scale y: 0.025669710194697357
Rotation: -88.6538203230914
Dx: 357101.9 (Translation x)
Dy: 4512814.6 (Translation y)

これらのパラメーターを適切に適用すると、シェープファイルが使用するローカルCRSからWGS84 / UTM Zone 17 North(EPSG:32617)に変換されます。QGISでは、変換されたデータを必要なCRSにエクスポート(「名前を付けて保存」)できます。たとえば、Googleメルカトルや緯度/経度。

悪いニュースは、回転を含む変換にQGISアフィンプラグインを一度も使用できなかったことです。一部のアカウントでは、それは他の人には有効ですが、私には有効ではありません。誰かがこれが何であるかを私に言うことができれば私は感謝するでしょう。

スレッドがありましたここに読み、よく価値があるベクトルをaffiningに。affiningベクトルのための方法のIの使用が説明され、ここで最初のページの一番下にあります。

あなたが本当に行き詰まったら、シェープファイルへのリンクを投稿することができます。

後付け。OpenJumpメソッドを試す場合は、緯度/経度ポイントにWGS84 / UTM Zone 17 North(EPSG:32617)座標が必要です。

EPSG:32617: 361154.4 4513930.1
lat/long: 40.764622,-82.645056
shapefile coor: 947.3,1242.8

EPSG:32617: 361152.2 4513850.3
lat/long: 40.763903,-82.645064
shapefile coor: 4050.3,1035.7

EPSG:32617: 361246.5 4513886.7
lat/long: 40.764247,-82.643956
shapefile coor: 2710.5,4765.2

2
QGISのアフィン変換の一貫した、説明しやすいワークフローは存在しないようです。説明内のフォーラムリンクは無効です。このタスクでOpenJumpを使用する方法はすべて、ここで再び検索されます。これについて何かアップデートはありますか?
ベルントV.

SextanteツールキットのGRASS v.transformを使用して、ベクトルアフィン変換を実行できるようになりました。このドキュメントは、grass.osgeo.org / grass64 / manuals / v.transform.htmlにありますが、実際に必要なのはテキストファイルの形式だけです。N.
nhopton

27

アフィン変換は地理座標系に適用されないため、まず地理座標をデカルト2D座標系に投影する必要があります。

コントロールポイントまたは変換パラメーターからアフィン変換を適用できます。QGISプラグインは変換パラメーターを要求しますが、ユーザーがコントロールポイントを持っていることははるかに一般的です。

コントロールポイントから変換パラメーターを計算できます。アフィン変換の場合、6つの変換パラメーターがあるため、少なくとも3つの制御点が必要です(各制御点は4つの座標を意味します:Xsource、Ysource、Xtarget、Ytarget)。最小二乗。変換の品質を推定できます。アフィン変換は、ジオメトリの回転、シフト、スケーリング(各軸に異なる要因を適用することも可能)、およびスキューを可能にすることに注意してください。

コントロールポイントの形式は次のとおりです。

X SOURCE: Xs
Y SOURCE: Ys
X TARGET: Xt
Y TARGET: Yt

パラメータは次のとおりです。

a: Scale X 
e: Scale Y
d: Rotation X
b: Rotation Y
c: Translation X
f: Translation Y

そして、私たちは知っています:

Xt = X*a + Y*b + c
Yt = X*d + Y*e + f

したがって、この方程式系を解く必要があります(3つの制御点の場合):

¦ Xs1 Ys1 1 0 0 0 ¦ | a ¦   ¦ Xt1 ¦
¦ Xs2 Ys2 1 0 0 0 ¦ ¦ b ¦   ¦ Xt2 ¦ 
¦ Xs3 Ys3 1 0 0 0 ¦ ¦ c ¦ = ¦ Xt3 ¦ 
¦ 0 0 0 Xs1 Ys1 1 ¦ ¦ d ¦   ¦ Yt1 ¦ 
¦ 0 0 0 Xs2 Ys2 1 ¦ ¦ e ¦   ¦ Yt2 ¦ 
¦ 0 0 0 Xs3 Ys3 1 ¦ ¦ f ¦   ¦ Yt3 ¦

パラメータa、b、c、d、e、およびfが不明な場合。

パラメータa、b、c、d、e、fを計算したら(たとえば、このオンライン方程式ソルバーを使用して)、次のようにQGISプラグインインターフェイスに配置します。

X' = a*x + b*y + c
Y' = d*x + e*y + f

または:

アフィン変換パラメーター

これで2つの質問が解決すると思います。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.