I'm trying to remove inner polygons with postgis. I've created a routine, that resumes in:

From a polygon table, with a unique id:

  • Create a linestring table from polygon
  • Import to postgis
  • Get the length of each line

Now I have a table with, for example, 5 linestrings for each id, each linestring was a polygon, and I want to get ONLY the longest line from each ID.

enter image description here

For this, I have a select, but I don't know how to group the geometry, to get ONLY the longest line

select  id, geom as length from esp_lines group by id

I have to group it by another field, but I don't know which one.

The other solution I've found is:

select  id, max(geom) as length from esp_lines group by id

but max(geom) doesn't give me the expected result (the longest linestring)

Does anybody know if is there any function to get the longest linestring of a group?

  • 3
    there is no guarantee that the longest line would be the outer line – vinayan Jul 30 '14 at 8:43

You are looking for Exterior ring

SELECT gid, ST_ExteriorRing(the_geom) AS ering
FROM sometable;
  • ST_ExteriorRing(the_geom) works only on POLYGONs. We need a solution working on MULTIPOLYGONs... – Pierre Racine Dec 8 '20 at 17:46

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.