Come riprogettare gli shapefile?


10

Volevo riproiettare un progetto QGIS, ma non esiste tale opzione. Quando cerco una risposta, vedo ogr2ogrsuggerito questo compito, riproiettando ogni livello vettoriale (shapefile in questo esempio). Tuttavia non ottengo il risultato atteso:

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)

Quindi il nuovo file ha cambiato il sistema di coordinate geografiche, ma non è proiettato.
Come farlo?


Stai cercando di riproiettare uno shapefile? Un file di progetto ha una .qqsfine, uno shapefile termina con .shp. Non credo che tu possa riproiettare un file di progetto, ma potrei sbagliarmi.
djq

1
Presumo che tu conosca già la riproiezione "al volo" in QGIS che consente di riproiettare qualsiasi livello vettoriale.
steko,

@steko: se "al volo" è la risposta di djq, sì, lo sapevo già.
zetah,

1
No, questo è un altro modo e cambierà in modo permanente i dati. La riproiezione al volo è definita solo nel progetto QGIS e influenzerà il modo in cui i livelli vengono visualizzati ma non toccano i file sottostanti.
steko,

Grazie, non lo sapevo e Googling mi ha mostrato cosa intendevi. È esattamente quello di cui avevo bisogno. Se avessi potuto postare solo il tuo ultimo commento ieri ... Ho fatto molte
battute

Risposte:


20

Supponendo che si desideri riproiettare uno shapefile, un modo all'interno QGISè caricare il file, right-clicksul layer, selezionare Save As…, quindi viene visualizzata la seguente finestra:

inserisci qui la descrizione dell'immagine

Se fai clic browseaccanto CRSpuoi scegliere una nuova proiezione in cui salvare il tuo file.

MODIFICARE:

Per riproiettare tutti i shapfile in una cartella, qualcosa del genere potrebbe funzionare:

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

(Non l'ho provato e non ho familiarità con la concatenazione di stringhe su Windows, né sto risolvendo il problema ogr2ogr - ma questo frammento di codice scorre in una cartella ed esegue qualcosa su ogni file.)


Sì, è grandioso, ma dovrei farlo per ogni livello, il che richiede tempo. Usando la riga di comando speravo di
riproiettare

Tutti gli shapefile sono nella stessa cartella?
djq

Sì, sono nella stessa cartella
zetah

grazie per il tuo sforzo, ma hai letto davvero la mia domanda?
zetah,

3
sì ... non puoi riproiettare un file di progetto qgis ed è per questo che ho dato la mia prima risposta. Poi ho capito che volevi riproiettare gli shapefile in blocco. Un modo per farlo è quello di scorrere tutti i file in una cartella usando la riga di comando con ogr (un altro sarebbe vedere se riesci a passare ogr una cartella di shapefile).
djq
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.