[Gfoss] Export da postgis a shapefile

Paolo Corti pcorti a gmail.com
Mer 9 Apr 2014 09:33:35 CEST


Ciao

2014-04-08 18:44 GMT+02:00 Rocco Pispico <r.pispico a gmail.com>:
> Ciao a tutti,
> in QGis quando si esporta da postgis a shapefile se i campi della tavola
> sono più lunghi di 10 caratteri vengono tagliati e fissato un nome con un
> numero progressivo.
> Ho provato ad impostare un alias nelle proprietà dei campi ma non viene
> mantenuto nell'export.
> Avete da suggerirmi un modo furbo e veloce per non dover dover toccare
> tavole, query e viste su una cinquantina di campi di un po' di tavole e allo
> stesso tempo non dover usare postgres come un dbf.
>
> Il fomato shapefile in output in questo lavoro è un vincolo.
> Grazie
>

puoi rinominare i campi in export con un alias, anziche' lasciarli
troncare al 10o carattere da PostgreSQL, usando la seguente sintassi
di ogr2ogr:

ogr2ogr myshape PG:"dbname='mydb' host='localhost' port='5432'
user='myuser' password='mypassword'" -sql "SELECT field1 as alias1,
the_geom FROM mytable"

oppure con pgsql2shp:

pgsql2shp -f "/path/to/shape" -h localhost -u myuser -P mypasswrord mydb
"SELECT field1 as alias1, the_geom FROM mytable'"

meglio ancora, definirti un OGR virtual format che puoi riusare anche
successivamente o per vedere direttamente su QGIS la tabella PostGIS
con gli stessi nomi che avresti sullo shapefile (pur rimanendo
invariati sul db), e quindi esportarli con tali alias:

<OGRVRTDataSource>
    <OGRVRTLayer name="remapped_layer">
        <SrcDataSource>PG:"dbname='mydb' host='localhost' port='5432'
user='myuser' password='mypassword'</SrcDataSource>
        <SrcSQL>SELECT field1 as alias1, the_geom FROM mytable</SrcSQL>
    </OGRVRTLayer>
</OGRVRTDataSource>

ciao
p

-- 
Paolo Corti
Geospatial software developer
web: http://www.paolocorti.net
twitter: @capooti
skype: capooti


Maggiori informazioni sulla lista Gfoss