Como redesenhar shapefiles?

10

Eu queria reprojetar um projeto QGIS, mas não existe essa opção. Ao procurar uma resposta, vejo ogr2ogrsugestões para esta tarefa, reprojetando cada camada de vetor (shapefile neste exemplo). No entanto, não recebo o resultado esperado:

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)

Portanto, o novo arquivo mudou o sistema de coordenadas geográficas, mas não é projetado.
Como fazer isso?

zetah
fonte
Você está tentando reprojetar um shapefile? Um arquivo de projeto tem um .qqsfinal, um shapefile termina com .shp. Não acho que você possa reprojetar um arquivo de projeto, mas posso estar errado.
DJQ
11
Suponho que você já conheça a reprojeção "on the fly" no QGIS que permite reprojetar qualquer camada vetorial.
STEKO
@steko: Se "on the fly" é o que é respondido pelo djq, sim, eu já sabia disso.
Zetah 12/12/12
11
Não, esse é outro caminho e ele mudará permanentemente os dados. A reprojeção instantânea é definida apenas no projeto QGIS e afetará como as camadas são visualizadas, mas não tocam nos arquivos subjacentes.
STEKO
Obrigado, eu não sabia disso, e pesquisar no Google me mostrou o que você quis dizer. É exatamente o que eu precisava. Se você só pode ter publicado o seu último comentário ontem ... Eu fiz monte de digitação para chegar lá;)
zetah

Respostas:

20

Supondo que você deseja reprojetar um shapefile, uma das formas QGISé carregar o arquivo, right-clickna camada, selecione Save As…e, em seguida, a seguinte janela será exibida:

insira a descrição da imagem aqui

Se você clicar browseao lado, CRSpoderá escolher uma nova projeção para salvar seu arquivo.

EDITAR:

Para reprojetar todos os shapfiles na única pasta, algo como isso poderia funcionar:

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

(Eu não testei isso e não estou familiarizado com a concatenação de strings no Windows, nem estou resolvendo o problema ogr2ogr - mas esse trecho de código percorre uma pasta e executa algo em cada arquivo.)

djq
fonte
Sim, isso é ótimo, mas eu teria que fazer isso para todas as camadas, o que é demorado. Usando linha de comando Eu estava esperando para re-projetar todos os shapefiles de uma vez (com loop)
zetah
Todos os shapefiles estão na mesma pasta?
DJQ
Sim, eles estão na mesma pasta
zetah 12/12/12
obrigado pelo seu esforço, mas você realmente leu minha pergunta?
Zetah 12/12/12
3
sim ... você não pode reprojetar um arquivo de projeto qgis e foi por isso que dei minha primeira resposta. Então percebi que você queria reprojetar os shapefiles em massa. Uma maneira de fazer isso é percorrer todos os arquivos em uma pasta usando a linha de comando com ogr (outra seria ver se você pode transmitir ao ogr uma pasta de shapefiles).
DJQ