[postgis-users] shp2pgsql -> pgsql2shp problem

Stephen Woodbridge woodbri at swoodbridge.com
Mon Oct 3 04:13:05 PDT 2005


strk at refractions.net wrote:
> Stephen, no way to specify dbf attribute sizes currently.
> Integer columns are output with a length of 16.
> Floating values with a length of 32.

OK, I can probably live with the Integer and Floating column changes, 
but the character column width are also changing. When I load and 
extract a shapefile the character columns widths change and they seem to 
change a different amount for each file loaded and extracted. I am 
assuming that there is a query to fine the max width of the data and to 
set the width of the column to the max. This is great if it is an 
option, but if you try to extract a province worth of data for each 
province then the column width varies with each file and you can not use 
the data in a mapserver tileindex.

notice the character column widths after extraction and before insertion 
  below.

-Steve

> Why do you find they are not the same as their sql definitions ?
> 
> --strk;
> 
> 
> 
> On Sun, Oct 02, 2005 at 12:30:58AM -0400, Stephen Woodbridge wrote:
> 
>>Hi all,
>>
>>I just tried to use shp2pgsql and pgsql2shp to rename some columns in 
>>Canadian hydrology shpfiles. I seems they named the original columns
>>"xxCART_" and "xxCART_ID" where xx is the province abbreviation. Each 
>>province's shapefile has different column names. So you can't build a 
>>mapserver tileindex. So I wrote the following bash script to use postgis 
>>to rename the columns:
>>
>>mkdir ../p-new
>>for x in ab bc mb nb nf ns nt nu on pe qc sk yt ; do
>>y=${x}drcarto_p
>>echo $y
>>shp2pgsql -c -W LATIN1 $y $y | psql -U pgsql -h localhost temp > /dev/null
>>echo "alter table $y rename ${x}cart_ to cart_;" | psql -U pgsql -h 
>>localhost temp
>>echo "alter table $y rename ${x}cart_id to cart_id;" | psql -U pgsql -h 
>>localhost temp
>>(cd ../p-new ; pgsql2shp -f $y -u pgsql -h localhost -g the_geom temp $y )
>>echo "drop table $y;" | psql -U pgsql -h localhost temp
>>done
>>
>>This works great EXCEPT the output column widths are not the same as the 
>> input column widths. See below! Is there a way to force this to be the 
>>same? Why are they not the same as their sql definitions?
>>
>>-Steve
>>
>>woodbri at linus:/u/data/canada/hydro/p-new$ dbfdump -info abdrcarto_p
>>Filename:       abdrcarto_p.dbf
>>Version:        0x03 (ver. 3)
>>Num of records: 3165
>>Header length:  353
>>Record length:  180
>>Last change:    1995/7/26
>>Num fields:     10
>>Field info:
>>Num     Name            Type    Len     Decimal
>>1.      AREA            N       32      10
>>2.      PERIMETER       N       32      10
>>3.      CART_           N       16      0
>>4.      CART_ID         N       16      0
>>5.      F_CODE          C       5       0
>>6.      HYC             N       16      0
>>7.      CGNDB_EN        C       5       0
>>8.      CGNDB_FR        C       5       0
>>9.      NAME_EN         C       26      0
>>10.     NOM_FR          C       26      0
>>woodbri at linus:/u/data/canada/hydro/p-new$ dbfdump -info ../p/abdrcarto_p 
>>
>>Filename:       ../p/abdrcarto_p.dbf
>>Version:        0x03 (ver. 3)
>>Num of records: 3165
>>Header length:  353
>>Record length:  261
>>Last change:    2003/6/20
>>Num fields:     10
>>Field info:
>>Num     Name            Type    Len     Decimal
>>1.      AREA            N       18      5
>>2.      PERIMETER       N       18      5
>>3.      ABCART_         N       11      0
>>4.      ABCART_ID       N       11      0
>>5.      F_CODE          C       5       0
>>6.      HYC             N       11      0
>>7.      CGNDB_EN        C       5       0
>>8.      CGNDB_FR        C       5       0
>>9.      NAME_EN         C       88      0
>>10.     NOM_FR          C       88      0
>>_______________________________________________
>>postgis-users mailing list
>>postgis-users at postgis.refractions.net
>>http://postgis.refractions.net/mailman/listinfo/postgis-users
> 
> _______________________________________________
> postgis-users mailing list
> postgis-users at postgis.refractions.net
> http://postgis.refractions.net/mailman/listinfo/postgis-users
> 




More information about the postgis-users mailing list