Re: [postgis-users] simplifying (homogenize) a polygon

2013-11-21 Thread Nicolas Ribot
Hi Denis,

In your example, I don't understand how the parts of your
multipolygons can be adjacent. Are they valid ?
Do you have a visual example ?

Thank you

Nicolas


On 21 November 2013 07:32, Denis Rouzaud denis.rouz...@gmail.com wrote:
 Hello Rémi,

 I was hoping a simplest request without enabling topology but thanks anyway!

 Cheers,

 Denis


 On 20. 11. 13 18:26, Rémi Cura wrote:


 From what I understand of your needs, Postigs topology was designed for
 this.
 Cheers,

 Rémi-C


 2013/11/20 Denis Rouzaud denis.rouz...@gmail.com

 Hi all,

 I am drawing some multipolygons in QGIS and sometimes, I have parts of
 them which are adjacent and I'd like to homogenize them to have less parts
 and no adjacent parts.

 I could do this with a quite complex method:

 1. get the number of parts Z:
 SELECT ST_NumGeometries(geometry) FROMmytable WHERE id=123;

 2. do the simplification using ST_CollectionHomogenize:
 SELECT
 ST_Multi(ST_CollectionHomogenize(ST_Union(ST_GeometryN(geometry,n FROM
 mytable CROSS JOIN generate_series(1,Z) n WHERE id = 123;

 3. update manually the result in the table (copy paste).


 Does someone has something more straightforward???

 Thanks a lot!

 Best regards,

 Denis
 ___
 postgis-users mailing list
 postgis-users@lists.osgeo.org
 http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users




 ___
 postgis-users mailing list
 postgis-users@lists.osgeo.org
 http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users



 ___
 postgis-users mailing list
 postgis-users@lists.osgeo.org
 http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users
___
postgis-users mailing list
postgis-users@lists.osgeo.org
http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users


Re: [postgis-users] simplifying (homogenize) a polygon

2013-11-21 Thread Nicolas Ribot
Thanks for the explanation.


You could correct the multipolygons in one step, by using the
st_buildArea function, that merges a linework of linestrings,
preserving holes.
To extract polygons boundaries as linestring, st_boundary() is very handy:

The bad_multipg table contains invalid multipolygons with adjacent
parts (http://imgur.com/MP6Cy4f)

select gid, st_buildArea(st_boundary(geom))
from bad_multipg
group by gid;

Gives: http://imgur.com/RqlowFI

Nicolas

On 21 November 2013 13:50, Denis Rouzaud denis.rouz...@gmail.com wrote:
 Hi Nicolas,

 I edit my multi polygons in QGIS, and you're right the geometry becomes
 invalid if some parts have adjacent segments.

 In a simple case, I would have a multi polygons with 3 parts with 2 parts
 adjacent.
 http://imgur.com/zvxPFeR

 Although the geometry is invalid, my intention is to make it valid, and
 therefore merge the two parts, which is impossible in QGIS - AFAIK.

 So my intention was to save the geometry as this, and make it valid by a
 command.

 I could achieve this with a function:
 CREATE OR REPLACE FUNCTION distribution.simplemultipoly(geom geometry)
 RETURNS geometry AS
 $BODY$
 DECLARE
 num_geom integer;
 BEGIN
 SELECT ST_NumGeometries(geom) into num_geom;
 SELECT
 ST_Multi(ST_CollectionHomogenize(ST_Union(ST_GeometryN(geom,n
 FROM generate_series(1,num_geom) n
 INTO geom;
 RETURN geom;
 END;
 $BODY$
 LANGUAGE plpgsql;

 But I wondered if there was a more direct way.

 Cheers,

 Denis


 On 21. 11. 13 12:42, Nicolas Ribot wrote:

 Hi Denis,

 In your example, I don't understand how the parts of your
 multipolygons can be adjacent. Are they valid ?
 Do you have a visual example ?

 Thank you

 Nicolas


 On 21 November 2013 07:32, Denis Rouzaud denis.rouz...@gmail.com wrote:

 Hello Rémi,

 I was hoping a simplest request without enabling topology but thanks anyway!

 Cheers,

 Denis


 On 20. 11. 13 18:26, Rémi Cura wrote:


 From what I understand of your needs, Postigs topology was designed for
 this.
 Cheers,

 Rémi-C


 2013/11/20 Denis Rouzaud denis.rouz...@gmail.com

 Hi all,

 I am drawing some multipolygons in QGIS and sometimes, I have parts of
 them which are adjacent and I'd like to homogenize them to have less parts
 and no adjacent parts.

 I could do this with a quite complex method:

 1. get the number of parts Z:
 SELECT ST_NumGeometries(geometry) FROMmytable WHERE id=123;

 2. do the simplification using ST_CollectionHomogenize:
 SELECT
 ST_Multi(ST_CollectionHomogenize(ST_Union(ST_GeometryN(geometry,n FROM
 mytable CROSS JOIN generate_series(1,Z) n WHERE id = 123;

 3. update manually the result in the table (copy paste).


 Does someone has something more straightforward???

 Thanks a lot!

 Best regards,

 Denis
 ___
 postgis-users mailing list
 postgis-users@lists.osgeo.org
 http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users



 ___
 postgis-users mailing list
 postgis-users@lists.osgeo.org
 http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users



 ___
 postgis-users mailing list
 postgis-users@lists.osgeo.org
 http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users

 ___
 postgis-users mailing list
 postgis-users@lists.osgeo.org
 http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users



 ___
 postgis-users mailing list
 postgis-users@lists.osgeo.org
 http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users
___
postgis-users mailing list
postgis-users@lists.osgeo.org
http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users


Re: [postgis-users] simplifying (homogenize) a polygon

2013-11-21 Thread Denis Rouzaud

wow, thanks a lot!

indeed, much much nicer!

thanks again,

Denis


On 21. 11. 13 15:47, Nicolas Ribot wrote:

Thanks for the explanation.


You could correct the multipolygons in one step, by using the
st_buildArea function, that merges a linework of linestrings,
preserving holes.
To extract polygons boundaries as linestring, st_boundary() is very handy:

The bad_multipg table contains invalid multipolygons with adjacent
parts (http://imgur.com/MP6Cy4f)

select gid, st_buildArea(st_boundary(geom))
from bad_multipg
group by gid;

Gives: http://imgur.com/RqlowFI

Nicolas

On 21 November 2013 13:50, Denis Rouzaud denis.rouz...@gmail.com wrote:

Hi Nicolas,

I edit my multi polygons in QGIS, and you're right the geometry becomes
invalid if some parts have adjacent segments.

In a simple case, I would have a multi polygons with 3 parts with 2 parts
adjacent.
http://imgur.com/zvxPFeR

Although the geometry is invalid, my intention is to make it valid, and
therefore merge the two parts, which is impossible in QGIS - AFAIK.

So my intention was to save the geometry as this, and make it valid by a
command.

I could achieve this with a function:
CREATE OR REPLACE FUNCTION distribution.simplemultipoly(geom geometry)
RETURNS geometry AS
$BODY$
 DECLARE
 num_geom integer;
 BEGIN
 SELECT ST_NumGeometries(geom) into num_geom;
 SELECT
ST_Multi(ST_CollectionHomogenize(ST_Union(ST_GeometryN(geom,n
 FROM generate_series(1,num_geom) n
 INTO geom;
 RETURN geom;
 END;
$BODY$
LANGUAGE plpgsql;

But I wondered if there was a more direct way.

Cheers,

Denis


On 21. 11. 13 12:42, Nicolas Ribot wrote:

Hi Denis,

In your example, I don't understand how the parts of your
multipolygons can be adjacent. Are they valid ?
Do you have a visual example ?

Thank you

Nicolas


On 21 November 2013 07:32, Denis Rouzaud denis.rouz...@gmail.com wrote:

Hello Rémi,

I was hoping a simplest request without enabling topology but thanks anyway!

Cheers,

Denis


On 20. 11. 13 18:26, Rémi Cura wrote:


 From what I understand of your needs, Postigs topology was designed for
this.
Cheers,

Rémi-C


2013/11/20 Denis Rouzaud denis.rouz...@gmail.com

Hi all,

I am drawing some multipolygons in QGIS and sometimes, I have parts of
them which are adjacent and I'd like to homogenize them to have less parts
and no adjacent parts.

I could do this with a quite complex method:

1. get the number of parts Z:
SELECT ST_NumGeometries(geometry) FROMmytable WHERE id=123;

2. do the simplification using ST_CollectionHomogenize:
SELECT
ST_Multi(ST_CollectionHomogenize(ST_Union(ST_GeometryN(geometry,n FROM
mytable CROSS JOIN generate_series(1,Z) n WHERE id = 123;

3. update manually the result in the table (copy paste).


Does someone has something more straightforward???

Thanks a lot!

Best regards,

Denis
___
postgis-users mailing list
postgis-users@lists.osgeo.org
http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users



___
postgis-users mailing list
postgis-users@lists.osgeo.org
http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users



___
postgis-users mailing list
postgis-users@lists.osgeo.org
http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users

___
postgis-users mailing list
postgis-users@lists.osgeo.org
http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users



___
postgis-users mailing list
postgis-users@lists.osgeo.org
http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users

___
postgis-users mailing list
postgis-users@lists.osgeo.org
http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users


___
postgis-users mailing list
postgis-users@lists.osgeo.org
http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users


Re: [postgis-users] simplifying (homogenize) a polygon

2013-11-21 Thread Denis Rouzaud

Hi Nicolas,

I edit my multi polygons in QGIS, and you're right the geometry becomes 
invalid if some parts have adjacent segments.


In a simple case, I would have a multi polygons with 3 parts with 2 
parts adjacent.

http://imgur.com/zvxPFeR

Although the geometry is invalid, my intention is to make it valid, and 
therefore merge the two parts, which is impossible in QGIS - AFAIK.


So my intention was to save the geometry as this, and make it valid by a 
command.


I could achieve this with a function:
CREATE OR REPLACE FUNCTION distribution.simplemultipoly(geom geometry) 
RETURNS geometry AS

$BODY$
DECLARE
num_geom integer;
BEGIN
SELECT ST_NumGeometries(geom) into num_geom;
SELECT 
ST_Multi(ST_CollectionHomogenize(ST_Union(ST_GeometryN(geom,n

FROM generate_series(1,num_geom) n
INTO geom;
RETURN geom;
END;
$BODY$
LANGUAGE plpgsql;

But I wondered if there was a more direct way.

Cheers,

Denis

On 21. 11. 13 12:42, Nicolas Ribot wrote:

Hi Denis,

In your example, I don't understand how the parts of your
multipolygons can be adjacent. Are they valid ?
Do you have a visual example ?

Thank you

Nicolas


On 21 November 2013 07:32, Denis Rouzaud denis.rouz...@gmail.com wrote:

Hello Rémi,

I was hoping a simplest request without enabling topology but thanks anyway!

Cheers,

Denis


On 20. 11. 13 18:26, Rémi Cura wrote:


 From what I understand of your needs, Postigs topology was designed for
this.
Cheers,

Rémi-C


2013/11/20 Denis Rouzaud denis.rouz...@gmail.com

Hi all,

I am drawing some multipolygons in QGIS and sometimes, I have parts of
them which are adjacent and I'd like to homogenize them to have less parts
and no adjacent parts.

I could do this with a quite complex method:

1. get the number of parts Z:
SELECT ST_NumGeometries(geometry) FROMmytable WHERE id=123;

2. do the simplification using ST_CollectionHomogenize:
SELECT
ST_Multi(ST_CollectionHomogenize(ST_Union(ST_GeometryN(geometry,n FROM
mytable CROSS JOIN generate_series(1,Z) n WHERE id = 123;

3. update manually the result in the table (copy paste).


Does someone has something more straightforward???

Thanks a lot!

Best regards,

Denis
___
postgis-users mailing list
postgis-users@lists.osgeo.org
http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users




___
postgis-users mailing list
postgis-users@lists.osgeo.org
http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users



___
postgis-users mailing list
postgis-users@lists.osgeo.org
http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users

___
postgis-users mailing list
postgis-users@lists.osgeo.org
http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users


___
postgis-users mailing list
postgis-users@lists.osgeo.org
http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users

Re: [postgis-users] simplifying (homogenize) a polygon

2013-11-21 Thread Nicolas Ribot
You welcome.

In fact, thanks to you: I used to extract multipolygons boundaries
with such queries (!!):

st_exteriorRing((st_dumpRings(
(st_dump(geom)).geom
)).geom) as geom

until your use case makes me remember st_boundary function :)

Nicolas

On 21 November 2013 15:51, Denis Rouzaud denis.rouz...@gmail.com wrote:
 wow, thanks a lot!

 indeed, much much nicer!

 thanks again,

 Denis



 On 21. 11. 13 15:47, Nicolas Ribot wrote:

 Thanks for the explanation.


 You could correct the multipolygons in one step, by using the
 st_buildArea function, that merges a linework of linestrings,
 preserving holes.
 To extract polygons boundaries as linestring, st_boundary() is very handy:

 The bad_multipg table contains invalid multipolygons with adjacent
 parts (http://imgur.com/MP6Cy4f)

 select gid, st_buildArea(st_boundary(geom))
 from bad_multipg
 group by gid;

 Gives: http://imgur.com/RqlowFI

 Nicolas

 On 21 November 2013 13:50, Denis Rouzaud denis.rouz...@gmail.com wrote:

 Hi Nicolas,

 I edit my multi polygons in QGIS, and you're right the geometry becomes
 invalid if some parts have adjacent segments.

 In a simple case, I would have a multi polygons with 3 parts with 2 parts
 adjacent.
 http://imgur.com/zvxPFeR

 Although the geometry is invalid, my intention is to make it valid, and
 therefore merge the two parts, which is impossible in QGIS - AFAIK.

 So my intention was to save the geometry as this, and make it valid by a
 command.

 I could achieve this with a function:
 CREATE OR REPLACE FUNCTION distribution.simplemultipoly(geom geometry)
 RETURNS geometry AS
 $BODY$
  DECLARE
  num_geom integer;
  BEGIN
  SELECT ST_NumGeometries(geom) into num_geom;
  SELECT
 ST_Multi(ST_CollectionHomogenize(ST_Union(ST_GeometryN(geom,n
  FROM generate_series(1,num_geom) n
  INTO geom;
  RETURN geom;
  END;
 $BODY$
 LANGUAGE plpgsql;

 But I wondered if there was a more direct way.

 Cheers,

 Denis


 On 21. 11. 13 12:42, Nicolas Ribot wrote:

 Hi Denis,

 In your example, I don't understand how the parts of your
 multipolygons can be adjacent. Are they valid ?
 Do you have a visual example ?

 Thank you

 Nicolas


 On 21 November 2013 07:32, Denis Rouzaud denis.rouz...@gmail.com wrote:

 Hello Rémi,

 I was hoping a simplest request without enabling topology but thanks
 anyway!

 Cheers,

 Denis


 On 20. 11. 13 18:26, Rémi Cura wrote:


  From what I understand of your needs, Postigs topology was designed for
 this.
 Cheers,

 Rémi-C


 2013/11/20 Denis Rouzaud denis.rouz...@gmail.com

 Hi all,

 I am drawing some multipolygons in QGIS and sometimes, I have parts of
 them which are adjacent and I'd like to homogenize them to have less
 parts
 and no adjacent parts.

 I could do this with a quite complex method:

 1. get the number of parts Z:
 SELECT ST_NumGeometries(geometry) FROMmytable WHERE id=123;

 2. do the simplification using ST_CollectionHomogenize:
 SELECT
 ST_Multi(ST_CollectionHomogenize(ST_Union(ST_GeometryN(geometry,n
 FROM
 mytable CROSS JOIN generate_series(1,Z) n WHERE id = 123;

 3. update manually the result in the table (copy paste).


 Does someone has something more straightforward???

 Thanks a lot!

 Best regards,

 Denis
 ___
 postgis-users mailing list
 postgis-users@lists.osgeo.org
 http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users



 ___
 postgis-users mailing list
 postgis-users@lists.osgeo.org
 http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users



 ___
 postgis-users mailing list
 postgis-users@lists.osgeo.org
 http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users

 ___
 postgis-users mailing list
 postgis-users@lists.osgeo.org
 http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users



 ___
 postgis-users mailing list
 postgis-users@lists.osgeo.org
 http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users

 ___
 postgis-users mailing list
 postgis-users@lists.osgeo.org
 http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users


 ___
 postgis-users mailing list
 postgis-users@lists.osgeo.org
 http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users
___
postgis-users mailing list
postgis-users@lists.osgeo.org
http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users


[postgis-users] simplifying (homogenize) a polygon

2013-11-20 Thread Denis Rouzaud

Hi all,

I am drawing some multipolygons in QGIS and sometimes, I have parts of 
them which are adjacent and I'd like to homogenize them to have less 
parts and no adjacent parts.


I could do this with a quite complex method:

1. get the number of parts Z:
SELECT ST_NumGeometries(geometry) FROMmytable WHERE id=123;

2. do the simplification using ST_CollectionHomogenize:
SELECT 
ST_Multi(ST_CollectionHomogenize(ST_Union(ST_GeometryN(geometry,n 
FROM mytable CROSS JOIN generate_series(1,Z) n WHERE id = 123;


3. update manually the result in the table (copy paste).


Does someone has something more straightforward???

Thanks a lot!

Best regards,

Denis
___
postgis-users mailing list
postgis-users@lists.osgeo.org
http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users


Re: [postgis-users] simplifying (homogenize) a polygon

2013-11-20 Thread Rémi Cura
From what I understand of your needs, Postigs topology was designed for
this.
Cheers,

Rémi-C


2013/11/20 Denis Rouzaud denis.rouz...@gmail.com

 Hi all,

 I am drawing some multipolygons in QGIS and sometimes, I have parts of
 them which are adjacent and I'd like to homogenize them to have less parts
 and no adjacent parts.

 I could do this with a quite complex method:

 1. get the number of parts Z:
 SELECT ST_NumGeometries(geometry) FROMmytable WHERE id=123;

 2. do the simplification using ST_CollectionHomogenize:
 SELECT ST_Multi(ST_CollectionHomogenize(ST_Union(ST_GeometryN(geometry,n
 FROM mytable CROSS JOIN generate_series(1,Z) n WHERE id = 123;

 3. update manually the result in the table (copy paste).


 Does someone has something more straightforward???

 Thanks a lot!

 Best regards,

 Denis
 ___
 postgis-users mailing list
 postgis-users@lists.osgeo.org
 http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users

___
postgis-users mailing list
postgis-users@lists.osgeo.org
http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users

Re: [postgis-users] simplifying (homogenize) a polygon

2013-11-20 Thread Denis Rouzaud

Hello Rémi,

I was hoping a simplest request without enabling topology but thanks anyway!

Cheers,

Denis

On 20. 11. 13 18:26, Rémi Cura wrote:


From what I understand of your needs, Postigs topology was designed 
for this.

Cheers,

Rémi-C


2013/11/20 Denis Rouzaud denis.rouz...@gmail.com 
mailto:denis.rouz...@gmail.com


Hi all,

I am drawing some multipolygons in QGIS and sometimes, I have
parts of them which are adjacent and I'd like to homogenize them
to have less parts and no adjacent parts.

I could do this with a quite complex method:

1. get the number of parts Z:
SELECT ST_NumGeometries(geometry) FROMmytable WHERE id=123;

2. do the simplification using ST_CollectionHomogenize:
SELECT
ST_Multi(ST_CollectionHomogenize(ST_Union(ST_GeometryN(geometry,n
FROM mytable CROSS JOIN generate_series(1,Z) n WHERE id = 123;

3. update manually the result in the table (copy paste).


Does someone has something more straightforward???

Thanks a lot!

Best regards,

Denis
___
postgis-users mailing list
postgis-users@lists.osgeo.org mailto:postgis-users@lists.osgeo.org
http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users




___
postgis-users mailing list
postgis-users@lists.osgeo.org
http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users


___
postgis-users mailing list
postgis-users@lists.osgeo.org
http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users