Как перепроектировать шейп-файлы?

10

Я хотел перепроектировать проект QGIS, но такой возможности нет. При поиске ответа я вижу ogr2ogrпредложенное для этой задачи повторное проецирование каждого векторного слоя (шейп-файл в этом примере). Однако я не получаю ожидаемого результата:

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)

Таким образом, новый файл изменил географическую систему координат, но он не проецируется.
Как это сделать?

zetah
источник
Вы пытаетесь перепроектировать шейп-файл? Файл проекта имеет .qqsокончание, шейп- файл заканчивается .shp. Я не думаю, что вы можете перепроектировать файл проекта, но я могу ошибаться.
djq 12.12.12
1
Я предполагаю, что вы уже знаете репроекцию «на лету» в QGIS, которая позволяет перепроектировать любой векторный слой.
steko
@steko: Если «на лету» - это то, на что отвечает djq, да, я это уже знал.
Зета
1
Нет, это другой способ, и он навсегда изменит данные. Перепроецирование «на лету» определяется только в проекте QGIS и будет влиять на то, как слои визуализируются, но не затрагивают основные файлы.
steko
Спасибо, я не знал об этом, и поиск в Google показал мне, что вы имели в виду. Это именно то, что мне было нужно. Если бы вы могли опубликовать только ваш последний комментарий вчера ... Я много печатал, чтобы попасть туда;)
zetah 13.12.12

Ответы:

20

Предполагая, что вы хотите перепроецировать шейп QGIS-файл , один из способов - загрузить файл right-click, выбрать слой Save As…, и затем появится следующее окно:

введите описание изображения здесь

Если вы щелкнете browseрядом, CRSвы можете выбрать новую проекцию, чтобы сохранить в ней файл.

РЕДАКТИРОВАТЬ:

Чтобы перепроектировать все шейп-файлы в одной папке, может работать что-то вроде этого:

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

(Я не проверял это и не знаком с конкатенацией строк в Windows, а также не решаю проблему ogr2ogr - но этот фрагмент кода проходит по папке и запускает что-то для каждого файла.)

djq
источник
Да, это здорово, но я бы сделал это для каждого слоя, что отнимает много времени. Используя командную строку, я надеялся перепроектировать все шейп-файлы одновременно (с циклом for)
zetah 12.12.12
Все шейп-файлы в одной папке?
djq 12.12.12
Да, они находятся в одной папке
Zetah
спасибо за ваши усилия, но вы действительно прочитали мой вопрос?
Зетов
3
да ... вы не можете перепроектировать файл проекта qgis, поэтому я дал свой первый ответ. Затем я понял, что вы хотите перепроектировать шейп-файлы оптом. Один из способов сделать это состоит в том, чтобы перебрать все файлы в папке с помощью командной строки с помощью ogr (другой способ проверить, можно ли передать ogr папку с шейп-файлами).
djq 12.12.12