QGIS仿射转换的计算参数?


15

我已经使用Dxf2Shp插件将矢量平面图(DXF)添加到QGIS中的空白项目中。

我一直在阅读教程和StackExchange线程,但似乎无法找到如何“地理参考”我的图层?

我假设我可以以某种方式选择建筑物的角落并设置纬度/经度。

我的目标是导出一个可以与TileMillTileStache一起使用的shapefile 。

我意识到项目坐标实际上是经/纬度坐标:

在此处输入图片说明

并且我需要使用“仿射(旋转,平移,缩放)”插件来“放置”我的CAD工程图。


Answers:


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仿射插件用于包含旋转的转换。从某些方面来看,它对其他人有效,但对我不起作用,因此这一定是我做错了。如果有人能告诉我这是什么,我将不胜感激。

有一个线程在这里对affining载体是良好的值得一读。我在第一页的底部介绍用于向量固定的方法。

如果您真的卡住了,可以发布一个指向shapefile的链接,我们都可以尝试将其转换。

事后思考。如果您决定尝试使用OpenJump方法,则需要纬度/经度点的WGS84 / UTM区域17北(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进行此任务的搜索都再次在这里结束。您可能对此有任何更新吗?
Bernd 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

要么:

仿射变换参数

我认为这解决了您的两个问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.