[postgis-users] exterior rings in multipolygons

Ben Madin lists at remoteinformation.com.au
Tue Jul 26 17:53:41 PDT 2011


Maybe you could share the polygon - does it pass tests like st_isvalid()?

cheers

Ben


On 27/07/2011, at 4:16 AM, Mr. Puneet Kishor wrote:

> 
> 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.
> <280.png>_______________________________________________
> postgis-users mailing list
> postgis-users at postgis.refractions.net
> http://postgis.refractions.net/mailman/listinfo/postgis-users




More information about the postgis-users mailing list