Parameter komputasi untuk transformasi Affine QGIS?

15

Saya punya floorplan vektor (DXF) yang saya tambahkan ke proyek kosong di QGIS menggunakan plugin Dxf2Shp.

Saya telah membaca tutorial dan utas StackExchange, tapi sepertinya saya tidak bisa menemukan cara "georeferensi" lapisan saya?

Saya berasumsi saya entah bagaimana dapat memilih sudut bangunan dan mengatur lat / long.

Tujuan saya adalah mengekspor shapefile yang dapat saya gunakan dengan TileMill dan TileStache .

Saya menyadari bahwa koordinat proyek sebenarnya adalah koordinat lat / panjang:

masukkan deskripsi gambar di sini

dan saya perlu menggunakan plugin "Affine (Rotation, Translation, Scale)" untuk "menempatkan" gambar CAD saya.

Flackend
sumber
pertanyaan serupa: gis.stackexchange.com/questions/23998/…
underdark

Jawaban:

2

Menggunakan OpenJump untuk menghitung parameter transformasi affine menghasilkan:

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

Parameter ini ketika diterapkan dengan benar harus mengubah shapefile Anda dari CRS lokal yang digunakannya ke WGS84 / UTM Zone 17 North (EPSG: 32617). Dalam QGIS, data yang diubah kemudian dapat diekspor ("disimpan sebagai") ke CRS yang diperlukan; Google Mercator atau lat / lon, misalnya.

Berita buruknya adalah bahwa saya belum pernah berhasil menggunakan plug-in affine QGIS untuk transformasi yang mencakup rotasi. Dengan beberapa akun itu berfungsi untuk orang lain tetapi tidak untuk saya, jadi itu pasti sesuatu yang saya lakukan salah. Jika ada yang bisa memberi tahu saya apa ini, saya akan berterima kasih.

Ada utas di sini tentang affining vektor yang layak dibaca. Metode yang saya gunakan untuk affining vektor dijelaskan di sini di bagian bawah halaman pertama.

Jika Anda benar-benar macet, Anda dapat memposting tautan ke shapefile dan kami semua bisa mengubahnya.

Sebuah renungan. Jika Anda memutuskan untuk mencoba metode OpenJump, Anda memerlukan koordinat WGS84 / UTM Zone 17 North (EPSG: 32617) untuk titik lat / lon Anda:

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
nhopton
sumber
2
tampaknya tidak ada alur kerja yang konsisten dan mudah dijelaskan untuk transformasi affine di QGIS. Tautan forum dalam penjelasan Anda sudah mati. Semua pencarian cara menggunakan OpenJump untuk tugas ini berakhir di sini lagi. Apakah Anda mungkin memiliki pembaruan tentang ini?
Bernd V.
Anda sekarang dapat menggunakan GRASS v.transform dari kit alat Sextante untuk melakukan transformasi vektor affine. Dokumentasi untuk ini dapat ditemukan di sini: grass.osgeo.org/grass64/manuals/v.transform.html tetapi sebenarnya Anda hanya perlu melihat format file teks. N.
nhopton
27

Pertama, Anda perlu memproyeksikan koordinat geografis Anda ke sistem koordinat 2D kartesius, karena transformasi affine tidak berlaku untuk sistem koordinat geografis.

Anda dapat menerapkan transformasi affine dari titik kontrol atau dari parameter transformasi. Plugin QGIS meminta Anda parameter transformasi, tetapi jauh lebih umum bagi pengguna untuk memiliki titik kontrol.

Dari titik kontrol Anda dapat menghitung parameter transformasi. Untuk transformasi affine ada 6 parameter transformasi, jadi Anda memerlukan setidaknya 3 titik kontrol (setiap titik kontrol menyiratkan 4 koordinat: Xsource, Ysource, Xtarget, Ytarget), tetapi lebih banyak titik kontrol yang direkomendasikan untuk memiliki redundansi dan dengan demikian dapat menerapkan Kotak Terkecil, yang akan memberi Anda perkiraan kualitas transformasi. Ingatlah bahwa transformasi affine dapat berputar, bergeser, skala (bahkan menerapkan faktor yang berbeda pada setiap sumbu) dan geometri miring.

Poin kontrol harus memiliki formulir:

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

Parameternya adalah:

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

Dan kita tahu:

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

Jadi, Anda perlu menyelesaikan sistem persamaan ini (untuk 3 titik kontrol):

¦ 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 ¦

Di mana parameter a, b, c, d, e, dan f tidak diketahui.

Setelah Anda menghitung parameter a, b, c, d, e, dan f, (misalnya dengan pemecah persamaan online ini ) masukkan ke dalam antarmuka plugin QGIS seperti ini:

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

atau:

Afine parameter transformasi

Saya pikir ini memecahkan dua pertanyaan Anda.

Germán Carrillo
sumber