[postgis-users] problem creating and exporting a polygon withholeusing pgsql2shp

Ghislain Geniaux geniaux at avignon.inra.fr
Wed Mar 12 07:42:31 PDT 2008


I've found the solution : it's the export routine pgsql2shp that  
needs a table with at least 3 variables : a primary key (gid in my  
table), a geometry  (the_geom in my table) and a third variable  
whatever is this variable in order to produce a dbf file that is not  
empty.
With the following code, it's ok :

create table temp as select  r.gid, ST_Difference 
(r.the_geom,i.the_geom) as the_geom,area2D(ST_Difference 
(r.the_geom,i.the_geom)) as area  from recouv as r, recouv as i where  
i.gid=2 and r.gid=1;
ALTER TABLE temp ADD PRIMARY KEY (gID);
\q
pgsql2shp -f ext.shp conversion 'select * from matable2'

Thanks.

Ghislain.

Le 12 mars 08 à 15:15, Obe, Regina a écrit :

> Could be your export routine then.  I don't think ' is legal.  Need  
> to use double-quotes (or at least on windows) for the SQL. You can  
> also leave out the .shp although I guess its harmless.
>
> Try
> pgsql2shp -f ext conversion "select * from matable2"
>
> Hope that helps,
> Regina
>
> From: postgis-users-bounces at postgis.refractions.net [mailto:postgis- 
> users-bounces at postgis.refractions.net] On Behalf Of Ghislain Geniaux
> Sent: Wednesday, March 12, 2008 8:47 AM
> To: PostGIS Users Discussion
> Subject: Re: [postgis-users] problem creating and exporting a  
> polygon withholeusing pgsql2shp
>
> Thanks for your answer Regina,
>
> but ST_Difference does not solve the problem :
> ST_Difference and ST_Symdifference give the same polygon but the  
> export by pgsql2shp failled.
>
> conversion=# create table temp as
> conversion-# select  r.gid, ST_Difference(r.the_geom,i.the_geom) as  
> the_geom from recouv as r, recouv as i where i.gid=2 and r.gid=1;
> SELECT
> conversion=# ALTER TABLE temp ADD PRIMARY KEY (gID);
> NOTICE:  ALTER TABLE / ADD PRIMARY KEY will create implicit index  
> "temp_pkey" for table "temp"
> ALTER TABLE
> conversion=# SELECT geometrytype(the_geom), Nrings(the_geom), area2d 
> (the_geom) from temp;
>  geometrytype | nrings |      area2d
> --------------+--------+------------------
>  POLYGON      |      2 | 2177713.02017212
> (1 row)
>
>
> conversion=# create table temp as
> conversion-# select  r.gid, ST_symDifference(r.the_geom,i.the_geom)  
> as the_geom from recouv as r, recouv as i where i.gid=2 and r.gid=1;
> SELECT
> conversion=# ALTER TABLE temp ADD PRIMARY KEY (gID);
> NOTICE:  ALTER TABLE / ADD PRIMARY KEY will create implicit index  
> "temp_pkey" for table "temp"
> ALTER TABLE
> conversion=# SELECT geometrytype(the_geom), Nrings(the_geom), area2d 
> (the_geom) from temp;
>  geometrytype | nrings |      area2d
> --------------+--------+------------------
>  POLYGON      |      2 | 2177713.02017212
> (1 row)
>
>
> The two polygons are goods and well displayed in QGIS but exported  
> shapefiles are empty or corrupted.
>
>
>
> Le 12 mars 08 à 12:51, Obe, Regina a écrit :
>
>> I'm guessing your result may be a Geometrycollection which ESRI  
>> shape has no clue what to do with.
>>
>> If I understand you correctly, I think you really should be using  
>> ST_Difference instead of ST_SymDifference.
>>
>> So ST_Difference(polygon2, polygon1) - will give you that portion  
>> of polygon2 which does not intersect with polygon1 which would  
>> give you a polygon with polygon1 removed (a doughnut so to speak).
>>
>> The ST_Symdifference will give you that portion of polygon2 not in  
>> polygon1 + polygon1 not in polygon2 = the holed polygon you want +  
>> an empty geometry collection -> a geometry collection if taken  
>> strictly.
>>  I'm not sure if PostGIS will throw out the second part (the empty  
>> collection) - and at anyrate is a waste of processing power to  
>> even compute it.
>>
>> Hope that helps,
>> Regina
>>
>> From: postgis-users-bounces at postgis.refractions.net  
>> [mailto:postgis-users-bounces at postgis.refractions.net] On Behalf  
>> Of Ghislain Geniaux
>> Sent: Wednesday, March 12, 2008 6:29 AM
>> To: postgis-users at postgis.refractions.net
>> Subject: [postgis-users] problem creating and exporting a polygon  
>> with holeusing pgsql2shp
>>
>> Using a postgis table with Two polygons, in which polygon 1  
>> entirely contained in polygon 2, I've create a new polygon with a  
>> hole using :
>>
>> ------
>> create table matable2 as
>> select  r.gid, area(symdifference(r.the_geom,i.the_geom)) as area, 
>> (symdifference(r.the_geom,i.the_geom)) as the_geom from matable as  
>> r, matable as i where i.gid=2 and r.gid=1;
>>
>> ALTER TABLE matable2 ADD PRIMARY KEY (GID);
>> \q
>> pgsql2shp -f ext.shp conversion 'select * from matable2'
>> -----
>>
>> Area is correct, display of the polygon in QGIS is also correct,  
>> but the export by pgsl2shp produce an empty shapefile.
>>
>> How to deal with this problem?
>>
>> ------------------------------------------
>> Geniaux Ghislain
>>
>>
>>
>>
>> The substance of this message, including any attachments, may be  
>> confidential, legally privileged and/or exempt from disclosure  
>> pursuant to Massachusetts law. It is intended solely for the  
>> addressee. If you received this in error, please contact the  
>> sender and delete the material from any computer.
>>
>>
>>
>> Help make the earth a greener place. If at all possible resist  
>> printing this email and join us in saving paper.
>>
>>
>> _______________________________________________
>> postgis-users mailing list
>> postgis-users at postgis.refractions.net
>> http://postgis.refractions.net/mailman/listinfo/postgis-users
>
>
>
> ------------------------------------------
> Geniaux Ghislain
> INRA SAD Ecodéveloppement
> Site Agroparc
> Domaine St Paul
> 84914 Avignon Cedex 9
>
> Tél : 04 32 72 25 64
> Fax : 04 32 72 25 62
>
>
> _______________________________________________
> postgis-users mailing list
> postgis-users at postgis.refractions.net
> http://postgis.refractions.net/mailman/listinfo/postgis-users



------------------------------------------
Geniaux Ghislain
INRA SAD Ecodéveloppement
Site Agroparc
Domaine St Paul
84914 Avignon Cedex 9

Tél : 04 32 72 25 64
Fax : 04 32 72 25 62


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/postgis-users/attachments/20080312/e341506f/attachment.html>


More information about the postgis-users mailing list