Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I am looking for a function that will return the intersection of 2 or more polygons (geography type).

I am aware of ST_UNION, ST_COLLECT but it works only for geometry type.

share|improve this question

You can cast to geometry and do the calculation. If your data goes over the poles or date-line that could be problematic. Also if you have long edges, in which the great-circle interpolation line differs from a simple cartesian interpolation. In those cases you might have to create your own aggregate function that re-projects to something reasonable before running the operation.

SELECT ST_Transform(
  ST_Union(ST_Transform(geog::geometry, 26910)),
FROM the_table
share|improve this answer

According to bostongis, there is no UNION that works on geography type. So you have to first cast geography to geometry:


Then apply ST_UNION and cast back.

share|improve this answer
Shouldn't data be projected first? Does other functions, like ST_Intersection, ST_Diffrence return correct results if data is geometry with srid WGS84. Perhaps it's good idea for separate question... – stachu Aug 3 '10 at 7:01
Well, it depends on the extends of your data. As Paul already mentioned, problems at the poles and date-line occur if you don't use an appropriate CRS. – underdark Aug 3 '10 at 20:03

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

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