พารามิเตอร์การคำนวณสำหรับ QGIS Affine Transformation?


15

ฉันมีเวกเตอร์แขวะ (DXF) ที่ฉันเพิ่มลงในโครงการว่างเปล่าในQGISโดยใช้ปลั๊กอิน Dxf2Shp

ฉันอ่านบทช่วยสอนและชุดข้อความ StackExchange แล้ว แต่ฉันไม่สามารถหาวิธี "เลย์เอาต์" เลเยอร์ของฉันได้อย่างไร

ฉันคิดว่าฉันสามารถเลือกมุมของอาคารและตั้งค่าละติจูด / ลองจิจูดได้

เป้าหมายของฉันคือการส่งออก shapefile ที่ฉันสามารถใช้กับTileMillและTileStache

ฉันรู้ว่าพิกัดของโครงการเป็นละติจูด / ลองจิจูดจริง:

ป้อนคำอธิบายรูปภาพที่นี่

และฉันต้องใช้ปลั๊กอิน "Affine (การหมุนการแปลมาตราส่วน) เพื่อ" วาง "การวาด CAD ของฉัน


คำถามที่คล้ายกัน: gis.stackexchange.com/questions/23998/ …
underdark

คำตอบ:


2

ใช้ OpenJump เพื่อคำนวณหาพารามิเตอร์การแปลงเลียนแบบ:

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

พารามิเตอร์เหล่านี้เมื่อนำไปใช้อย่างเหมาะสมควรเปลี่ยน shapefile ของคุณจาก CRS ท้องถิ่นที่ใช้เป็น WGS84 / UTM Zone 17 North (EPSG: 32617) ใน QGIS ข้อมูลที่แปลงแล้วจะสามารถส่งออก ("บันทึกเป็น") ไปยัง CRS ที่ต้องการ ตัวอย่างเช่น Google Mercator หรือ lat / lon

ข่าวร้ายคือฉันไม่เคยใช้ QGIS เลียนแบบปลั๊กอินสำหรับการแปลงที่มีการหมุน โดยบางบัญชีมันใช้ได้กับคนอื่น แต่ไม่ใช่สำหรับฉันดังนั้นมันจะต้องเป็นสิ่งที่ฉันทำผิด หากใครสามารถบอกฉันว่านี่คือสิ่งที่ฉันจะขอบคุณ

มีเธรดที่นี่เกี่ยวกับพาหะของเวกเตอร์ที่น่าอ่าน วิธีการที่ฉันใช้สำหรับเวกเตอร์ที่เชื่อมโยงกันได้อธิบายไว้ที่นี่ที่ด้านล่างของหน้าแรก

หากคุณติดขัดจริงๆคุณสามารถโพสต์ลิงก์ไปยังรูปร่างไฟล์และเราทุกคนสามารถเปลี่ยนมันได้

ความคิดภายหลัง หากคุณตัดสินใจที่จะลองใช้วิธี OpenJump คุณจะต้องใช้พิกัด WGS84 / UTM Zone 17 North (EPSG: 32617) สำหรับคะแนน lat / lon ของคุณ:

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 สำหรับงานนี้ท้ายที่นี่อีกครั้ง คุณอาจจะมีการปรับปรุงใด ๆ เกี่ยวกับเรื่องนี้?
Bernd V.

ตอนนี้คุณสามารถใช้ GRASS v.transform จากชุดเครื่องมือ Sextante เพื่อทำการแปลงเวกเตอร์เลียนแบบได้ เอกสารสำหรับสิ่งนี้สามารถพบได้ที่นี่: 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

หรือ:

เลียนแบบพารามิเตอร์การแปลง

ฉันคิดว่านี่แก้คำถามสองข้อของคุณได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.