[postgis-users] exterior rings in multipolygons

Mr. Puneet Kishor punk.kish at gmail.com
Tue Jul 26 13:16:09 PDT 2011


On Jul 26, 2011, at 9:56 AM, Sandro Santilli wrote:

> On Tue, Jul 26, 2011 at 09:47:23AM -0500, Mr. Puneet Kishor wrote:
>> 
>> On Jul 26, 2011, at 9:34 AM, Sandro Santilli wrote:
>> 
>>> On Tue, Jul 26, 2011 at 09:31:50AM -0500, Mr. Puneet Kishor wrote:
>>> 
>>>> 	ERROR:  function st_interiorringn(geometry) does not exist
>>> 
>>> Check your parens, the call above is missing a parameter (ring number).
>>> 
>> 
>> That is a bit embarrassing. Yes, I had missed out on giving the ring number. However, still no luck --
>> 
>> SELECT objectid, 
>> 	ST_NRings(the_geom) num_of_rings, 
>> 	ST_NumInteriorRings(the_geom) num_of_int_rings, 
>> 	ST_NumPoints(ST_ExteriorRing(ST_GeometryN(the_geom,1))) num_of_points_ext_ring,
>> 	ST_AsText(the_geom) wkt_feature, 
>> 	ST_AsText(ST_MakePolygon(ST_ExteriorRing(ST_GeometryN(the_geom, 1)))) wkt_ext_ring,
>> 	ST_AsText(ST_MakePolygon(ST_InteriorRingN(ST_GeometryN(the_geom, 2), 2))) wkt_int_ring_a,
>> 	ST_AsText(ST_MakePolygon(ST_GeometryN(the_geom, 2))) wkt_int_ring_b
>> FROM table 
>> WHERE objectid = 280;
>> 
>> objectid: 280;
>> num_of_rings: 4;
>> num_of_int_rings: 3;
>> num_of_points_ext_ring: 496;
>> wkt_feature: "MULTIPOLYGON(((<1>),(<2>),(<3>),(<4>))";
>> wkt_ext_ring: "POLYGON((<1>))";
>> wkt_int_ring_a: "";
>> wkt_int_ring_b: ""
>> 
>> As you see, I tried to get the interior ring "n" two different ways. Not getting anywhere.
> 
> Write down a matrix of all combinations you tried.
> Use real paper, and pencil.
> Publish a scanned version.
> 

So, as advised, I got a real pencil and paper, drew out all my options, scanned them in, and discovered that I had a poor understanding on the relationship of MULTIPOLYGONs and GEOMETRIES. Turns out, my MULTIPOLYGON has 1 GEOMETRY, 4 rings, one being exterior and three interior rings. Hence, an expression like the following works well

	ST_NumPoints(ST_InteriorRingN(ST_GeometryN(the_geom, 1), 2))
	
Now, here is where it gets interesting. My test feature in reality is a lot more complicated, as can be seen in the attached image (see the blue bordered multipoly). I took the shapefile and shp2pgsql-ed it, and now I get only 4 rings in my query. My guess is that these four rings are the ones on the top of the image. So, I thought maybe I have another GEOMETRY that I am missing out on. But, no... ST_NumGeometries(the_geom) = 1.

Can anyone theorize what happened to the rest of the feature? How did it get lost in translation? Was it simply ignored, or was it made into a different feature? Or, is it there, but I still haven't understood the MULTIPOLYGON/GEOMETRY/POLYGON/LINERSTRING nexus really well.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 280.png
Type: image/png
Size: 57981 bytes
Desc: not available
URL: <http://lists.osgeo.org/pipermail/postgis-users/attachments/20110726/5538dfe1/attachment.png>


More information about the postgis-users mailing list