如何重新投影shapefile?


10

我想重新投影一个QGIS项目,但是没有这样的选择。当寻找答案时ogr2ogr,通过重新投影每个矢量层(在此示例中为shapefile),我看到了该任务的建议。但是我没有得到预期的结果:

C:\temp>ogrinfo -al -so misc.shp
INFO: Open of `misc.shp'
      using driver `ESRI Shapefile' successful.

Layer name: misc
Geometry: Line String
Feature Count: 10
Extent: (21.267388, 42.015857) - (21.270225, 42.017470)
Layer SRS WKT:
PROJCS["MGI_Balkans_zone_7_deprecated",
    GEOGCS["GCS_MGI",
        DATUM["Militar_Geographische_Institute",
            SPHEROID["Bessel_1841",6377397.155,299.1528128]],
        PRIMEM["Greenwich",0],
        UNIT["Degree",0.017453292519943295]],
    PROJECTION["Transverse_Mercator"],
    PARAMETER["latitude_of_origin",0],
    PARAMETER["central_meridian",21],
    PARAMETER["scale_factor",0.9999],
    PARAMETER["false_easting",7500000],
    PARAMETER["false_northing",0],
    UNIT["Meter",1]]
id: Integer (10.0)

C:\temp>ogr2ogr -t_srs EPSG:4326 misc_re.shp misc.shp

C:\temp>ogrinfo -al -so misc_re.shp
INFO: Open of `misc_re.shp'
      using driver `ESRI Shapefile' successful.

Layer name: misc_re
Geometry: Line String
Feature Count: 10
Extent: (-34.004490, 0.000230) - (-34.004490, 0.000230)
Layer SRS WKT:
GEOGCS["GCS_WGS_1984",
    DATUM["WGS_1984",
        SPHEROID["WGS_84",6378137,298.257223563]],
    PRIMEM["Greenwich",0],
    UNIT["Degree",0.017453292519943295]]
id: Integer (10.0)

因此,新文件已更改了地理坐标系,但未进行投影。
怎么做?


您是否要重新投影shapefile?项目文件的.qqs结尾是一个文件,shape文件的结尾是.shp。我认为您不能重新投影项目文件,但我可能错了。
djq 2012年

1
我假设您已经知道QGIS中的“即时”重新投影功能,可以重新投影任何矢量层。
steko 2012年

@steko:如果djq回答的是“即时”,是的,我已经知道了。
zetah

1
不,那是另一种方式,它将永久更改数据。动态重新投影仅在QGIS项目中定义,并且将影响图层的可视化方式,但不会影响基础文件。
steko

谢谢,我对此一无所知,在Google搜寻中显示了您的意思。这正是我所需要的。如果您只能在昨天发布您的最新评论……我做了很多打字才能到达那里;)
zetah 2012年

Answers:


20

假设要重新投影shapefile,一种方法QGIS是加载文件,right-click在图层上选择Save As…,然后出现以下窗口:

在此处输入图片说明

如果单击browse旁边的CRS,则可以选择一个新的投影来保存文件。

编辑:

要重新投影一个文件夹中的所有shapfile,可以使用以下方法:

set "str1=_projected"
for %f in (E:\data\*.shp) do ogr2ogr -t_srs EPSG:4326 %str1%"misc_re.shp %f

(我尚未对此进行测试,并且不熟悉Windows 上的字符串连接,也无法解决ogr2ogr问题-但是此代码段循环遍历一个文件夹并在每个文件上运行某些内容。)


是的,那很棒,但是我必须在每个图层上都这样做,这很耗时。通过使用命令行,我希望一次重新投影所有shapefile(带有for循环)
zetah 2012年

所有shapefile是否都在一个文件夹中?
djq 2012年

是的,它们在同一个文件夹中
zetah 2012年

感谢您的努力,但您实际上阅读了我的问题吗?
zetah

3
是的...您无法重新投影qgis项目文件,这就是为什么我给出了第一个答案的原因。然后我意识到您想批量重新投影shapefile。一种方法是使用带有ogr的命令行在文件夹中循环浏览所有文件(另一种方法是查看是否可以将ogr传递给shapefile文件夹)。
djq 2012年
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.