[postgis-users] issue with pgsql2shp

strk at refractions.net strk at refractions.net
Mon Jun 5 06:56:04 PDT 2006


On Fri, Jun 02, 2006 at 09:05:46AM -0500, John Cole wrote:
> I'm trying to create shapefiles from tiger data inside our postgis database
> with pgsql2shp.  Since these shapefiles are for rendering with mapserver
> only, I'd like to pre-process these so they are optimal for rendering at
> certain scales and maximize mapserver performance.  I'm using "1.0
> USE_GEOS=1 USE_PROJ=1 USE_STATS=1" of PostGIS.
> 
> Here are some issues I've run into:
> 
> 1)  If I give pgsql2shp a query like "select the_geom from tgr_roads where
> cfcc like 'A1%' or cfcc like 'A2%'", I get the following error; ERROR:
> Cannot determine geometry type (empty table).  I found a mail list message
> from 2003 about adding a -t switch to specify the geometry type, but that
> doesn't appear in this version.  I'd like to do this without creating
> temporary tables.

You can use a query instead of a tablename.

> 2)  I'd like to make reduced resolution shapefiles for certain scales (for
> example, at 1M scale, no feature should be shorter than 250 meters, the size
> of one pixel on the map).  Does the simplify() function do this?  I have the
> following query, which I think does this, but I get the same error as in 1)
> above.

I suggest SnapToGrid() for pixel-based precision reduction.
Use a grid's cell size equal to your pixel size.

> select transform(simplify(transform(collect(the_geom),32616),250), 4326) as
> the_geom from tgr_roads where cfcc like 'A1%' or cfcc like 'A2%' group by
> hwy_num, rd_name
> 
> 3)  I don't see the equivalent densify() ArcInfo function in PostGIS, is
> there one?  When creating reduced resolution shapes, I like to densify they
> line to 1-10 meters and then reduce the resolution to 250 meters to ensure
> that the original shape of the file is retained.

Could this be segmentize() ?

--strk;



More information about the postgis-users mailing list